戴海發(fā),卞鴻巍,馬 恒,王榮穎
(海軍工程大學(xué)電氣工程學(xué)院, 武漢 430033)
綜導(dǎo)系統(tǒng)是艦艇收集各導(dǎo)航傳感器數(shù)據(jù)、進(jìn)行集中處理并分發(fā)到各個用戶的重要部件。艦載導(dǎo)航傳感器的種類和數(shù)量較多,再加上海洋和電磁環(huán)境復(fù)雜多變,因此導(dǎo)航傳感器的實際測量數(shù)據(jù)總是存在一些異常的值,這些異常測量值一般稱為野值。如果不對這些野值進(jìn)行處理,直接輸入到綜導(dǎo)系統(tǒng)的信息集成模塊進(jìn)行融合,就會影響信息融合的結(jié)果,甚至使融合結(jié)果完全不可信。因此,在信息融合之前對野值進(jìn)行檢測和處理具有相當(dāng)重要的必要性。
在實際工程上,處理野值的方法主要有兩種思路:一是利用外部傳感器的輔助進(jìn)行野值的檢測。主要的方法有基于差值的3σ準(zhǔn)則法、基于卡爾曼濾波器的χ2檢驗法[1-4]、基于小波分析的方法[5-6]等,其中3σ準(zhǔn)則法需要基準(zhǔn)數(shù)據(jù),而χ2檢驗法依賴準(zhǔn)確的系統(tǒng)噪聲和測量噪聲矩陣,基于小波分析的方法對漸變故障的檢測效果不理想。上述方法最大的問題是都依賴穩(wěn)定無野值的參考系統(tǒng),如果參考系統(tǒng)也有可能產(chǎn)生野值,那么在檢測到野值時,將無法判斷具體是哪個系統(tǒng)發(fā)生了信息故障。
另一種思路是只利用傳感器自身的歷史測量值自主地判斷野值。工程上比較常用的是差分技術(shù)、時間多項式外推法、ARMA模型預(yù)測法[7]、Lagrange插值法[8]等。差分技術(shù)利用前后時刻的值作差分,通過判斷差分值是否合理來判斷測量值是否為野值,該方法只對粗大的野值點有效。ARMA模型預(yù)測法通過歷史數(shù)據(jù)訓(xùn)練ARMA模型用于預(yù)測當(dāng)前測量值,但是要求測量數(shù)據(jù)滿足平穩(wěn)性條件。Lagrange插值法利用歷史數(shù)據(jù)通過插值公式預(yù)測當(dāng)前測量值,對于野值離散的野值點效果較好,但是對于野值連續(xù)的情況則效果不理想,有可能出現(xiàn)嚴(yán)重的失真現(xiàn)象。文獻(xiàn)[9-10]提出了基于模糊系統(tǒng)的遙感數(shù)據(jù)野值檢測方法,但是模糊規(guī)則的確定需要一定的技巧,限制了它的使用范圍。
因此,本文提出了一種基于支持向量回歸(Support Vector Regression, SVR)的導(dǎo)航傳感器野值剔除方法。與Lagrange插值法相比,SVR可以自動地學(xué)習(xí)艦船的運動趨勢,連續(xù)受野值點的影響較小,而且能夠在沒有其他傳感器輔助的條件下完成野值檢測。該方法的思路是利用在線訓(xùn)練好的模型預(yù)測當(dāng)前的導(dǎo)航參數(shù),如果測量值偏離預(yù)測值(殘差)且超過一定限度,則認(rèn)為測量值是異常值,并用預(yù)測值代替測量值;如果連續(xù)檢測出異常值超過長T,則認(rèn)為系統(tǒng)發(fā)生故障,除非故障被清除,否則不再使用該設(shè)備的信息。此外,傳統(tǒng)的閾值一般是靠經(jīng)驗設(shè)定,而本文利用了歷史殘差數(shù)據(jù)計算出殘差的統(tǒng)計量,然后利用3σ準(zhǔn)則構(gòu)建閾值。
本文首先介紹了SVR及算法的基本原理,然后推導(dǎo)了基于SVR的野值剔除方法,并通過實際海試數(shù)據(jù)驗證了本文所提方法的有效性。
利用支持向量機(jī)作回歸分析的原理是通過非線性映射x→Φ(x),將多維非線性關(guān)系樣本組x投影到高維特征空間G中變成線性關(guān)系,然后在這個高維特征空間中進(jìn)行線性回歸。給定n個數(shù)據(jù)樣本{xi,yi},i=1,2,…,n,其中,xi為實際觀測值,yi為期望值。采用式(1)來估計SVR的回歸函數(shù)f[11]
y=f(x)=(ω,Φ(x))+b,
Φ∶Rn→G,ω∈G
(1)
式中,b為偏置量;ω為高維特征空間G中的矢量;Rn為n維實數(shù)空間。
如圖1所示,SVR回歸的目標(biāo)是找到一個超平面使得到超平面最遠(yuǎn)的樣本點距離最小,因此得到優(yōu)化目標(biāo)函數(shù)為
(2)
滿足以下條件
(3)
上述優(yōu)化模型可以看成一個二次規(guī)劃問題,利用 Lagrange對偶形式,并引入核函數(shù)表達(dá)式,則式(2)可轉(zhuǎn)化為
(4)
圖1 SVR示意圖Fig.1 Support vector regression diagram
其約束條件為
(5)
(6)
上述過程需滿足KKT(Karush-Kuhn-Tucker)條件[12],即
(7)
由式(7)可以看出,對任意一個樣本(xi,yi)都有(C-αi)ξi=0,且αi(f(xi)-yi-ε-ξi)=0。于是,在得到αi后,若0<αi (8) 導(dǎo)航設(shè)備的當(dāng)前導(dǎo)航參數(shù)與過去的導(dǎo)航參數(shù)具有相關(guān)性,理論上可以找到某個函數(shù)來表達(dá)這種關(guān)系,但是這種函數(shù)往往是高度非線性的,關(guān)于模型的階次缺少先驗知識,而且相關(guān)的自變量一般是多維的,傳統(tǒng)的回歸方法很難解決這類問題。此外,對于樣本(x,y),傳統(tǒng)回歸模型通常直接基于模型輸出f(x)與真實輸出y之間的差別來計算損失,當(dāng)且僅當(dāng)f(x)與y完全相同時,損失才為零;與此不同,SVR假設(shè)能容忍f(x)與y之間最多有ε的偏差,即僅當(dāng)f(x)與y之間的差值絕對值大于ε時才計算損失。正是由于這一特點,使得SVR避免了過擬合的問題[13]。因此,本文采用了SVR的方法來建立這樣的函數(shù)關(guān)系。 對于導(dǎo)航傳感器的輸出時間序列{x1,x2,…,xt} ,如果根據(jù)xt的歷史數(shù)據(jù)預(yù)測當(dāng)前時刻的數(shù)據(jù)xt+1,則可以建立映射f∶Rm→R,滿足[14] (9) 式中,m為預(yù)測函數(shù)中使用的歷史數(shù)據(jù)的個數(shù),即模型的階次。 為了利用第1節(jié)的SVR算法來訓(xùn)練預(yù)測函數(shù),需要采用窗口大小為N的滑動窗技術(shù),并對k時刻存儲的歷史窗數(shù)據(jù)序列{xk-N,xk-N+1,…,xk-1}進(jìn)行重構(gòu),將數(shù)據(jù)序列轉(zhuǎn)化為矩陣形式,作為SVR的學(xué)習(xí)樣本。構(gòu)造的學(xué)習(xí)樣本(X,Y)為 (10) 對SVR進(jìn)行訓(xùn)練的回歸函數(shù)為 (11) 其中,Xi表示矩陣X的第i行,Yt表示矩陣Y的第t行。本文選取的核函數(shù)為高斯徑向基核函數(shù),其表達(dá)式為 (12) 通過對樣本的學(xué)習(xí)可以得到SVR的模型,從而得到當(dāng)前時刻的預(yù)測值為 (13) 式中,Xk=[xk-m,xk-m+1,…,xk-1]。 計算預(yù)測值與實際測量值之間的差值 (14) 野值判定原則為 (15) (16) 進(jìn)而確定閾值為 T=3σδx (17) 通常對于野值的處理都是直接剔除,然而這樣會導(dǎo)致信息的缺失,不利于后續(xù)的信息融合。因此,本文選擇重構(gòu)的思路,具體的重構(gòu)方法為當(dāng)檢測出測量值為野值時,利用SVR的預(yù)測結(jié)果代替測量值。 為了驗證本文所提出算法的有效性,選取船舶的實測數(shù)據(jù)做實驗,并與Lagrange插值法進(jìn)行對比。實測數(shù)據(jù)是在某次航海試驗中采集得到的數(shù)據(jù),船上搭載的導(dǎo)航設(shè)備有慣導(dǎo)、衛(wèi)導(dǎo)、電磁計程儀和天文導(dǎo)航系統(tǒng)等。海試的航行軌跡如圖2所示。高斯徑向基核函數(shù)的寬度參數(shù)取為σ=4;損失函數(shù)ε=0.01;滑動窗寬N=20;模型階數(shù)m=5。本文所使用的算法是在開源代碼庫LibSVM的基礎(chǔ)上進(jìn)行修改實現(xiàn)的,使用的仿真平臺為MATLAB。 圖2 海試航行軌跡Fig.2 Sea trial sailing track 以電磁計程儀的速度信息為例(圖3),原始測量數(shù)據(jù)中含有較多的野值點。取其中長度均為1000個樣本的2段數(shù)據(jù)進(jìn)行分析,其中一段只含有少量離散的野值點,另一段含有幾處連續(xù)的野值點,分別利用Lagrange插值和SVR的方法對數(shù)據(jù)進(jìn)行野值處理。 圖3 電磁計程儀原始數(shù)據(jù)Fig.3 Electromagnetic log raw data 1)場景1 在場景1中,樣本中的速度測量值含有少量離散的點,且速度保持在基本平穩(wěn)的狀態(tài)下,Lagrange插值法的插值點數(shù)設(shè)為n=2,得到的結(jié)果如圖4所示。 圖4 場景1不同野值處理方法結(jié)果對比Fig.4 Comparison of different outliers processing methods in scenario 1 從圖4中可以看出,在該場景中Lagrange插值法和SVR算法都能夠有效地去除離散的野值點,而且SVR算法對波動值的估計值更加平滑。從表1可以看出,SVR算法的計算時間比Lagrange插值法只多了11ms,但是檢測成功率提高了8%。這表明SVR算法建立的預(yù)測模型比較準(zhǔn)確,在一定程度上能夠抑制噪聲的影響。 表1 不同檢測方法的性能對比 2)場景2 如圖5所示,場景2中,艦船運動狀態(tài)不穩(wěn)定,存在加速和減速運動,速度的測量值存在3處連續(xù)的野值群(如圖6中藍(lán)色虛線橢圓所標(biāo)示)。此時,不能夠確定Lagrange插值法的插值點數(shù),因此分別設(shè)定了幾種插值點方案,得到的結(jié)果與真實測量值的對比如圖5所示。圖6展示了使用本文所提出的方法估計的結(jié)果與真實測量值的對比情況。 圖5 場景2 Lagrange插值結(jié)果Fig.5 Lagrange interpolation results in scenario 2 圖6 場景2 SVR結(jié)果Fig.6 SVR results in scenario 2 從圖5可以看出,利用Lagrange插值法得到的結(jié)果剛開始與實際測量值比較接近,說明該方法能夠剔除少數(shù)離散的野值點;但是從第500個數(shù)據(jù)點開始,估計值逐漸偏離真實值,而且隨著插值點數(shù)量n的增加,偏離得越激烈。這是因為此時出現(xiàn)了較多連續(xù)的野值點,而Lagrange插值法會將誤差逐漸累積,插值點個數(shù)越高,模型的階次越高,誤差膨脹得越快。在1000s時,速度誤差分別達(dá)到160m/s、1.6×104m/s、3×106m/s,已經(jīng)完全失去了修正功能,這說明任意插值點數(shù)的Lagrange插值法無法檢測出連續(xù)的野值點。 從圖6可以看出,藍(lán)色橢圓虛線標(biāo)示出的3處連續(xù)的野值已經(jīng)被基于SVR的方法有效剔除,得到的結(jié)果與真實測量值比較吻合,而且平滑性較好,較好地反映了艦船的真實運動速度。這表明基于SVR的方法對于導(dǎo)航傳感器連續(xù)野值點的情況具有較好的抑制作用。表2展示了不同野值檢測方法在場景2下的計算時間和檢測成功率,從表2中可以看出,SVR算法在該場景下依然具有較少的計算時間和較高的檢測成功率。 表2 不同檢測方法的性能對比 針對Lagrange插值法無法處理連續(xù)野值的問題,本文提出了一種基于改進(jìn)SVR的導(dǎo)航傳感器自適應(yīng)野值檢測方法。該方法結(jié)合了SVR只需要小樣本數(shù)據(jù)就能夠準(zhǔn)確建模和3σ準(zhǔn)則計算簡易的優(yōu)點,利用SVR在線建立艦船的運動模型對測量值進(jìn)行實時預(yù)測,并利用3σ準(zhǔn)則自適應(yīng)地計算閾值;然后通過比較閾值與預(yù)測殘差來判別測量值是否為野值點,如果測量值被檢測為野值點,則用SVR的預(yù)測值替代該野值點。海試實測數(shù)據(jù)表明,本文提出的方法能夠在存在連續(xù)野值點的情況下檢測出野值點,同時得到較好的傳感器真實測量值的估計,而且算法簡單容易實現(xiàn),具有較好的工程應(yīng)用價值。2 基于SVR的野值剔除方法
3 試驗與分析
4 結(jié)論