張靈,康晉滔,成衛(wèi)
(1. 昆明市公安局交通警察支隊科信處,云南 昆明 650000;2. 昆明理工大學(xué) 交通工程學(xué)院,云南 昆明 650504)
各大、中城市交管部門相繼引進智能交通系統(tǒng)(Intelligent Transportation Systems,簡稱為ITS)進行交通管理,積累了龐大的交通原始數(shù)據(jù)。這些交通數(shù)據(jù)在傳統(tǒng)交通領(lǐng)域和其他領(lǐng)域中,都存有極大的潛在價值[1?2]。因為數(shù)據(jù)采集、儲存質(zhì)量及精度普遍不高,其平均準(zhǔn)確率不足70%[3]。所以交通原始數(shù)據(jù)的預(yù)處理是一項不可或缺的工作。而針對原始數(shù)據(jù)的異常判定和標(biāo)準(zhǔn)修正是核心工作。最早學(xué)者們針對交通數(shù)據(jù)的異常處理是基于數(shù)理統(tǒng)計學(xué)原理。通過研究交通數(shù)據(jù)時間和空間的相關(guān)性,結(jié)合相應(yīng)的公式、模型判定異常值。Jacobson[4]等人通過研究交通參數(shù)的閾值規(guī)律,建立了相關(guān)模型,得出了運用閾值來判定參數(shù)異常的方法。Zhong[5?7]等人通過改進算法,利用插值和回歸方法,修正了異常的數(shù)據(jù)點。Min[8]等人通過交通數(shù)據(jù)在時間和空間維度相關(guān)性高的特點,使用鄰接數(shù)據(jù)和歷史數(shù)據(jù)等,修正異常值。部分學(xué)者對交通數(shù)據(jù)預(yù)處理進行了探索。姜桂艷[9?10]等人針對動態(tài)交通數(shù)據(jù),建立了一套異常評價標(biāo)準(zhǔn)和數(shù)據(jù)預(yù)處理流程。然而這類統(tǒng)計模型,難以應(yīng)對呈幾何倍數(shù)增長的交通數(shù)據(jù)。
互聯(lián)網(wǎng)技術(shù)快速發(fā)展,人工智能算法和深度神經(jīng)網(wǎng)絡(luò)開始運用于交通領(lǐng)域。許多學(xué)者運用數(shù)據(jù)挖掘的方法,處理交通數(shù)據(jù)。楊帆[11]等人利用雙向LSTM 網(wǎng)絡(luò)對船舶自動識別數(shù)據(jù)進行學(xué)習(xí),實現(xiàn)對船舶異常行為進行檢測。Sun[12]等基于最鄰近算法(K-Nearest Neighbor, 簡稱為KNN),引入時間窗概念,拓寬數(shù)據(jù)集規(guī)模,利用R 語言,在平臺上搭建了基于窗口的最鄰近算法。Kim[13]等人對傳統(tǒng)遞歸神經(jīng)網(wǎng)絡(luò)進行了優(yōu)化,采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, 簡稱為CNN)和長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,簡稱為LSTM)。結(jié)合的C-LSTM (Convdutional LSTM 簡稱為C-LSTM)模型,對大量歷史交通數(shù)據(jù)進行了訓(xùn)練,建立了不同場景下的模型參數(shù),檢測對應(yīng)的數(shù)據(jù)異常值。王祥雪[14]等人對交通數(shù)據(jù)時、空特性進行了識別和強化,完成短時交通流預(yù)測模型的搭建。尹 康[15]提出了交通領(lǐng)域的關(guān)聯(lián)時間序列預(yù)測模型,在空氣質(zhì)量數(shù)據(jù)集和交通數(shù)據(jù)集上,驗證了雙通道LSTM 法的通用性和有效性。王亞萍[16]等人建立了分層貝葉斯網(wǎng)絡(luò)下的路網(wǎng)密度估測模型。因此,作者針對斷面交通數(shù)據(jù)的特征,擬運用LSTM模型進行異常數(shù)據(jù)的篩選及修正工作,提出了一種滑動工作窗口和標(biāo)簽值對比的方法,優(yōu)化數(shù)據(jù)篩選和修正流程。
由于經(jīng)典交通流理論存在3 個參數(shù)(交通流量、行車速度及車流密度)。因此,對于同一斷面的相同時刻,也存在3 個維度的特征向量。因設(shè)備采集數(shù)據(jù)的限制,所以本研究斷面的原始數(shù)據(jù)為流量和速度特征向量。當(dāng)不同的特征組合時,因為特征本身不同的表達方式和量綱,絕對數(shù)值大的數(shù)據(jù)會覆蓋小數(shù)據(jù)。所以要求對數(shù)據(jù)進行模型訓(xùn)練之前,先對抽取的特征向量進行歸一化處理,以保證每個特征向量在訓(xùn)練模型時,被平等對待。
為了數(shù)據(jù)集標(biāo)準(zhǔn)化,采用零-均值規(guī)范化(z-score 標(biāo)準(zhǔn)化)。經(jīng)過標(biāo)準(zhǔn)化的數(shù)據(jù)均值為0,標(biāo)準(zhǔn)差為1。其標(biāo)準(zhǔn)化處理式為:
式中:μ為原始數(shù)據(jù)的均值;σ為原始數(shù)據(jù)的標(biāo)準(zhǔn)差;x′為標(biāo)準(zhǔn)化處理之后的數(shù)據(jù)集;x為原始數(shù)據(jù)集。
原始數(shù)據(jù)經(jīng)過標(biāo)準(zhǔn)化處理后,運用LSTM 神經(jīng)模型開始訓(xùn)練數(shù)據(jù)。LSTM 實質(zhì)上是一種特殊的遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, 簡稱為RNN)。為了解決RNN 網(wǎng)絡(luò)在處理長時間序列時,產(chǎn)生的梯度消失,LSTM 應(yīng)運而生。LSTM 網(wǎng)絡(luò)的核心組成包括5 個部分。
1) 激活函數(shù)Tanh和Sigmoid
激活函數(shù)Tanh用于幫助調(diào)節(jié)流經(jīng)網(wǎng)絡(luò)的值,確保數(shù)值保持在(?1,1),從而控制神經(jīng)網(wǎng)絡(luò)的輸出值在合理的邊界內(nèi)部。Tanh函數(shù)式為:
激活函數(shù)Sigmoid與Tanh函數(shù)基本一致,不同的是Sigmoid把數(shù)據(jù)值控制在0 到1 之間。該函數(shù)特點:用于更新或忘記數(shù)據(jù)流攜帶的信息。Sigmoid函數(shù)式為:
2) 遺忘門,可以決定數(shù)據(jù)信息的去留。其表達式為:
式中:ft、Wf、bf分別為遺忘門的輸出向量、權(quán)值、偏置;ht?1為前一個隱藏狀態(tài)的數(shù)據(jù)信息;xt為當(dāng)前輸入的數(shù)據(jù)信息。
3) 輸入門,可以更新細胞狀態(tài)。其表達式為:
式中:it、Wi、bi分別為輸入門的輸出向量、權(quán)值、偏置;Wc、bc為當(dāng)前輸入狀態(tài)的權(quán)值、偏置。
4) 細胞狀態(tài),表示當(dāng)前細胞儲存的數(shù)據(jù)信息。其表達式為:
式中:Ct、Ct?1分別為當(dāng)前細胞狀態(tài)與前一個細胞狀態(tài)。
5) 輸出門,可以計算下一個隱藏狀態(tài)的值,隱藏狀態(tài)包含了以前輸入的數(shù)據(jù)信息。其表達式為:
式中:ht、Wo、bo分別為輸出門的輸出向量(即當(dāng)前細胞的輸出)、權(quán)值、偏置。
通過在RNN 簡單的細胞結(jié)構(gòu)中,引入門結(jié)構(gòu)產(chǎn)生了LSTM 網(wǎng)絡(luò)。LSTM 的基本結(jié)構(gòu)如圖1 所示。S 代表Sigmoid激活函數(shù);T 代表Tanh激活函數(shù)。
圖1 LSTM 基本單元結(jié)構(gòu)Fig. 1 Basic unit structure diagram of the LSTM
LSTM 網(wǎng)絡(luò)對于時間序列的數(shù)據(jù),具有優(yōu)良的回歸處理效果,常被用于自然語言序列處理等領(lǐng)域。由于斷面交通數(shù)據(jù)是典型相關(guān)性大的時序數(shù)據(jù)。因此,采用LSTM,進行交通數(shù)據(jù)的擬合,有充足的前提依據(jù)。
LSTM 網(wǎng)絡(luò)可通過多種計算機語言編程實現(xiàn),而基于Python 開發(fā)的Tensorflow 框架,為該神經(jīng)網(wǎng)絡(luò)的搭建和訓(xùn)練提供了極大的便利。利用Tensorflow,封裝的大量神經(jīng)網(wǎng)絡(luò)功能和函數(shù),完成幾個代碼塊,即可通過LSTM 模型構(gòu)建。在Jupyternotebook 平臺上,使用其6 個部分,構(gòu)建了本模型。
1) 導(dǎo)入模型搭建所需函數(shù)庫及定義常量
先導(dǎo)入Pandas、Numpy 2 種數(shù)據(jù)處理庫和Tensorflow 工具庫。同時,為了便于模型可視化,導(dǎo)入Matplotlib 繪圖工具庫。再定義隱層神經(jīng)元個數(shù)hidden-unit、隱層層數(shù)lstm-layers、輸入向量維度input-size、輸出向量維度output-size 及學(xué)習(xí)率lr 5 個常量。
2) 導(dǎo)入原始數(shù)據(jù)
在進行神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,將原始數(shù)據(jù)按一定比例分為訓(xùn)練集、驗證集及測試集。訓(xùn)練集數(shù)據(jù)用于模型的訓(xùn)練(對測試集中的異常值,進行檢測,并修正),驗證集用于模型的性能檢測,測試集用于模型的功能使用。
3) 定義神經(jīng)網(wǎng)絡(luò)變量
神經(jīng)網(wǎng)絡(luò)變量主要包括輸入層和輸出層的權(quán)重、偏置及 Dropout 參數(shù)。權(quán)重變量采用tf.random-normal 函數(shù),隨機向服從指定正態(tài)分布的數(shù)值中取出指定個數(shù)的值。偏置變量采用tf.constant函數(shù),從指定常量值中,取出特定形狀的向量。Dropout 參數(shù)可以有效減少過擬合現(xiàn)象,使模型泛化性更強。在每個訓(xùn)練批次中,通過隨機使部分隱層節(jié)點值為0,從而減少隱層節(jié)點間的相互作用,減少所訓(xùn)練模型對局部特征的依賴。
4) 搭建神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
采用tf.nn.rnn-cell.BasicLSTMCell 函數(shù),創(chuàng)建LSTM 基本單元結(jié)構(gòu)。采用tf.nn.rnn-cell. Multi RNNCell 函數(shù),搭建多層LSTM 隱層結(jié)構(gòu)。采用tf.nn.dynamic-rnn 函數(shù),使LSTM 細胞單元結(jié)構(gòu)連接成網(wǎng)絡(luò)。同時,為了滿足神經(jīng)網(wǎng)絡(luò)對輸入變量的形狀要求。需要將輸入向量先轉(zhuǎn)成二維進行計算。再將計算結(jié)果作為隱藏層的輸入。然后將隱藏層輸入結(jié)果,轉(zhuǎn)成三維,作為LSTM 細胞單元的輸入。最后將細胞單元運算結(jié)果轉(zhuǎn)成二維,作為神經(jīng)網(wǎng)絡(luò)的輸出值。
5) 訓(xùn)練模型
在Tensorflow 框架中,基本操作由會話窗口的建立、數(shù)據(jù)導(dǎo)入字典與傳入占位符2 部分組成。在模型的訓(xùn)練過程中,由損失函數(shù)和優(yōu)化器2 部分完成。損失函數(shù)使用均方誤差法進行計算,優(yōu)化器選用Adam 自適應(yīng)學(xué)習(xí)率梯度下降優(yōu)化器。在迭代過程中,通過對損失率的觀察,判斷神經(jīng)網(wǎng)絡(luò)的性能。并不斷地調(diào)節(jié)相應(yīng)參數(shù),使模型損失最小,最終達到收斂。
6) 模型使用及可視化
采用訓(xùn)練完成的LSTM 模型,對測試集數(shù)據(jù)進行預(yù)測擬合,并計算相應(yīng)的偏差程度。然后使用Matplotlib 繪圖工具,對模型計算結(jié)果進行可視化。同時,為了便于對模型內(nèi)部的數(shù)據(jù)流圖有更清晰的認識,利用Tensorflow 中的Tensorboard 工具,對整個模型結(jié)構(gòu)進行可視化。
在神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練中,通常的做法:把2/3~4/5 的樣本數(shù)據(jù)用于訓(xùn)練,余下的樣本用于測試。但是為了保障模型的準(zhǔn)確性,以4:1 的數(shù)據(jù)劃分訓(xùn)練集和測試集。由于模型是對時序數(shù)據(jù)進行異常檢測,參與訓(xùn)練的數(shù)據(jù)需要無異常點的標(biāo)準(zhǔn)樣本。因此,將訓(xùn)練集稱為標(biāo)準(zhǔn)樣本集,測試集稱為異常檢測集。算法步驟為:
1) 建立算法工作窗口W
交通檢測設(shè)備每天采集的流量Q和速度V為二維向量,即X=(Q,V),可以得到一維標(biāo)簽,密度特征K=Q/V。用X表示每天的原始數(shù)據(jù)集,則X1,X2,…,Xn分別為第一天、第二天、…、第n天的數(shù)據(jù)。若第t天的數(shù)據(jù)存在異常點,則獲取該天數(shù)據(jù)為檢測集Xt,那么算法工作窗口可表示為:W=
2) LSTM 模型訓(xùn)練及運用
先選取工作窗口W中的標(biāo)準(zhǔn)樣本集,導(dǎo)入已經(jīng)搭建好的LSTM 網(wǎng)絡(luò)中,通過迭代運算,得到算法所需的模型參數(shù)。其次,用模型參數(shù)對第t天的數(shù)據(jù)進行預(yù)測擬合,得到備選數(shù)據(jù)集tX′。由于LSTM 為監(jiān)督學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò),采用密度特征向量K作為標(biāo)簽值,再次訓(xùn)練LSTM 模型,并運用,得到校驗標(biāo)簽值tK′。
為了對斷面交通數(shù)據(jù)進行有效質(zhì)量控制,采用基于LSTM 模型的檢測修正算法,建立完整的質(zhì)量控制流程。算法流程分為LSTM 模型與數(shù)據(jù)處理2部分,如圖2 所示。
選取2018 年5 月份昆汕高速公路K2077 斷面采集數(shù)據(jù)進行實例驗證。其中,初始標(biāo)準(zhǔn)樣本集為5 月1 日?4 日該斷面的流量和速度數(shù)據(jù)集,5 月5日的對應(yīng)數(shù)據(jù)集則為異常檢測集。同時計算出所需標(biāo)簽值,部分檢測集數(shù)據(jù)見表1。
圖2 基于LSTM 的交通數(shù)據(jù)質(zhì)量控制流程Fig. 2 Quality control of traffic data based on the LSTM
表1 5 月5 日昆汕高速K2077 斷面部分檢測集數(shù)據(jù)Table1 Partial test set data of section K2077 of Kunming-Shantou expressway on May 5
將標(biāo)準(zhǔn)樣本集導(dǎo)入搭建完成的LSTM模型中訓(xùn)練,并不斷優(yōu)化、調(diào)節(jié)超參數(shù)。最終各超參數(shù)取值為:隱層神經(jīng)元個數(shù)hidden_unit=10;隱層層數(shù)lstm_layers=2;學(xué)習(xí)率lr=0.0006;輸入向量維度input_size=2;輸出向量維度output_size=1;batchsize=60;time_step=20。模型訓(xùn)練迭代過程中,損失函數(shù)會隨著訓(xùn)練次數(shù)的增加而不斷降低。直到訓(xùn)練次數(shù)達到一定時,即使繼續(xù)訓(xùn)練,也無法使損失函數(shù)明顯降低,此時的訓(xùn)練次數(shù)可作為合適的迭代次數(shù)參數(shù)。
在本次實驗中,當(dāng)?shù)螖?shù)達到50 次時,基本完成收斂。訓(xùn)練模型完成后,調(diào)出模型相關(guān)參數(shù),運用模型,得出備選數(shù)據(jù)集和校驗標(biāo)簽值。
運用LSTM 模型,計算出校驗標(biāo)簽值與異常檢測集的標(biāo)簽值。采用修正算法進行計算,得到最終的校驗集。通過對昆汕高速公路K2077 斷面校驗集的異常判定,篩選出5 月5 日異常檢測集的異常點,對應(yīng)i分別為:1,13,32,41,59,61,81,83,141。為驗證所提出的異常檢測算法的實用性,滑動工作窗口,繼續(xù)對5 月6 日?8 日數(shù)據(jù)進行檢測,從而檢測出每個檢測數(shù)據(jù)集中的異常點。為了量化基于LSTM 模型標(biāo)簽值的異常檢測算法的檢測準(zhǔn)確率,計算出5日?8 日檢測率分別為 81.82%,83.33%,91.67%,84.62%;誤檢率分別為11.11%,10%,9.09%, 9.09%。計算結(jié)果表明:模型檢測率均值超過85%,而誤檢率均值不足10%。由于實驗采用的標(biāo)準(zhǔn)樣本集僅為前4 天的數(shù)據(jù),訓(xùn)練樣本數(shù)只有576 個。因此,當(dāng)數(shù)據(jù)庫的標(biāo)準(zhǔn)樣本足夠多時,會提高該模型準(zhǔn)確率。
針對5 月5 日檢測篩選出的異常點,對基于LSTM 模型的備選數(shù)據(jù)集進行修正替換。更新前后的數(shù)據(jù)集如圖3 所示。從圖3 可以看出,異常點位分布較為均勻,基于LSTM 模型的檢測算法泛化性能良好,異常檢測效果突出。同時,為了對修正結(jié)果有更清晰地認識,使用相對誤差指標(biāo),對5 月5 日檢測集的9 個修正值進行量化分析,求出對應(yīng)時刻索引1, 13, 32, 41, 59, 61, 81, 83, 141 的相對誤差,分別為12.68%, 10.26%, 8.51%, 16.21%, 8.69%, 7.16%,15.03%, 7.11%, 10.02%,得到整個修正算法的平均相對誤差為10.7%。各個異常點之前的相對誤差波動范圍均在4.55%以內(nèi)。表明:基于LSTM 模型的修正算法性能穩(wěn)定,整體修正效果良好。
基于LSTM 模型修正法,計算得到5 月5 日異常檢測集中的異常點位及修正值。將標(biāo)準(zhǔn)樣本進行更新后,異常值與修正值對比結(jié)果見表2。
在檢測集異常點的修正過程中,如果出現(xiàn)某一特征向量修正結(jié)果與異常值相同的情況,這是因為LSTM 模型將二維特征向量數(shù)據(jù)集導(dǎo)入訓(xùn)練時,一維特征的變化程度遠大于另一維特征的。所以在數(shù)據(jù)修正時,會優(yōu)先考慮修正變化大的特征向量。在本算例分析中,由于所取斷面為高速公路數(shù)據(jù),速度特征變化極小。因此,會有修正,其結(jié)果見表2。
圖3 基于LSTM 模型的數(shù)據(jù)修正Fig. 3 Data correction graph based on LSTM model
為了橫向比較基于LSTM模型數(shù)據(jù)異常處理算法的有效性,選取基于短集合的移動平均修正和基于時間相關(guān)的歷史數(shù)據(jù)修正2 種方法作為對比論證。每種方法修正的數(shù)據(jù)分別與對應(yīng)窗口數(shù)據(jù)集的平均值作相對誤差(Relative Error,簡稱為RE)及均方根誤差(Root Mean Squared Error,簡稱為RMSE)計算。3 種方法對異常點的修正誤差分析見表3。
表2 異常數(shù)據(jù)修正對比Table 2 Comparison of abnormal data correction
從表3 可以看出:①歷史數(shù)據(jù)修正方法實用性較差。雖然交通數(shù)據(jù)具備時間相關(guān)性的特點,但因采集時間間隔較短,數(shù)據(jù)波動較大。所以基于歷史數(shù)據(jù)的修正方法,會出現(xiàn)較大的誤差。②雖然基于鄰接數(shù)據(jù)移動平均的修正方法優(yōu)于歷史數(shù)據(jù)修正。但是,這種方法對于數(shù)據(jù)集的內(nèi)部規(guī)律,挖掘不夠深入,算法性能不穩(wěn)定,修正數(shù)據(jù)時,會出現(xiàn)較大的波動。③基于LSTM 模型,修正算法深入挖掘了數(shù)據(jù)信息,算法誤差小,且具備很強的魯棒性。在大數(shù)據(jù)背景下,可以對龐大的交通原始數(shù)據(jù)進行異常處理。
表3 3 種方法誤差對比Table 3 Error comparison of three methods
原始數(shù)據(jù)中異常數(shù)據(jù)的檢測與修正是預(yù)處理過程中的核心環(huán)節(jié)。本研究提出了基于LSTM 模型的數(shù)據(jù)異常處理算法,得到的結(jié)論為:
1) LSTM 模型對交通時序數(shù)據(jù)訓(xùn)練結(jié)果,表現(xiàn)優(yōu)異,可快速處理大量原始數(shù)據(jù)。
2) 檢測修正算法從整體上優(yōu)化了數(shù)據(jù)質(zhì)量,彌補了傳統(tǒng)算法的局限性。
3) 工作窗口的建立,精簡了算法流程,提升了數(shù)據(jù)修正的精度。由于深度學(xué)習(xí)的要求,需要質(zhì)量高的大量歷史數(shù)據(jù)作為樣本訓(xùn)練,因此,有待進一步研究。