張靈,康晉滔,成衛
(1. 昆明市公安局交通警察支隊科信處,云南 昆明 650000;2. 昆明理工大學 交通工程學院,云南 昆明 650504)
各大、中城市交管部門相繼引進智能交通系統(Intelligent Transportation Systems,簡稱為ITS)進行交通管理,積累了龐大的交通原始數據。這些交通數據在傳統交通領域和其他領域中,都存有極大的潛在價值[1?2]。因為數據采集、儲存質量及精度普遍不高,其平均準確率不足70%[3]。所以交通原始數據的預處理是一項不可或缺的工作。而針對原始數據的異常判定和標準修正是核心工作。最早學者們針對交通數據的異常處理是基于數理統計學原理。通過研究交通數據時間和空間的相關性,結合相應的公式、模型判定異常值。Jacobson[4]等人通過研究交通參數的閾值規律,建立了相關模型,得出了運用閾值來判定參數異常的方法。Zhong[5?7]等人通過改進算法,利用插值和回歸方法,修正了異常的數據點。Min[8]等人通過交通數據在時間和空間維度相關性高的特點,使用鄰接數據和歷史數據等,修正異常值。部分學者對交通數據預處理進行了探索。姜桂艷[9?10]等人針對動態交通數據,建立了一套異常評價標準和數據預處理流程。然而這類統計模型,難以應對呈幾何倍數增長的交通數據。
互聯網技術快速發展,人工智能算法和深度神經網絡開始運用于交通領域。許多學者運用數據挖掘的方法,處理交通數據。楊帆[11]等人利用雙向LSTM 網絡對船舶自動識別數據進行學習,實現對船舶異常行為進行檢測。Sun[12]等基于最鄰近算法(K-Nearest Neighbor, 簡稱為KNN),引入時間窗概念,拓寬數據集規模,利用R 語言,在平臺上搭建了基于窗口的最鄰近算法。Kim[13]等人對傳統遞歸神經網絡進行了優化,采用卷積神經網絡(Convolutional Neural Networks, 簡稱為CNN)和長短期記憶網絡(Long Short-Term Memory,簡稱為LSTM)。結合的C-LSTM (Convdutional LSTM 簡稱為C-LSTM)模型,對大量歷史交通數據進行了訓練,建立了不同場景下的模型參數,檢測對應的數據異常值。王祥雪[14]等人對交通數據時、空特性進行了識別和強化,完成短時交通流預測模型的搭建。尹 康[15]提出了交通領域的關聯時間序列預測模型,在空氣質量數據集和交通數據集上,驗證了雙通道LSTM 法的通用性和有效性。王亞萍[16]等人建立了分層貝葉斯網絡下的路網密度估測模型。因此,作者針對斷面交通數據的特征,擬運用LSTM模型進行異常數據的篩選及修正工作,提出了一種滑動工作窗口和標簽值對比的方法,優化數據篩選和修正流程。
由于經典交通流理論存在3 個參數(交通流量、行車速度及車流密度)。因此,對于同一斷面的相同時刻,也存在3 個維度的特征向量。因設備采集數據的限制,所以本研究斷面的原始數據為流量和速度特征向量。當不同的特征組合時,因為特征本身不同的表達方式和量綱,絕對數值大的數據會覆蓋小數據。所以要求對數據進行模型訓練之前,先對抽取的特征向量進行歸一化處理,以保證每個特征向量在訓練模型時,被平等對待。
為了數據集標準化,采用零-均值規范化(z-score 標準化)。經過標準化的數據均值為0,標準差為1。其標準化處理式為:

式中:μ為原始數據的均值;σ為原始數據的標準差;x′為標準化處理之后的數據集;x為原始數據集。
原始數據經過標準化處理后,運用LSTM 神經模型開始訓練數據。LSTM 實質上是一種特殊的遞歸神經網絡(Recurrent Neural Network, 簡稱為RNN)。為了解決RNN 網絡在處理長時間序列時,產生的梯度消失,LSTM 應運而生。LSTM 網絡的核心組成包括5 個部分。
1) 激活函數Tanh和Sigmoid
激活函數Tanh用于幫助調節流經網絡的值,確保數值保持在(?1,1),從而控制神經網絡的輸出值在合理的邊界內部。Tanh函數式為:

