?

UCTB:時空人群流動預測工具箱

2022-04-13 02:40陳李越王樂業
計算機與生活 2022年4期
關鍵詞:工具箱站點時空

陳李越,柴 迪,王樂業+

1.高可信軟件技術教育部重點實驗室(北京大學),北京100871

2.北京大學 信息科學技術學院 計算機科學技術系,北京100871

3.香港科技大學 計算機科學與工程系,香港999077

人群流動預測是城市計算中的關鍵問題,在城市資源調度、城市規劃與安全預警等場景有著諸多應用,人群流動預測技術對優化社會資源作用明顯,對社會穩定與繁榮的意義重大。與此同時,傳感器網絡、移動智能終端的普及和位置獲取技術的發展帶來了海量具有時間和地理信息的數據,例如車速、供需強度與人群流量數據等,這些具有時間和空間屬性的數據被稱為時空數據。大量豐富的時空數據為預測人群的流動提供了良好的數據基礎。

人群流動預測應用范圍廣泛,如預先調度空閑車輛至熱點需求區域、預測地鐵站峰值人流等。事實上,城市范圍內與人群的遷移、流動相關的應用問題都可以被稱為人群流動預測問題。人群流動預測問題因具有非線性、受多種因素影響等特點,難以實現精準的預測。

歷經多年的研究與發展,國內外學者在時空人群流動預測領域做了大量的努力。早期研究將人群流動預測問題作為經典的時間序列預測問題,如整合移動平均自回歸模型(autoregressive integrated moving average,ARIMA)和歷史均值法(historical mean,HM)。線性模型ARIMA 和HM 不能很好地建模人群流動的非線性特性。后來有許多非線性算法被運用在時空人群流動預測問題上,如馬爾可夫隨機場(Markov random field,MRF)、決策樹方法等。隨著深度學習技術的發展,深度學習技術被廣泛運用于交通流量的預測,循環神經網絡(recurrent neural network,RNN)及其變種,主要包括LSTM(long shortterm memory)與GRU(gated recurrent network),因其具有良好的捕獲序列信息的能力,被廣泛運用于交通預測中。然而上述模型通常只考慮了預測值與過去值在時間維度上的依賴性,并沒有很好地利用空間依賴。

空間跨度上的依賴也是人群流動的一大特性,例如相鄰的站點更可能具有相似的流量,具有相似功能的站點的流量模式相似等。卷積神經網絡(convolutional neural network,CNN)在人臉識別、目標檢測等領域大放異彩,已被證實能夠很好地提取歐式數據(例如圖像)的特征,學者們將城市劃分大小為×的圖像,然后使用CNN 捕獲空間依賴,CNN 可以通過殘差單元(residual unit)被堆疊得十分深,進而能夠捕獲長距離依賴。對于社交網絡等非歐式數據,CNN 無法直接使用,圖卷積神經網絡(graph convolutional network,GCN)應運而生,許多基于GCN 的時空模型被應用于交通流量預測。例如DCRNN(diffusion convolution recurrent neural network)將圖卷積視作雙向圖上的擴散過程,以捕獲交流流量的空間依賴。ST-MGCN(spatio-temporal multi-graph convolution network)將多種空間知識與循環神經網絡結合起來捕獲流量特征。隨著注意力機制的發展,越來越多的基于注意力機制的模型被提出,許多帶有自注意力(self-attention)與多端注意力機制(multi-head attention mechanism)的模型也被用于預測人群流動,例如Liang 等人利用多層次注意力機制捕獲傳感器網絡的時空依賴,Wang等人利用圖注意網絡捕獲流量的空間依賴,同時使用transformer模型捕獲長期時間依賴。

