郭根材
(中國鐵道科學研究院集團有限公司 電子計算技術(shù)研究所,北京 100081)
人口流動性是經(jīng)濟社會發(fā)展的一個重要指標,人口以流動方式追求經(jīng)濟社會目標而形成的較長時間的自由遷徙和異地生活狀況。由于升學、工作等原因,我國居民身份證號中包含的居住地信息與居民實際的常住地有較大差異。掌握旅客常住地信息有助于根據(jù)居住地人均收入推斷旅客的消費水平,為個性化產(chǎn)品推薦提供基礎。
目前,獲取常住地信息的方法主要有常住人口、戶籍登記、人口普查、大數(shù)據(jù)分析等。文獻[1]以年度人口變動調(diào)查為基礎,通過調(diào)查指標之間的關(guān)系、人口變動自身特征與抽查的情況,分析我國各地區(qū)常住人口的推算方法;文獻[2]以第六次上海市流動人口普查數(shù)據(jù)為對象,通過分析變量離散趨勢、空間分布等探討了上海流動人口的分布特征;文獻[3]描述和分析了區(qū)域人口遷移流動的實際狀況,構(gòu)建了常住-戶籍人口缺口指標來觀察我國分地區(qū)人口遷移流動態(tài)勢;文獻[4]結(jié)合人口普查數(shù)據(jù)與GIS數(shù)據(jù),系統(tǒng)分析了武漢城市圈常住人口空間分布特征;文獻[5]提出分布式存儲與計算,大數(shù)據(jù)技術(shù)成為數(shù)據(jù)分析重要手段,文獻[6]基于移動通信運營商的即時通話記錄數(shù)據(jù)所表征的用戶行為對人口的流動性進行判斷和測度,這些研究為常住地識別提供了較好的基礎。
本文參考上述研究結(jié)果,分析了利用鐵路出行數(shù)據(jù)推斷旅客常住地的主要影響因素,結(jié)合大數(shù)據(jù)技術(shù)設計了基于邏輯判斷的旅客常住地智能識別算法,并進行了案例驗證。
根據(jù)聯(lián)合國經(jīng)濟和社會事務部統(tǒng)計司在《人口和住房普查原則與建議》中的建議,常住地可按照以下標準界定:(1)在最近12個月的大部分時間一直居住的地方,不包括因度假或工作引起的短暫出行;(2)至少在最近12個月一直居住的地方,不包括因度假或工作引起的短暫出行[1]。
旅客出行一般是從常住地出發(fā)經(jīng)過一個或多個目的地后返回常住地,完成一次出行。對于普通旅客,旅客在目的地的停留時間要遠小于在常住地停留的時間。鐵路出行數(shù)據(jù)可以描述旅客乘坐火車的出行軌跡,通過分析旅客的出行記軌跡、在目的地的停留時間,利用邏輯判斷、概率計算等方法可以判斷旅客每次出行的起點,從而可以利用旅客一年以上的出行數(shù)據(jù)推斷旅客的常住地。
利用鐵路旅客出行數(shù)據(jù)推斷常住地信息,受出行數(shù)據(jù)質(zhì)量影響,主要有:
(1)出行次數(shù)過少。部分旅客在統(tǒng)計周期內(nèi)的出行次數(shù)過少,不能形成有效的出行回路,無法在出行起點與出行終點之間確定常住地,這些旅客的常住地不能通過鐵路出行數(shù)據(jù)進行識別。
(2)行程不連續(xù)。綜合交通背景下,旅客可組合多種交通方式完成出行,導致鐵路出行數(shù)據(jù)在整個行程上是不連續(xù)的,該類型旅客需要結(jié)合其他交通方式的出行數(shù)據(jù)進行判斷。
(3)多出行起點。鐵路出行數(shù)據(jù)可能構(gòu)成多個出行回路,旅客出行時可能存在多個不同的出行起點,該情況下可選取比重最大的出行起點作為常住地。
(4)目的地最大停留時間。根據(jù)不同的出行目的,旅客在目的地的停留時間一般會有一個時間上限,當旅客在目的地的停留時間過長時旅客可能存在多個常住地,該情況有效無法識別旅客常住地。
根據(jù)鐵路出行數(shù)據(jù)識別旅客常住地的影響因素,通過統(tǒng)計判斷、概率計算推斷鐵路旅客常住地,設計了基于鐵路旅客出行數(shù)據(jù)的常住地智能識別算法。為描述算法,給出了行程、差旅、差旅集合的定義。
(1)行程是指旅客從一個城市到達另一個城市的出行信息,包括出發(fā)城市、到達城市、出發(fā)時間和到達時間。
(2)差旅是指旅客從常住地出發(fā)通過乘坐多趟列車到達目的地,最后返回常住地的行程集合,由多個行程構(gòu)成。
(3)差旅集合是指旅客在指定時間段內(nèi)的差旅集合,差旅出發(fā)城市是影響常住地判斷的重要因素。
單名旅客的常住地智能識別算法流程如下:
(1)選取某一旅客在指定時間內(nèi)的行程數(shù)據(jù),并按照旅客的出行時間排序,構(gòu)建行程集合;初始化識別參數(shù),設置行程判斷序號i=0;
(2)設置i=i+1,從旅客的第i個行程進行深度搜索;如果i<行程集合數(shù)量,執(zhí)行下一步,否則執(zhí)行(7);
(3)設置深度搜索序號j=i;
(4)選取行程j和行程j+1,判斷行程j的到達城市與行程j+1的出發(fā)城市是否相同,如果相同,執(zhí)行下一步,否則i=j執(zhí)行(2);
(5)判斷行程j到達與行程j+1出發(fā)的間隔時間是否小于最大停留時間,如果是,執(zhí)行下一步,否則設置i=j并執(zhí)行(2);
(6)判斷行程i的出發(fā)城市與行程j+1的到達城市是否相同,如果相同,根據(jù)i至j+1的所有行程構(gòu)成一個差旅,并添加在差旅集合中,設置i=j+1并執(zhí)行(2);如果不同,設置j=j+1并執(zhí)行(4);
(7)統(tǒng)計差旅集合的差旅個數(shù),如果差旅集合的差旅數(shù)量為0,旅客常住地為未知,否則執(zhí)行下一步;
(8)統(tǒng)計差旅集合的差旅出發(fā)城市及次數(shù),選取次數(shù)最大的出發(fā)城市為常住地。
鐵路作為大眾化交通工具,服務旅客數(shù)量龐大,傳統(tǒng)的單個服務器程序很難在短時間內(nèi)推算所有旅客的常住地。本文利用Scala語言在鐵路客運大數(shù)據(jù)平臺上實現(xiàn)常住地識別算法。鐵路客運大數(shù)據(jù)平臺分為外部系統(tǒng)層、數(shù)據(jù)層、存儲層、分析層、展示訪問層和應用層[7],可實現(xiàn)鐵路旅客群體分析應用[8]。該平臺由1個控制節(jié)點、2個管理節(jié)點、19個數(shù)據(jù)節(jié)點組成,SPARK版本為1.6。利用鐵路旅客出行記錄推斷旅客常住地,2017年旅客出行記錄條數(shù)為30.46億,旅客數(shù)量約4.45億人。
算法參數(shù)目的地旅客最大停留時長為30天,基于SPARK的旅客常住地識別核心偽代碼,如圖1所示。
圖1 旅客常住地識別算法偽代碼
在鐵路客運大數(shù)據(jù)平臺提交作業(yè),平臺將計算作業(yè)劃分為3個任務、5個階段的運算過程,SPARK作業(yè)流程圖,如圖2所示。SPARK運算通過一系列彈性分布式數(shù)據(jù)集(RDD,Resilient Distributed Datasets)的轉(zhuǎn)換,實現(xiàn)分布式讀取數(shù)據(jù)、數(shù)據(jù)重新分區(qū)、常住地識別、結(jié)果轉(zhuǎn)換等計算流程,最終將計算結(jié)果寫入鐵路客運大數(shù)據(jù)平臺的分布式數(shù)據(jù)倉庫HIVE中。圖2中黃色部分為常住地核心算法,實現(xiàn)分布式推算旅客常住地。
在運算過程中通過對數(shù)據(jù)的重新分區(qū)與分組降低了作業(yè)的內(nèi)存使用規(guī)模與執(zhí)行單元數(shù)量。通過SPARK運算,推算出我國鐵路近兩年服務旅客的常住地信息,識別率為67.7%。
圖2 推算旅客常住地SPARK作業(yè)流程圖
本文設計了基于鐵路出行數(shù)據(jù)推算旅客常住地的識別算法,該算法可以推算出鐵路旅客的常住地信息,識別率為67.7%,為常住地的獲取提供了一種新思路。受旅客出行次數(shù)、行程是否連續(xù)等因素影響,算法的識別率可結(jié)合其他交通方式的出行數(shù)據(jù)進一步提高,并利用計算結(jié)果進行常住人口分析與預測[9-10]。