激活函數Sigmoid與Tanh函數基本一致,不同的是Sigmoid把數據值控制在0 到1 之間。該函數特點:用于更新或忘記數據流攜帶的信息。Sigmoid函數式為:

2) 遺忘門,可以決定數據信息的去留。其表達式為:

式中:ft、Wf、bf分別為遺忘門的輸出向量、權值、偏置;ht?1為前一個隱藏狀態的數據信息;xt為當前輸入的數據信息。
3) 輸入門,可以更新細胞狀態。其表達式為:

式中:it、Wi、bi分別為輸入門的輸出向量、權值、偏置;Wc、bc為當前輸入狀態的權值、偏置。
4) 細胞狀態,表示當前細胞儲存的數據信息。其表達式為:

式中:Ct、Ct?1分別為當前細胞狀態與前一個細胞狀態。
5) 輸出門,可以計算下一個隱藏狀態的值,隱藏狀態包含了以前輸入的數據信息。其表達式為:

式中:ht、Wo、bo分別為輸出門的輸出向量(即當前細胞的輸出)、權值、偏置。
通過在RNN 簡單的細胞結構中,引入門結構產生了LSTM 網絡。LSTM 的基本結構如圖1 所示。S 代表Sigmoid激活函數;T 代表Tanh激活函數。

