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