本發(fā)明涉及一種基于網(wǎng)格搜索的支持向量機行程時間預測方法,屬于智能交通領域。該方法可以基于船舶自動識別系統(tǒng)(automaticidentificationsystem,ais)數(shù)據(jù),實現(xiàn)對內(nèi)河船舶行程時間的預測,為航務管理部門提供理論與技術支持。
背景技術:
內(nèi)河航運是我國重要的運輸方式之一,是綜合利用水資源和復雜運輸體系的重要參與成員,且連接著內(nèi)陸區(qū)域與沿海區(qū)域,為我國每年帶來巨大的經(jīng)濟利潤。但是,我國內(nèi)河航運依然存在有船舶航行安全、物流優(yōu)化管理、港口規(guī)劃調(diào)度等問題,直接影響內(nèi)河航運的發(fā)展。近幾年,內(nèi)河沿岸ais基站建設飛速,裝有ais的船舶數(shù)量快速增長,并且ais可以采集豐富的數(shù)據(jù)信息,進行多種應用。因此,可以對內(nèi)河ais數(shù)據(jù)運用數(shù)據(jù)挖掘理論方法進行挖掘及分析,實現(xiàn)船舶行程時間的精準預測,以提高航務管理部門的管理水平,促進內(nèi)河航運的迅猛發(fā)展。
行程時間預測算法在國內(nèi)外均有了較為深入的研究,但現(xiàn)今其主要針對于城市道路行程時間的預測。同時,在國內(nèi)外學者基于ais船舶交通數(shù)據(jù)進行的船舶行為研究中,已經(jīng)在解決船舶碰撞以及船舶交通量、船舶運動模式、船舶航行軌跡、船舶間時距、船舶到達時間的預測方面有了很好的方法。但是,針對內(nèi)河船舶行程時間預測方面還沒有較為深入的研究,這一問題亟待解決。
技術實現(xiàn)要素:
本發(fā)明的目的為克服上述技術問題,提出一種基于網(wǎng)格搜索的支持向量機行程時間預測方法。本發(fā)明從城市道路行程時間的預測方法切入,選擇適用于內(nèi)河船舶航行方式的支持向量機(supportvectormachine,svm)算法,不僅彌補了現(xiàn)有針對內(nèi)河船舶行程時間預測方面研究的不足,而且實現(xiàn)了實現(xiàn)上下行船舶劃分等數(shù)據(jù)預處理工作。該方法預測效果較為精確、穩(wěn)定,應用領域廣泛。
本發(fā)明是一種基于網(wǎng)格搜索的支持向量機行程時間預測方法,包括以下幾個步驟:
步驟一、基于ais數(shù)據(jù),依照缺失數(shù)據(jù)的排查、上下行船舶的劃分以及冗余數(shù)據(jù)的剔除三大步驟進行數(shù)據(jù)的預處理工作;
步驟二、構建基于歷史時段的內(nèi)河船舶行程時間預測模型,并根據(jù)模型得到訓練數(shù)據(jù)集;
步驟三、基于svm網(wǎng)格搜索法尋找預測模型的最優(yōu)參數(shù);
步驟四、基于最優(yōu)參數(shù),實現(xiàn)對內(nèi)河船舶行程時間的預測;
步驟五、預測結果評價。
本發(fā)明的優(yōu)點在于:
(1)本發(fā)明突出的優(yōu)點就是從城市道路行程時間的預測方法切入,通過svm算法自學習能力,捕獲過去時段行程時間及多種隨機影響因素與當前時段行程時間之間的復雜函數(shù)關系,實現(xiàn)基于ais數(shù)據(jù)的內(nèi)河船舶行程時間預測。
(2)本發(fā)明創(chuàng)造性地使用ais數(shù)據(jù),運用數(shù)據(jù)挖掘理論方法進行挖掘及分析,并實現(xiàn)了缺失數(shù)據(jù)的排查、上下行船舶的劃分以及冗余數(shù)據(jù)的剔除等數(shù)據(jù)預處理工作;
(3)基于svm網(wǎng)格搜索法尋找預測模型的最優(yōu)參數(shù),并在最優(yōu)參數(shù)下實現(xiàn)對內(nèi)河船舶行程時間的預測,預測精度大幅提高。
附圖說明
圖1為本發(fā)明的方法流程示意圖;
圖2為實施例中所研究區(qū)域示意圖;
圖3為實施例中上下行船舶航向示意圖;
圖4為實施例中網(wǎng)格搜索法搜索結果示意圖;
圖5為實施例中預測值散點示意圖;
圖6為實施例中預測值與真實值對比示意圖。
具體實施方式
下面將結合附圖和實施例對本發(fā)明作進一步的詳細說明。
本發(fā)明提出一種基于網(wǎng)格搜索的支持向量機行程時間預測方法,流程圖如圖1所示,包括如下步驟:
步驟一、ais數(shù)據(jù)預處理
1)、缺失數(shù)據(jù)的排查:采集到的ais數(shù)據(jù)主要包括mmsi號、歸檔時間、經(jīng)度、緯度、對地航速、對地航向、船舶類型等信息。在原始數(shù)據(jù)中,某一時刻的某一船舶可能存在有上述信息不完整的情況,對于此類不完整信息,應該予以排查及去除。
2)、上下行船舶的劃分:根據(jù)船舶對地航向角不同進行上下水的劃分,將原始ais數(shù)據(jù)分為上行船舶及下行船舶兩大部分。根據(jù)內(nèi)河船舶航行特點可知,在內(nèi)河上行駛的船舶,其航行速度會受到上下水不同的影響,下水船舶航行速度明顯高于上水船舶,會對行程時間產(chǎn)生影響,進而在建立的預測模型中會產(chǎn)生不同的參數(shù)。根據(jù)船舶航行對地航向角的不同,將原始數(shù)據(jù)導入地圖中,得到船舶上下行區(qū)分圖,從而對上行船舶和下行船舶進行劃分。
3)、冗余航段的剔除:在原始數(shù)據(jù)中,會出現(xiàn)例如船舶未行駛、經(jīng)緯度數(shù)據(jù)錯誤、船舶位于長江航道以外等錯誤數(shù)據(jù),除了剔除上述錯誤數(shù)據(jù)之外。有部分船舶位于支流航段,還有部分船舶為輪渡船,并未沿著內(nèi)河的上下行方向航行,因此,上述類似船舶也應在原始數(shù)據(jù)中剔除。
步驟二、構建基于歷史時段的內(nèi)河船舶行程時間預測模型
1)、預測模型的構建:本發(fā)明利用svm的自學習能力,自我學習各項因素之間的復雜函數(shù)關系。內(nèi)河船舶當前時段的行程時間與該時段的前幾個時段的行程時間有著一定的函數(shù)關系,即:
tk=f(tk-1,tk-2,...,tk-n)(1)
其中,tk代表在當前時段符合預測航段的各個船舶實際行程時間的平均值;tk-n代表預測時段k的前幾個時段符合預測航段的各個內(nèi)河船舶實際行程時間,n=1,2,…,n。
在預測航段內(nèi)選取定點a和定點b,a、b之間的航段l即為預測航段。其中,為保證每一組訓練數(shù)據(jù)的起點及終點位置基本相同,需要做如下限定,即假設所選取的起點a的坐標為(x,y),那么實際起點a’的坐標需要滿足一定的精度要求,即:|x-x'|≤ε,|y-y'|≤ε。同理,終點b也需要滿足以上精度要求。
2)、構建預測模型的訓練數(shù)據(jù)集:在基于歷史時段的預測模型中,因為越靠近當前時段的時段與預測時段的相關程度越大,因此訓練集中的每組數(shù)據(jù)要包含適當數(shù)量時段的船舶行程時間,又因為船舶航行速度是影響內(nèi)河船舶行程時間的又一個重要因素,因此要采用與內(nèi)河船舶行程時間密切相關的歷史時間序列及該時段各船舶航行的平均速度作為預測的特征值。首先將數(shù)據(jù)分為上行情景一和下行情景二兩種情況,然后第一維輸入向量為t1第二緯輸入向量為t2,第三維輸入向量為t3、第n維輸入向量為tn,平均速度向量為v,輸出向量為tn+1。之后,將構造的訓練數(shù)據(jù)導入svm程序中,svm通過歷史數(shù)據(jù)進行自我學習,找到輸入值與輸出值之間的復雜函數(shù)關系,即可實現(xiàn)對內(nèi)河船舶行程時間的預測。
3)、模型參數(shù)的確定:本發(fā)明所建立的內(nèi)河船舶行程時間預測模型選用高斯徑向基核函數(shù)
σ表示在libsvm軟件包中的參數(shù)gamma,反映了訓練數(shù)據(jù)集的分布或范圍特性,局部鄰域?qū)挾扔伤鼇頉Q定;
ε表示在libsvm軟件包中的參數(shù)epsilon控制著不敏感帶的寬度,并會影響著對支持向量的個數(shù)。ε的值較小時,回歸精度較高,支持向量數(shù)則較多,相反,ε的值較大時,回歸精度較低,但支持向量數(shù)會變少;
c表示在libsvm軟件包中的參數(shù)cost,同時也被稱為正則化參數(shù),它對達到誤差上限的樣本的懲罰程度進行控制,當取值增大時,樣本的懲罰隨之增大。
步驟三、基于svm網(wǎng)格搜索法尋找預測模型的最優(yōu)參數(shù)
對于徑向基核函數(shù)的參數(shù)c、σ、ε的選擇,本發(fā)明采用網(wǎng)格搜索中的k折交叉驗證法。k折交叉驗證是將訓練樣本平均分成k份,每次拿出k-1份作為訓練數(shù)據(jù),剩下的一份作為測試數(shù)據(jù),這樣重復做k次,獲得k次的平均交叉驗證準確率作為結果,進行k折交叉驗證之后會返回一個效率值,效率最大值所對應的cost和gamma參數(shù)就是徑向基核函數(shù)的最優(yōu)參數(shù)。在下一步使用svm函數(shù)的預測工作中,將上述參數(shù)的值定位尋優(yōu)獲得的最優(yōu)值,即可達到相對較好的預測小效果。具體步驟如下:
1)、設定搜索范圍:首先調(diào)用r統(tǒng)計軟件的e1071函數(shù)包,選擇所建立的訓練數(shù)據(jù)集,設定輸入及輸出數(shù)據(jù),并設定gamma參數(shù)cost參數(shù)的搜索范圍后進行搜索,同時設定set.seed(10)來保證每次對訓練集的劃分及選取一致。
2)、最優(yōu)值的判斷:當經(jīng)過搜索后所得到的gamma參數(shù)cost參數(shù)值為上下界的臨界值時,此時搜索值不一定是最優(yōu)值,需要重新設定搜索范圍,獲取新的參數(shù)值。
3)、獲取最優(yōu)值:經(jīng)過上述幾次搜索后,當搜索后得到的參數(shù)值介于上下界之間時,證明所設定的搜索范圍正確,此時搜索到的參數(shù)值即為最優(yōu)值。
步驟四、基于最優(yōu)參數(shù),實現(xiàn)對內(nèi)河船舶行程時間的預測
1)、svm模型的建立:編寫程序,在r中導入訓練數(shù)據(jù)集,并設定好輸入數(shù)據(jù)集合x,輸出數(shù)據(jù)集合y。在調(diào)用svm函數(shù)時,需要設定svm支持向量機核函數(shù)的類型,以及gamma和cost的最優(yōu)值
2)、訓練數(shù)據(jù)的測試:在本步驟中,需要對訓練數(shù)據(jù)進行測試,采用上述預測模型,對輸入集合x預測,得到預測值,并與真實值進行對比。
3)、各因子權重的確定:本步驟中通過attr()函數(shù)確定對象屬性,得出各因子權重。
步驟五、預測結果評價
1)、預測結果的可視化:在該步驟中,本發(fā)明以實際的觀測值為橫坐標,以所建立的svm模型產(chǎn)生的預測值作為縱坐標,繪制相關散點圖來進行對比。為了便于比較,同時本發(fā)明建立一組觀測值與預測值完全相同的情況,與上述散點圖進行對比,可以更加直觀的看出預測值的分布。
2)、評級指標計算:本發(fā)明選擇了以下四種誤差指標對其預測結果進行對比分析,其計算公式如下所示:
①平均絕對誤差(mad)為:
②平均相對誤差絕對值(mape)為:
③最大絕對誤差(mae)為:
mae=max|實際值-預測值|(4)
④最大相對誤差(mre)為:
實施例
一種基于網(wǎng)格搜索的支持向量機行程時間預測方法,以長江武漢段的ais數(shù)據(jù)為例,具體如下:
步驟一、在原始數(shù)據(jù)中,監(jiān)測航段范圍為武漢市三環(huán)線以內(nèi)部分,全長約22km,如圖2標注所示,監(jiān)測時間為2014年8月11日00:00:00到2014年8月19日13:59:59,共計監(jiān)測時長206個小時?;趕qlserver2008,經(jīng)排查后,共計產(chǎn)生167865條數(shù)據(jù)。
根據(jù)船舶航行對地航向角的不同,將上述原始數(shù)據(jù)導入,可得到如圖3所示的船舶上下行區(qū)分圖,其中紅色代表上行船舶的航行路線,藍色代表下行船舶的航行路線,將上述167865條數(shù)據(jù)劃分為上行船舶及下行船舶。
如圖3中編號為1、2的兩個黑色長方形框內(nèi)所示,其中黑色方框1表示長江支流航段,黑色方框3表示輪渡船舶。因此,上述兩類船舶也應在原始數(shù)據(jù)中剔除。本文對上述已分類的上下行船舶分別進行多于數(shù)據(jù)的剔除工作。在上行船舶中,需剔除如圖3中編號1及編號2中的兩部分紅色區(qū)域。依據(jù)百度地圖坐標拾取系統(tǒng)的坐標顯示,可以得出以下剔除數(shù)據(jù)的經(jīng)緯度范圍:黑色方框1為lon<114.2955°且lat≥30.5661°;同理,黑色方框2為lon≥114.2979°且lat<30.5715°,剔除兩組數(shù)據(jù)后,上行船舶數(shù)據(jù)共計86589條。在下行船舶中,需剔除如圖3中編號1中的藍色區(qū)域。同樣,依據(jù)百度地圖坐標拾取系統(tǒng)的坐標顯示值,剔除數(shù)據(jù)的經(jīng)緯度范圍黑色方框1為lon<114.2978°且lat≥30.5660°,剔除以上一組數(shù)據(jù)后,下行船舶數(shù)據(jù)共計57586條。
步驟二、本實施例將2小時作為一個監(jiān)測時段。監(jiān)測時間為2014年8月11日00:00:00到2014年8月19日13:59:59,共計監(jiān)測時長206個小時,因此可以劃分為103個時間段。同時,為了保證在每個時段內(nèi)都存在有船舶經(jīng)過航段l,因此航段l的起始坐標a、b兩點的確定至關重要。本文通過對各個時段的統(tǒng)一排查統(tǒng)計,最終確定監(jiān)測航段為武漢市白沙洲大橋到武漢市晴川閣小學一段,即a點緯度值為30.4905°±0.005°,b點的緯度值為30.5654°±0.005°。
在構造svm算法程序可以識別的訓練集時,本發(fā)明將行程時間統(tǒng)一換算為以秒為單位,若某一時間段內(nèi)有多條船舶符合a、b兩點的經(jīng)緯度取值范圍,此時需取這幾條船舶的平均值作為該時段的船舶行程時間。訓練數(shù)據(jù)集第一條數(shù)據(jù)是將時段1、2、3、4的行程時間作為輸入,時段5的行程時間作為輸出;第二條,將時段2、3、4、5的行程時間作為輸入,時段6的行程時間作為輸出;因此該訓練數(shù)據(jù)集共計99條數(shù)據(jù)。
步驟三、本文設定k值為10來進行交叉驗證,首先調(diào)用e1071函數(shù)包,選擇所建立的訓練數(shù)據(jù)集,設定輸入及輸出數(shù)據(jù),并對gamma參數(shù)的搜索范圍設定為2-5~2-1,cost參數(shù)的搜索范圍設定為2-2~22,搜索結果如圖4所示。
由運行結果可見gamma=0.0625和cost=0.5,搜索參數(shù)值均介于上臨界值與下臨界值之間。因此,此時達到了svm徑向基函數(shù)的最優(yōu)參數(shù)。即通過基于網(wǎng)格搜索法的svm參數(shù)優(yōu)化,最終確定最優(yōu)參數(shù)依次為c=0.5、ε=0.1、σ=0.0625。
步驟四、編寫程序,在r中導入訓練數(shù)據(jù)集,并設定好輸入數(shù)據(jù)集合x,輸出數(shù)據(jù)集合y。在調(diào)用svm函數(shù)時,需要設定svm支持向量機核函數(shù)的類型為徑向基核函數(shù)“radial”,gamma值為0.0625,cost值為0.5。從運行結果可知,svm函數(shù)的工作方向為eps-回歸,epsilon的值為0.1,支持向量個數(shù)為87。
步驟五、采用上述預測模型,對輸入集合x預測,得到預測值,并與真實值進行對比,以所建立的svm模型產(chǎn)生的預測值作為縱坐標進行對比,結果顯示如圖5所示。為了便于比較,同時本文建立一組觀測值與預測值完全相同的情況,如圖6所示。從結果可以看出,預測結果有較明顯的趨近觀測值的趨勢,且觀測值兩邊的散點分布均勻。由于訓練數(shù)據(jù)數(shù)據(jù)集只有99組,導致一些預測結果偏差較大,如果增大訓練數(shù)據(jù)至200組以上,結果將會有明顯改觀。
步驟五:分別計算平均絕對誤差(mad)、平均相對誤差絕對值(mape)、最大絕對誤差(mae)、最大相對誤差(mre),各個指標計算結果如表1所示,單位(秒)。
表1評價指標結果
以上詳細描述了本發(fā)明的優(yōu)選實施案例,但是本發(fā)明并不局限于上述實施案例的具體細節(jié),在本發(fā)明的整體結構范圍內(nèi),可以對本發(fā)明的部分步驟進行多種變換并重新組合,本發(fā)明對各種可能的組合方式不再列舉,這些變換組合均屬于本發(fā)明的保護范圍。