圖1 LSTM 基本單元結構Fig. 1 Basic unit structure diagram of the LSTM
LSTM 網絡對于時間序列的數據,具有優良的回歸處理效果,常被用于自然語言序列處理等領域。由于斷面交通數據是典型相關性大的時序數據。因此,采用LSTM,進行交通數據的擬合,有充足的前提依據。
LSTM 網絡可通過多種計算機語言編程實現,而基于Python 開發的Tensorflow 框架,為該神經網絡的搭建和訓練提供了極大的便利。利用Tensorflow,封裝的大量神經網絡功能和函數,完成幾個代碼塊,即可通過LSTM 模型構建。在Jupyternotebook 平臺上,使用其6 個部分,構建了本模型。
1) 導入模型搭建所需函數庫及定義常量
先導入Pandas、Numpy 2 種數據處理庫和Tensorflow 工具庫。同時,為了便于模型可視化,導入Matplotlib 繪圖工具庫。再定義隱層神經元個數hidden-unit、隱層層數lstm-layers、輸入向量維度input-size、輸出向量維度output-size 及學習率lr 5 個常量。
2) 導入原始數據
在進行神經網絡訓練過程中,將原始數據按一定比例分為訓練集、驗證集及測試集。訓練集數據用于模型的訓練(對測試集中的異常值,進行檢測,并修正),驗證集用于模型的性能檢測,測試集用于模型的功能使用。
3) 定義神經網絡變量
神經網絡變量主要包括輸入層和輸出層的權重、偏置及 Dropout 參數。權重變量采用tf.random-normal 函數,隨機向服從指定正態分布的數值中取出指定個數的值。偏置變量采用tf.constant函數,從指定常量值中,取出特定形狀的向量。Dropout 參數可以有效減少過擬合現象,使模型泛化性更強。在每個訓練批次中,通過隨機使部分隱層節點值為0,從而減少隱層節點間的相互作用,減少所訓練模型對局部特征的依賴。
4) 搭建神經網絡結構
采用tf.nn.rnn-cell.BasicLSTMCell 函數,創建LSTM 基本單元結構。采用tf.nn.rnn-cell. Multi RNNCell 函數,搭建多層LSTM 隱層結構。采用tf.nn.dynamic-rnn 函數,使LSTM 細胞單元結構連接成網絡。同時,為了滿足神經網絡對輸入變量的形狀要求。需要將輸入向量先轉成二維進行計算。再將計算結果作為隱藏層的輸入。然后將隱藏層輸入結果,轉成三維,作為LSTM 細胞單元的輸入。最后將細胞單元運算結果轉成二維,作為神經網絡的輸出值。
5) 訓練模型
在Tensorflow 框架中,基本操作由會話窗口的建立、數據導入字典與傳入占位符2 部分組成。在模型的訓練過程中,由損失函數和優化器2 部分完成。損失函數使用均方誤差法進行計算,優化器選用Adam 自適應學習率梯度下降優化器。在迭代過程中,通過對損失率的觀察,判斷神經網絡的性能。并不斷地調節相應參數,使模型損失最小,最終達到收斂。
6) 模型使用及可視化
采用訓練完成的LSTM 模型,對測試集數據進行預測擬合,并計算相應的偏差程度。然后使用Matplotlib 繪圖工具,對模型計算結果進行可視化。同時,為了便于對模型內部的數據流圖有更清晰的認識,利用Tensorflow 中的Tensorboard 工具,對整個模型結構進行可視化。
在神經網絡的模型訓練中,通常的做法:把2/3~4/5 的樣本數據用于訓練,余下的樣本用于測試。但是為了保障模型的準確性,以4:1 的數據劃分訓練集和測試集。由于模型是對時序數據進行異常檢測,參與訓練的數據需要無異常點的標準樣本。因此,將訓練集稱為標準樣本集,測試集稱為異常檢測集。算法步驟為:
1) 建立算法工作窗口W
交通檢測設備每天采集的流量Q和速度V為二維向量,即X=(Q,V),可以得到一維標簽,密度特征K=Q/V。用X表示每天的原始數據集,則X1,X2,…,Xn分別為第一天、第二天、…、第n天的數據。若第t天的數據存在異常點,則獲取該天數據為檢測集Xt,那么算法工作窗口可表示為:W=
2) LSTM 模型訓練及運用
先選取工作窗口W中的標準樣本集,導入已經搭建好的LSTM 網絡中,通過迭代運算,得到算法所需的模型參數。其次,用模型參數對第t天的數據進行預測擬合,得到備選數據集tX′。由于LSTM 為監督學習深度神經網絡,采用密度特征向量K作為標簽值,再次訓練LSTM 模型,并運用,得到校驗標簽值tK′。

為了對斷面交通數據進行有效質量控制,采用基于LSTM 模型的檢測修正算法,建立完整的質量控制流程。算法流程分為LSTM 模型與數據處理2部分,如圖2 所示。
選取2018 年5 月份昆汕高速公路K2077 斷面采集數據進行實例驗證。其中,初始標準樣本集為5 月1 日?4 日該斷面的流量和速度數據集,5 月5日的對應數據集則為異常檢測集。同時計算出所需標簽值,部分檢測集數據見表1。

圖2 基于LSTM 的交通數據質量控制流程Fig. 2 Quality control of traffic data based on the LSTM