上述研究廣泛地探究了人群流動的時間和空間依賴(也被稱為時空先驗知識),這些知識能夠幫助模型更好地捕獲人群的流動模式,但時空知識種類繁多,全面地利用這些知識是一件十分困難的事情。另一方面,許多新穎的模型都被冠以“先進”的標簽,證實這一點最直接的方法就是與其他基準模型進行對比,但對這些模型進行復現是一件費時而困難的事情。雖然深度學習社區一直在倡導著開源,也有許多相關的源代碼被開源出來(https://github.com/lehaifeng/T-GCN,https://github.com/xiaochus/TrafficFlowPrediction),但這些代碼通常較為分散,只包含了一種或少許幾種模型,且不同作者在深度學習框架的選擇上與數據的組織上各不相同,因此,很難直接利用這些開源代碼在同一個環境下進行實驗。針對上述痛點,本文基于TensorFlow實現了一款面向時空人群流動預測應用的工具箱(urban computing tool box,UCTB),旨在為研究、從業人員提供如下便利:

(1)工具箱集成了時空人群流動領域常用的時空知識,提供了統一的數據處理接口以便利用不同類型的時空先驗知識。同時由于數據接口的統一,工具箱內集成的各類模型能夠直接進行比較。

(2)工具箱既集成了經典預測模型,也集成了先進的深度學習模型,以便快速復現各類模型,同時工具箱還提供了許多可復用的高級模型層,以加速用戶對新模型的開發。

(3)為了便于用戶快速上手,還編寫了詳細易懂的配套文檔,所有的模型與自定義模塊均有示例以供參考。UCTB 工具箱的網址是https://github.com/uctb/UCTB,配套文檔的網址是https://uctb.github.io/UCTB/。

1 框架設計

機器學習算法執行的一般流程是:讀取與預處理數據、構建模型、訓練以及評估模型。與這一基本思路相對應,UCTB 工具箱由數據處理、模型構建、模型訓練與評估三大模塊組成(見圖1)。

圖1 UCTB 整體框架Fig.1 Framework of UCTB

在數據處理模塊中,定義了一種可被運用于各類人群流動預測應用的通用數據集?;谕ㄓ脭祿?,利用時空先驗知識設計了時空特征提取接口;在模型構建模塊當中,對經典的人群流動預測模型進行了實現,同時解耦了一些可被復用的高級的模型層;在訓練與評估模塊,對UCTB 中的訓練與評估機制進行了介紹。

1.1 數據處理

UCTB 工具箱對原始數據的處理分為兩大階段完成:第一階段將不同的原始數據轉化為UCTB 通用數據集格式;第二階段基于時空先驗知識從通用數據集中提取不同類型的時空特征。

人群流動的原始數據來源于種類繁多的傳感器,例如地鐵站的閘機記錄了進出站數據,公路上的速度傳感器記錄了當前車流速度,來自于多種應用場景的數據處理過程無法統一。針對這一問題,本文設計了一種統一的數據集格式,作為原始數據和特征的“中間件”,用戶只需要先將不同數據處理成該格式,進而能夠利用UCTB 工具箱提取不同特征。UCTB 通用數據集是原始數據與特征的“中間件”,以鍵值對(key-value pair)的形式通過pickle 協議(https://docs.python.org/3/library/pickle.html)存儲,主要的鍵值對信息列于表1。

表1 UCTB 通用數據集格式Table 1 Datasets format in UCTB

特征提取是利用先驗知識將流量轉化為各種特征,使得預測模型能夠更好地捕獲人群流量的各種模式,這些專家知識主要包括時間知識和空間知識。時間知識從不同視角反映了未來的流量值與過去哪些時刻的流量值相關,按照不同的時間知識對數據按照不同時間間隔進行采樣便能提取出時間特征(見圖2)。

圖2 時序特征采樣示意圖Fig.2 Schematic diagram of generating temporal features by sampling time serials data

常用的時間知識主要有以下三類。

(1)鄰近時刻相似:相鄰時刻的流量一般而言不會發生太大的突變,也即過去若干個時刻的流量值與未來的預測值是相關的。

(2)日相似:未來的流量值通常與前幾天同一時刻的值相關,這對應了人類活動的日周期性。

(3)周相似:本周六的流量與本周五和上周六相比,流量會與后者更為相似,周相似與日相似只是時間間隔有區別。

人群流動還有著空間上的相關性,空間知識反映了預測站點和其他站點流量的關系。在基于深度學習的人群流量預測模型中,對不同類型的數據的空間特征提取技術不同。對于網格型數據,通常使用卷積技術提取空間依賴(如ST-ResNet);對于節點型數據,通?;谙闰炛R構建出不同的鄰接圖,使用圖卷積技術提取空間依賴。圖卷積技術主要分為頻域方法(如ChebNet)和空域方法(如DCRNN)。不同類型的鄰接圖反映了不同類型的空間知識,例如基于地理位置構建出距離圖,根據流量的相似程度構建出區域功能圖等。

除了時空特征,人群流動還受外部因素的影響,例如氣溫會影響共享單車的使用,暴雨和大風會減少出租車的需求。外部特征通常需要收集額外的氣候、節假日數據集得到,UCTB 通用數據集中的鍵值對被用于存儲外部特征。

在數據處理階段,UCTB 工具箱除了能夠提取數據集的時空特征之外,還會對數據進行歸一化(normalization)和劃分訓練集、驗證集與測試集等操作,便于后續接口的調用。UCTB 提供了對應的數據預處理接口,細節見2.1 節。

1.2 通用模型的設計

UCTB 工具箱需要集成許多經典的模型,主要包括統計學習模型和深度學習模型兩大類。統計學習模型和深度學習模型的構建與訓練過程存在區別,但為了便于用戶使用,UCTB 為不同的模型進行了封裝,并提供了相似的使用接口。例如在UCTB 集成的各模型內部均實現了訓練方法fit和預測方法predict。

值得注意的是,在實現深度學習模型時,一些訓練和預測以及模型的存儲接口是相似的,為了盡可能地復用代碼,UCTB 中設計了基礎模型類,該類集成了訓練、預測、斷點續訓等功能,具體的深度學習模型只需繼承這一基礎類,然后定義自己的模型結構并設置相應的特征輸入函數即可。

1.3 模型的訓練與評估

統計學習模型的訓練較為簡單,不多贅述。在訓練深度學習模型時,通常會將訓練數據分為若干個批次(batch),然后選取小批次(mini batch)數據用于更新梯度進行訓練,UCTB 工具箱也集成了這種機制。在訓練過程中,UCTB 還會根據驗證集誤差評估模型的收斂性以確定是否訓練完成,即UCTB 在模型訓練中融入了早停機制(early stopping)。

當模型訓練和預測完成后,還需要對測試結果進行相應的評估。評估是將真實值與預測值進行比較,在時空人群流動預測問題中,均方根誤差(root mean square error,RMSE)和平均絕對百分比誤差(mean absolute percentage error,MAPE)都是常用的評估函數,UCTB 也提供了相應的評估接口。

2 框架實現與接口參數

上述介紹了UCTB 數據處理、模型構建和訓練及預測三大模塊的基本功能,本章主要對UCTB 工具箱中的三大模塊的實現和相關接口進行介紹。

2.1 數據處理接口

UCTB 提供了對通用數據集的處理接口(表2)。其中GridTrafficLoader 和NodeTrafficLoader 接口根據輸入的數據集相關參數(如數據集名稱、數據合并參數、訓練集/測試集劃分比例和歸一化等)分別用于讀取網格型和節點型數據,然后根據時空先驗知識提取出不同的特征。ST_MoveSample 接口按照不同的時間間隔對流量數據進行采樣得到不同的時間特征。GraphGenerator 接口產生不同類型的空間圖得到不同類型的空間特征。

表2 UCTB 中的數據處理接口Table 2 Data processing interface in UCTB

與1.1.2 小節中提及的三種時間先驗相對應,ST_MoveSample 的采樣間隔主要有三種,分別代表了不同間隔時間特征的采樣數目。例如鄰近相似為6,日相似為7,周相似為4 表示將預測時刻的前6 個時刻,預測時刻最近7 天同時刻的和最近4 周的同時刻的流量共同作為時間特征。

GraphGenerator 接口接收圖名稱并根據相應的圖閾值生成圖的鄰接矩陣和拉普拉斯矩陣。例如距離圖的閾值參數可被設置為6 500 m,GraphGenerator會根據各站點的歐式距離生成鄰接矩陣,然后將距離小于閾值6 500 m 的站點在鄰接矩陣中置為1,大于閾值6 500 m 的站點置為0,也即大于閾值的站點沒有關聯,小于閾值的站點有關聯。閾值選取的好壞也決定了空間知識能否被很好地提取。根據實驗經驗,較好的閾值一般能使得每個節點平均與其他20%的節點有聯系。

2.2 模型接口

UCTB 工具箱提供了兩類模型接口:第一類是完整的模型,這類接口是對人群流動預測模型的復現;第二類接口是可復用的模型層,這一類接口是人群流動預測領域常使用到的高級模型層,用戶能夠利用可復用的模型層快速實現自定義的新模型。

UCTB內實現了很多經典模型,如ARIMA、HM、XGBoost(extreme gradient Boosting)、ST-ResNet、DCRNN、ST-MGCN和STMeta等(表3),這些模型均被封裝成了模型類,類內部實現了訓練函數fit和預測函數predict。表3 同時還列出了這些模型所考慮到的時空先驗知識。

表3 UCTB 中集成的模型Table 3 Implemented models in UCTB

在統計學習方法中,ARIMA 是被廣泛使用的時間序列預測模型,主要考慮了最近幾個時刻的流量值;歷史均值HM 使用過去若干時刻流量的平均值作為未來的預測值,歷史均值不僅僅考慮最近幾個時刻的流量值,最近幾天相同時刻和最近幾周相同時刻的流量值也會被考慮;GBRT(gradient boosted regression trees)利用過去的流量值作為特征,UCTB實現GBRT 時也利用了多種時間知識,例如鄰近時刻相似、日相似和周相似;XGBoost 與GBRT 相似,具有更高的執行效率。

在深度學習方法中,DCRNN是先進的深度圖模型之一。DCRNN 將擴散卷積和RNN 結合,用以同時捕獲時間和空間特征,原始DCRNN 模型只利用了鄰近時刻相似特征和空間距離圖;ST-MGCN 利用圖卷積技術去捕獲多種空間特征,同時將不同的時間特征連接到一個序列向量中以利用多種時間特征;STMeta 是一種可以整合時間和空間特征的預測框架,其利用時空建模單元同時捕獲不同類型的時空特征(常用的時空建模單元包括GCLSTM和DCGRU),然后利用時空聚合單元將不同類型的時空特征聚合起來(常用的時空聚合單元有圖注意層和特征連接),最終得到時空特征的隱表示。

UCTB 中實現的第二類高級模型層見表4,其中DCGRU 與GCLSTM 均為時空建模單元,其主體架構分別為GRU 和LSTM,內部將乘積更新操作替換成了圖卷積操作,時空建模單元能夠同時捕獲時間和空間特征。ChebNet基于圖拉普拉斯矩陣使用切比雪夫多項式進行圖卷積操作。圖注意層(graph attention layer,GAL)對圖中的節點使用注意力機制進行更新,常用于聚合多圖特征。

表4 UCTB 中的高級模型層Table 4 High-level layers in UCTB

2.3 訓練與評估接口

UCTB 集成的訓練與評估接口見表5。在訓練深度學習模型時,通常訓練數據較大,無法一次性讀入內存,UCTB會依次從全部數據中取mini-batch大小的數據用于更新梯度,并執行多輪(epoch)。MiniBatch-FeedDict接口具體實現了這一功能,該類通過不斷調用內部的get_batch 方法產生批數據用于訓練。

表5 UCTB 中的訓練與評估接口Table 5 Training and evaluating interface in UCTB

UCTB 中實現了兩種早停機制,分別是樸素方法和檢驗方法(t-test),樸素方法能夠容忍若干步沒有獲得更低的驗證集誤差;t-test 方法將最近的2輪的驗證集誤差等分為兩組獨立樣本,每組個,并執行獨立樣本的t-test 方法。原假設是這兩個樣本的均值是相同的,當假設檢驗的值小于閾值(通常是0.10或0.05),表示拒絕兩分布的均值相等的假設,也即模型還沒有達到收斂標準,反之則代表模型收斂,停止訓練。UCTB 中還集成了兩種人群流量預測中最為常見的評估函數,分別是RMSE 和MAPE。

3 案例研究

為了展示UCTB 工具箱的效果,收集了4 個場景8 個城市的真實數據集,利用UCTB 中集成的模型進行相應的實驗,所有的實驗代碼均已開源。原始記錄分別被處理成30 min與60 min粒度的數據集,目標是預測下一個時刻的流量。將這些數據集按照時間順序以8∶1∶1的比例劃分為訓練集、驗證集和測試集。

3.1 實驗數據

共享單車數據集來源于美國開放數據網站,包含了紐約(https://www.citibikenyc.com/system-data)、華盛頓特區和芝加哥3 個城市的數據。原始數據的時間范圍超過了4 年,每條有效數據都包含了開始站點、開始時間、停止站點、停止時間等信息。預測的值是每個站點下一個時刻共享單車的需求數量。

網約車數據集來自滴滴出行“蓋亞”數據開放計劃(https://outreach.didichuxing.com/app-vue/),包含了西安市和成都市兩個月的網約車記錄。每條網約車記錄都包含開始位置、開始時間、結束位置和結束時間等信息。由于開始和結束位置包含了經緯度,將整個城市劃分成了16×16 的網格,每個網格的大小都是0.5 km×0.5 km,預測目標是每個網格下一時刻的需求值。

地鐵數據集包含了上海市和重慶市的地鐵人群流量數據,時間跨度是3 個月,每個地鐵記錄都包含了進站時間、進站站名、出站時間和出站站名。同樣收集了各個地鐵站點的地理信息數據。預測目標是每個站點下一時刻的進站人數。

電動汽車充電站數據集是北京充電站的使用情況數據,原始數據來源于國內最大的充電樁公司之一。數據集的時間跨度是6 個月,有效的記錄數超過100 萬。預測目標是每個充電站點下一時刻充電樁的使用數量。

3.2 部分模型調用過程

分別展示統計學習模型ARIMA(過程1)和深度學習模型STMeta(過程2)的完整調用代碼。

ARIMA是經典的時間序列模型,其收斂較快,對于每個站點使用單獨的ARIMA 模型,值得注意的是,并不是所有站點的數據都具有平穩特性,對于不具有平穩性的站點,UCTB 會使用前一時刻的值作為預測值。

STMeta 是一種元框架模型,其利用了多種時空先驗知識,STMeta 會將時空知識兩兩組合,然后使用時空建模單元捕獲不同類型的時空依賴,接著利用時空聚合單元將不同類型的時空特征聚合起來,最后將聚合后的特征表示通過全連接層輸出預測目標。

ARIMA 模型的示例調用過程

其余模型運行代碼與ARIMA 或STMeta 的運行代碼相似。上述實例代碼的執行順序和結構與在第1 章框架設計階段所預設的“數據的讀取與處理、模型的定義、模型的訓練及評估”三大模塊相吻合。

STMeta模型的示例調用過程

3.3 實驗結果

圖3 中的4 幅子圖分別展示了3 種模型HM、XGBoost 和STMeta 在上海地鐵與西安網約車30 min和60 min 粒度數據集的預測結果。上海地鐵數據集中的12 號站點和西安網約車252 號站點均為數據集中流量最大的站點。圖3 中藍線代表了預測時刻的真實值(ground truth),橙線代表的HM 模型和真實值相差較大,綠色代表的STMeta 模型較HM 與XGBoost而言更為接近真實值。

圖3 HM、STMeta、XGBoost在不同數據集上的預測結果Fig.3 Prediction results of HM,STMeta,XGBoost on different datasets

還在其他數據集以及其他粒度進行了大量的實驗。從方法上來說,統計學習方法(ARIMA、HM、XGBoost、GBRT)在各數據集上的最佳準確率不優于深度學習方法(ST-ResNet、ST-MGCN 與STMeta 等)。這主要有兩大原因:一方面是因為深度學習模型對時空特征的建模能力較強,另一方面是因為深度學習方法通常融合了更多的特征知識,統計學習方法通常只考慮模型的時間特征,而深度學習方法通常會融合時空特征。

將圖3 中30 min 粒度與60 min 粒度的結果進行對比,不難發現時間粒度越小,深度學習方法相較于統計學習方法的優勢就越小。這是因為當時間粒度越小時,時間特征相較于空間特征就更為重要,因此僅考慮時間特征的統計學習系列方法與同時建模時空特征的深度學習系列方法的差距便越小。

以上展示了目前UCTB 中集成的模型的測試結果,基于這些結果,觀察出了一些有價值的結論。未來,相關的研究、從業人員能夠利用本文提出的工具箱,發掘出更多有關人群流動的規律,最終能快速地將新穎的想法轉化為實際的模型。

3.4 可視化接口

為了便于用戶深層次地了解數據集與實驗結果,設計了兩類可視化接口。第一類是數據集站點可視化接口,用于顯示各站點的空間位置,在數據接口NodeTrafficLoader 和GridTrafficLoader 中集成了這一功能,通過調用其中的st_map 方法展示,效果如圖4(a)。第二類是實驗結果可視化接口,主要用于展示不同模型實驗運行的結果,本文基于HTML(hypertext markup language)和JavaScript 實現了這一功能,效果如圖4(b)。目前可視化接口功能尚不完善,主要存在功能分散、交互體驗不夠友好等問題,未來將聚焦這些問題,進一步優化。

圖4 UCTB 中的可視化工具Fig.4 Visualization tools in UCTB

4 結束語

為加速相關研究、從業人員對時空人群流動預測領域時空先驗知識的利用,快速地進行復現或實現模型,基于TensorFlow 設計并實現了時空人群流動預測工具箱UCTB。該工具箱集成了大量時空人群流動預測領域的研究和多種經典模型,能夠被廣泛用于人群流動相關的場景。UCTB 相關代碼及文檔已完全開源,供研究、從業人員使用。同時,也期待著用戶們在使用后提出寶貴意見,將及時跟進,持續改進UCTB 工具箱。

猜你喜歡
工具箱站點時空
跨越時空的相遇
鏡中的時空穿梭
基于Web站點的SQL注入分析與防范
會“叫”的工具箱和工具
玩一次時空大“穿越”
積極開展遠程教育示范站點評比活動
機械加工機床工具箱的優化設計
怕被人認出
時空之門
先進站點應與落后站點開展結對幫扶
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合