苑嚴偉 徐 玲 冀福華 郭大方 安 颯 牛 康
(中國農(nóng)業(yè)機械化科學研究院土壤植物機器系統(tǒng)技術國家重點實驗室, 北京 100083)
農(nóng)機大數(shù)據(jù)平臺建設是推進現(xiàn)代農(nóng)業(yè)生產(chǎn)信息化、智能化、精準化的重要環(huán)節(jié)[1-7]。隨著北斗系統(tǒng)、5G通信、物聯(lián)網(wǎng)等技術迅速發(fā)展,大數(shù)據(jù)平臺不斷完善,入網(wǎng)農(nóng)機數(shù)量猛增,數(shù)據(jù)規(guī)模不足問題得到緩解,但數(shù)據(jù)質(zhì)量問題成為阻礙平臺發(fā)展的新瓶頸。據(jù)統(tǒng)計,大型數(shù)據(jù)集中的錯誤率約為5%[8]。數(shù)據(jù)清洗能夠減少“Garbage in, garbage out”現(xiàn)象,但所需時間很長,一般約占數(shù)據(jù)分析總時間的60%~80%[9-10]。準確高效的數(shù)據(jù)清洗方法能夠提高平臺分析決策的可靠性和時效性,是農(nóng)機大數(shù)據(jù)平臺發(fā)展的重要基石。
國內(nèi)外關于數(shù)據(jù)清洗的研究主要集中在異常數(shù)據(jù)檢測[11-17]方面,對異常數(shù)據(jù)修復的研究較少。處理異常數(shù)據(jù)的傳統(tǒng)方式有直接保留、刪除和人工填充等,其效果不夠理想。ETL(Extract transform load)工具雖然能夠?qū)崿F(xiàn)數(shù)據(jù)抽取、轉(zhuǎn)換和加載,但是修復能力較弱,不能滿足應用需求。文獻[18]針對工業(yè)大數(shù)據(jù)中的高維時間序列數(shù)據(jù),基于領域知識支持,開發(fā)了在線與離線相結(jié)合的數(shù)據(jù)清洗系統(tǒng)Cleanits。文獻[19]針對時間序列異常數(shù)據(jù)修復問題,提出將時間相關特性與最小變動原理相結(jié)合的IMR(Iterative minimum repairing)框架。文獻[20]針對平滑過濾方法嚴重更改原始數(shù)據(jù)、且已有算法不支持流數(shù)據(jù)計算的問題,提出利用數(shù)據(jù)浮動速度函數(shù)修復高度異常數(shù)據(jù)的方法。文獻[21-23]利用Spark分布式計算框架加快了大數(shù)據(jù)清洗流程。目前,已有數(shù)據(jù)清洗算法均未充分利用數(shù)據(jù)間的相互關系,對原始數(shù)據(jù)改動大,不適用于具有大規(guī)模、多源異構、高維度、強時空相關等特點的農(nóng)機實時流數(shù)據(jù)。
為此,本文分析數(shù)據(jù)異常出現(xiàn)的主要場景及原因,根據(jù)農(nóng)機作業(yè)數(shù)據(jù)的時間相關性和最小變動原則,提出一種數(shù)據(jù)清洗方法,依托Flink流計算平臺實現(xiàn)數(shù)據(jù)的實時分析,通過試驗驗證算法的有效性,并對算法進行試驗優(yōu)化。
由于應用領域存在差異,數(shù)據(jù)異常的概念缺乏統(tǒng)一定義。本文將數(shù)據(jù)異常定義為:在某一瞬時,服務器接收到的數(shù)據(jù)(或數(shù)據(jù)的某一部分)出現(xiàn)不完整、不準確、不合法等現(xiàn)象。
田間作業(yè)條件復雜,增加了數(shù)據(jù)異常發(fā)生的概率。在實際工作中,易發(fā)生數(shù)據(jù)異常的主要場景如下:
(1)田間環(huán)境影響傳感器檢測精度。例如,地塊周圍存在高大樹木或建筑物等,會遮擋一些傳感器(如衛(wèi)星定位傳感器)的信號,導致數(shù)據(jù)出現(xiàn)跳變、離散或缺失。
(2)作業(yè)工況影響傳感器檢測精度。例如,作業(yè)過程中土壤或谷物產(chǎn)生的粉塵會干擾傳感器(如光學傳感器)的敏感元件;地面不平整或機器運轉(zhuǎn)產(chǎn)生的振動也會影響傳感器(如沖量式測產(chǎn)傳感器)的檢測精度,導致數(shù)據(jù)出現(xiàn)異常。該類型數(shù)據(jù)異常具體表現(xiàn)為數(shù)據(jù)出現(xiàn)零散、漂移或抖動。
(3)農(nóng)機自身因素影響傳感器檢測精度。例如,機器的發(fā)動機或供電系統(tǒng)工作不穩(wěn)定,引起電壓波動,導致傳感器(如電容式傳感器)的檢測性能隨電壓波動。該類型數(shù)據(jù)異常具體表現(xiàn)為數(shù)據(jù)出現(xiàn)漂移、丟失或抖動。
(4)田間環(huán)境影響信息上傳質(zhì)量。例如,田間網(wǎng)絡信號差或存在電磁干擾,會影響數(shù)據(jù)傳送的時效性和準確性,導致數(shù)據(jù)出現(xiàn)延時或缺失。
本文所討論的數(shù)據(jù)異常不包括作業(yè)環(huán)境合理變化導致的數(shù)據(jù)波動。例如:在同一地塊中,由于土壤肥力不同導致農(nóng)作物產(chǎn)量變化,盡管數(shù)據(jù)看起來比較反常,但是并不屬于異常數(shù)據(jù)。
為實現(xiàn)數(shù)據(jù)在線清洗,提出基于滑動窗口實現(xiàn)的流數(shù)據(jù)異常識別和修復算法。針對農(nóng)機作業(yè)數(shù)據(jù)以數(shù)值型為主的特點,基于方差約束原則識別異常數(shù)據(jù);基于最小變動原則,對異常數(shù)據(jù)的原始值進行初步估算,生成候選數(shù)據(jù);根據(jù)數(shù)據(jù)時間相關性,基于AR(Autoregressive model)、ARX(Autoregressive model with exogenous input)模型得到最優(yōu)修復值。因此,算法分為識別異常數(shù)據(jù)、生成候選修正數(shù)據(jù)、數(shù)據(jù)迭代修正3個步驟,如圖1所示。
在每個數(shù)據(jù)對應的窗口區(qū)間內(nèi),進行方差檢驗,評估其是否為異常。通過窗口的滑動,可以依次評估每個數(shù)據(jù),實現(xiàn)數(shù)據(jù)流的動態(tài)異常識別。
假設原始數(shù)據(jù)集Γ內(nèi)前w個數(shù)據(jù)可靠,對于Γ內(nèi)第i(i=w,w+1,w+2,…)個數(shù)據(jù)γi,選取大小為w的窗口Di={di1,di2,…,diw},其中dij=γi-w+j,則Di的方差為
(1)
式中dij—— 窗口Di中第j個數(shù)據(jù)
依據(jù)以往所采集的同類數(shù)據(jù)的方差v′,選取方差閾值v作為評判基準,v的取值應略大于v′,即v=λv′,其中λ為按經(jīng)驗選取的大于1的常數(shù)。當δ(Di)≤v時,則γi為正常數(shù)據(jù);當δ(Di)>v時,則γi為異常數(shù)據(jù)。
若γi為正常數(shù)據(jù),則窗口向后滑動,對第i+1個數(shù)據(jù)γi+1進行評估。若γi為異常數(shù)據(jù),則修復該數(shù)據(jù)后,再向后滑動窗口。
若確定γi為異常數(shù)據(jù),則設其為x,并令δ(Di)=v,2個原始解x1和x2求解公式為
(2)
假設x1≤x2,對于異常數(shù)據(jù)γi,必然有γi
(3)
通過此方法,依次將所有異常數(shù)據(jù)替換為候選數(shù)據(jù),生成候選數(shù)據(jù)集?!?。
由于生成候選數(shù)據(jù)集的方法較為粗放,因此引入AR和ARX模型,利用異常數(shù)據(jù)γi前面m個數(shù)據(jù),對γi的候選值γ′i進行優(yōu)化,保證數(shù)據(jù)修正準確可靠。
若m個數(shù)據(jù)均為正常數(shù)據(jù),則使用AR模型更新候選數(shù)據(jù)γ′i,得到最終修復值為
(4)
C——常量m——階數(shù)
φk——AR、ARX模型參數(shù)
εi——白噪聲點
否則,使用ARX模型對第i-m個至第i-1個數(shù)據(jù)的原始值與候選值的差加權求和,更新候選數(shù)據(jù)γ′i,得到最終修復值為
(5)
其中φk、m可利用數(shù)學統(tǒng)計進行估算。樣本數(shù)據(jù)集Γ的協(xié)方差函數(shù)符合Yule-Walker方程,可以得到
(6)
式中β0、β1、…、βp——Γ的協(xié)方差函數(shù)
轉(zhuǎn)換為矩陣形式
Apφ(p)=Bp
(7)
由于矩陣Ap對稱且可逆,因此可得
(8)
此時,可以求出φk,其中φ(p)的第p個分量φpp,即為偏相關函數(shù)。
根據(jù)AR(m)的特性可知,其偏自相函數(shù)m步截尾(在大于某個常數(shù)后快速趨于0),因此可以將點(p,φpp)在笛卡爾坐標系中標出。當存在某個p之后,φpp無限接近0,此時的p即為所求的階數(shù)m。執(zhí)行迭代,直至前后2次迭代的γ′i小于閾值τ時,停止迭代。
數(shù)據(jù)異常清洗算法步驟如下:
(1)輸入Γ、v、w、τ
(2)處理γi
γi→Di
ifδ(Di)≤v
else
forlto …
δ(Di)=v→x1,x2(x1≤x2)
ifγi≤x1
γ′i,0=x1
else
γ′i,0=x2
end
ifγi-m,…,γi-1do not have abnomal data
else
break
end
end
end
end
(3)輸出Γ*
在現(xiàn)有農(nóng)機大數(shù)據(jù)平臺中,選取2016—2019年某省農(nóng)機深松、保護性耕作等8種類型的作業(yè)數(shù)據(jù),規(guī)模大于1×109條,代表性字段如表1所示。
表1 農(nóng)機數(shù)據(jù)基本信息
為適應農(nóng)機作業(yè)數(shù)據(jù)吞吐量大、并發(fā)度高的特點,將算法遷移至大數(shù)據(jù)流計算平臺Flink上,依托Flink集群的分布式特性,保證算法快速準確執(zhí)行。傳感器通過TCP/IP協(xié)議將海量數(shù)據(jù)傳輸至Kafka集群進行分組管理。然后,F(xiàn)link消費者集群接收數(shù)據(jù)并運行算法,實現(xiàn)流數(shù)據(jù)清洗。系統(tǒng)部署在阿里云服務器上,相關配置如表2所示。
表2 試驗環(huán)境
3.2.1驗證方法
算法有效性包括異常數(shù)據(jù)識別有效性和修復有效性。使用精確率P1、召回率R和綜合性指標F1評價異常數(shù)據(jù)識別有效性。使用均方根誤差ERMSE評價數(shù)據(jù)修復有效性,計算式為
(9)
式中n——異常數(shù)據(jù)個數(shù)
算法有效性驗證方案流程如圖2所示。首先,選取一定規(guī)模的正常數(shù)據(jù),并人工對其進行預處理,將一定比例的正常數(shù)據(jù)修改至異常,同時標記正常數(shù)據(jù)為1,異常數(shù)據(jù)為0。將預處理后的數(shù)據(jù)作為試驗集,使用算法完成數(shù)據(jù)清洗。進行多次清洗后,取各評價指標的平均值進行分析。
為更加具體地展現(xiàn)本算法的修復效果,采用基于平滑的清洗算法SWAB[24]和基于否定約束的全局清洗算法Holistic[25]與本算法進行橫向?qū)Ρ取?/p>
3.2.2驗證結(jié)果
(1)選取不同規(guī)模的試驗集,在數(shù)據(jù)預處理時將5%的數(shù)據(jù)修改至異常,取窗口大小為100,階數(shù)取值為4,閾值取值為0.1。在每一規(guī)模水平下進行3次試驗,分別對P1、R、F1和ERMSE取平均值。
如圖3所示,P1、F1隨數(shù)據(jù)量增加而增大。當數(shù)據(jù)規(guī)模達到1×105條,P1在0.94附近趨于穩(wěn)定;R一直處于0.9~0.95區(qū)間內(nèi);F1大于0.92。說明算法在大規(guī)模數(shù)據(jù)集中具有較高的異常識別率。
均方根誤差隨數(shù)據(jù)規(guī)模的變化如圖4所示。隨著數(shù)據(jù)規(guī)模的增大,3種算法的均方根誤差均減小,且在數(shù)據(jù)達到一定規(guī)模后,均方根誤差的變化趨緩。SWAB算法均方根誤差始終較高。在數(shù)據(jù)規(guī)模小于1×105條時,Holistic與本文算法表現(xiàn)相近,但在數(shù)據(jù)規(guī)模大于等于1×105條時,后者的均方根誤差明顯更小,表明本文算法修復效果較好。
(2)選取規(guī)模為1×105條的試驗集,在窗口大小為100、階數(shù)為4、閾值為0.1時,選取不同數(shù)據(jù)異常率進行試驗。試驗結(jié)果如圖5所示,同一數(shù)據(jù)規(guī)模下,3種算法的均方根誤差均隨數(shù)據(jù)異常率的增大而增大,SWAB算法最高,Holistic算法次高,本文算法始終最低,說明所提出的算法在修復準確性方面有效,且數(shù)據(jù)異常率越低表現(xiàn)越好。
由前述分析,數(shù)據(jù)規(guī)模處于較高水平、錯誤率處于較低水平時,二者對均方根誤差的影響很小,并且實際情況中數(shù)據(jù)規(guī)模與錯誤率不可控。因此,對算法的優(yōu)化主要考慮階數(shù)、閾值、窗口大小對均方根誤差ERMSE和算法運行時間T的影響。采用Box-Behnken原理設計試驗,各試驗因素編碼如表3所示,試驗設計與結(jié)果如表4所示,A、B、C為因素m、τ、w編碼值。
表3 因素編碼
對試驗結(jié)果進行分析,選擇回歸模型進行擬合。均方根誤差和算法運行時間的方差分析結(jié)果如表5、6所示,所建立的模型均顯著(P≤0.05),且失擬項不顯著,證明模型所擬合的回歸方程與實際相符,能準確反映均方根誤差、時間與階數(shù)、閾值、窗口大小之間的關系。在保證模型可靠的前提下,為使回歸模型更好地對試驗結(jié)果進行預測,剔除不顯著項,對回歸模型做優(yōu)化調(diào)整,分別得到ERMSE和T的回歸模型為
表5 均方根誤差ERMSE方差分析
表6 算法運行時間T方差分析
ERMSE=11.28-24.85A-13.89B+17.16A2+23.46B2(A,B∈[0,1])
(10)
T=17.22-12.64A-38.57B+25.52A2+23.90B2(A,B∈[0,1])
(11)
將回歸模型映射回原空間可得
ERMSE=11.28-2.76m-55.56τ+0.21m2+375.36τ2(m∈[0,9],τ∈[0,0.25])
(12)
T=17.22-1.4m-154.28τ+0.32m2+382.4τ2(m∈[0,9],τ∈[0,0.25])
(13)
由圖6可以看出,當閾值τ一定時,隨著階數(shù)m的增大,均方根誤差先減少后增大。這說明過大的階數(shù)并不會持續(xù)增加算法的準確度。當階數(shù)一定時,均方根誤差隨閾值增大而增大,這說明選取較小的閾值能提高算法準確性。
由圖7可以看出,當階數(shù)一定時,隨著閾值逐漸變大,算法運行時間逐漸減少;當閾值較小時,需要較高的時間成本。當閾值一定時,算法運行時間隨階數(shù)增大而增大,結(jié)合階數(shù)對均方根誤差的影響,說明選取過大的階數(shù)導致算法準確性差且效率低。
云服務平臺使用目的不同,所要求的性能指標不同,有些注重數(shù)據(jù)準確性,有些更關注實時性。為此,本文采用二進制編碼的混合遺傳算法,分別對式(12)、(13)所示的模型進行優(yōu)化求解,確定不同性能指標下的參數(shù)組合,優(yōu)化過程如圖8、9所示。設定種群個體數(shù)目為15,交叉概率為0.8,變異概率為0.08。迭代求解得到,當階數(shù)為6.6,閾值為0.07時,均方根誤差最小為0.16;當階數(shù)為2,閾值為0.2,算法運行時間最小為0.13 s。
(1)研究異常數(shù)據(jù)檢測及修正技術,提出一種基于滑動窗口機制的數(shù)據(jù)在線清洗算法,并依托Flink分布式計算平臺,加速數(shù)據(jù)的實時清洗,以適應農(nóng)機大數(shù)據(jù)高并發(fā)、吞吐量大的特點。
(2)試驗表明,針對規(guī)模為1×105條、異常率為5%的數(shù)據(jù)集,算法窗口大小取100、階數(shù)取4、閾值取0.1時,精確率、召回率和綜合性指標均滿足數(shù)據(jù)清洗要求。與SWAB算法和Holistic算法修復后的均方根誤差的對比表明,本文算法的均方根誤差更小,從而證明了本文算法的有效性。本文算法的均方根誤差隨數(shù)據(jù)規(guī)模的增大而減小,隨數(shù)據(jù)異常率的增大而增大,說明該算法適用于異常率較低的大規(guī)模數(shù)據(jù)集。
(3)基于Box-Behnken原理設計試驗,分別建立均方根誤差、算法運行時間與階數(shù)、閾值、窗口大小之間的響應曲面回歸模型。利用基于二進制編碼的混合遺傳算法求出滿足各性能指標的多參數(shù)最優(yōu)組合,當階數(shù)為6.6、閾值為0.07時,均方根誤差最小為0.16,當階數(shù)為2、閾值為0.2時,算法運行時間最短為0.13 s。