表1 5 月5 日昆汕高速K2077 斷面部分檢測集數據Table1 Partial test set data of section K2077 of Kunming-Shantou expressway on May 5
將標準樣本集導入搭建完成的LSTM模型中訓練,并不斷優化、調節超參數。最終各超參數取值為:隱層神經元個數hidden_unit=10;隱層層數lstm_layers=2;學習率lr=0.0006;輸入向量維度input_size=2;輸出向量維度output_size=1;batchsize=60;time_step=20。模型訓練迭代過程中,損失函數會隨著訓練次數的增加而不斷降低。直到訓練次數達到一定時,即使繼續訓練,也無法使損失函數明顯降低,此時的訓練次數可作為合適的迭代次數參數。
在本次實驗中,當迭代次數達到50 次時,基本完成收斂。訓練模型完成后,調出模型相關參數,運用模型,得出備選數據集和校驗標簽值。
運用LSTM 模型,計算出校驗標簽值與異常檢測集的標簽值。采用修正算法進行計算,得到最終的校驗集。通過對昆汕高速公路K2077 斷面校驗集的異常判定,篩選出5 月5 日異常檢測集的異常點,對應i分別為:1,13,32,41,59,61,81,83,141。為驗證所提出的異常檢測算法的實用性,滑動工作窗口,繼續對5 月6 日?8 日數據進行檢測,從而檢測出每個檢測數據集中的異常點。為了量化基于LSTM 模型標簽值的異常檢測算法的檢測準確率,計算出5日?8 日檢測率分別為 81.82%,83.33%,91.67%,84.62%;誤檢率分別為11.11%,10%,9.09%, 9.09%。計算結果表明:模型檢測率均值超過85%,而誤檢率均值不足10%。由于實驗采用的標準樣本集僅為前4 天的數據,訓練樣本數只有576 個。因此,當數據庫的標準樣本足夠多時,會提高該模型準確率。
針對5 月5 日檢測篩選出的異常點,對基于LSTM 模型的備選數據集進行修正替換。更新前后的數據集如圖3 所示。從圖3 可以看出,異常點位分布較為均勻,基于LSTM 模型的檢測算法泛化性能良好,異常檢測效果突出。同時,為了對修正結果有更清晰地認識,使用相對誤差指標,對5 月5 日檢測集的9 個修正值進行量化分析,求出對應時刻索引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%以內。表明:基于LSTM 模型的修正算法性能穩定,整體修正效果良好。
基于LSTM 模型修正法,計算得到5 月5 日異常檢測集中的異常點位及修正值。將標準樣本進行更新后,異常值與修正值對比結果見表2。
在檢測集異常點的修正過程中,如果出現某一特征向量修正結果與異常值相同的情況,這是因為LSTM 模型將二維特征向量數據集導入訓練時,一維特征的變化程度遠大于另一維特征的。所以在數據修正時,會優先考慮修正變化大的特征向量。在本算例分析中,由于所取斷面為高速公路數據,速度特征變化極小。因此,會有修正,其結果見表2。

圖3 基于LSTM 模型的數據修正Fig. 3 Data correction graph based on LSTM model
為了橫向比較基于LSTM模型數據異常處理算法的有效性,選取基于短集合的移動平均修正和基于時間相關的歷史數據修正2 種方法作為對比論證。每種方法修正的數據分別與對應窗口數據集的平均值作相對誤差(Relative Error,簡稱為RE)及均方根誤差(Root Mean Squared Error,簡稱為RMSE)計算。3 種方法對異常點的修正誤差分析見表3。

表2 異常數據修正對比Table 2 Comparison of abnormal data correction
從表3 可以看出:①歷史數據修正方法實用性較差。雖然交通數據具備時間相關性的特點,但因采集時間間隔較短,數據波動較大。所以基于歷史數據的修正方法,會出現較大的誤差。②雖然基于鄰接數據移動平均的修正方法優于歷史數據修正。但是,這種方法對于數據集的內部規律,挖掘不夠深入,算法性能不穩定,修正數據時,會出現較大的波動。③基于LSTM 模型,修正算法深入挖掘了數據信息,算法誤差小,且具備很強的魯棒性。在大數據背景下,可以對龐大的交通原始數據進行異常處理。

表3 3 種方法誤差對比Table 3 Error comparison of three methods
原始數據中異常數據的檢測與修正是預處理過程中的核心環節。本研究提出了基于LSTM 模型的數據異常處理算法,得到的結論為:
1) LSTM 模型對交通時序數據訓練結果,表現優異,可快速處理大量原始數據。
2) 檢測修正算法從整體上優化了數據質量,彌補了傳統算法的局限性。
3) 工作窗口的建立,精簡了算法流程,提升了數據修正的精度。由于深度學習的要求,需要質量高的大量歷史數據作為樣本訓練,因此,有待進一步研究。