沈時宇,陳 明
(上海海洋大學(xué)信息學(xué)院,農(nóng)業(yè)農(nóng)村部漁業(yè)信息重點實驗室,上海 201306)
物聯(lián)網(wǎng)技術(shù)在農(nóng)業(yè)生產(chǎn)中的應(yīng)用日漸普遍,其中感知技術(shù)是農(nóng)業(yè)物聯(lián)網(wǎng)的關(guān)鍵,傳感器是感知技術(shù)的核心[1],目前,光、溫、水、氣、熱等常規(guī)環(huán)境傳感器已比較成熟[2]。水質(zhì)傳感器作為水產(chǎn)養(yǎng)殖生產(chǎn)獲取各類數(shù)據(jù)的重要工具,按照時間不斷采集水溫、pH、溶氧、氨氮和鹽度等水環(huán)境參數(shù),并傳輸至數(shù)據(jù)處理系統(tǒng)。這些數(shù)據(jù)具有顯著的周期性、實時性、無窮性等特征,對于水產(chǎn)品的存活率都有很大的影響,只有通過綜合分析這些時間序列參數(shù)才能對水質(zhì)狀況作出合理判斷。水產(chǎn)養(yǎng)殖大多處于室外,傳感器的工作環(huán)境通常較不穩(wěn)定,因而造成設(shè)備易受環(huán)境影響、測量數(shù)值變化較大的問題。除此之外,設(shè)備長期疏于維護也會因機械原因產(chǎn)生異常數(shù)據(jù)。為了保證設(shè)備的自動控制以及正常數(shù)據(jù)分析,進行水質(zhì)參數(shù)預(yù)測來判斷異常成為養(yǎng)殖過程中的重要部分。
近年來,國內(nèi)外學(xué)者對時間序列的預(yù)測問題進行了許多研究[3],其中一些結(jié)果對于水質(zhì)參數(shù)預(yù)測有一定的參考價值?,F(xiàn)在常用的預(yù)測方法主要有灰色模型、ARIMA模型等傳統(tǒng)預(yù)測方法[4-6]和神經(jīng)網(wǎng)絡(luò)(NN)、支持向量回歸(SVR)等機器學(xué)習(xí)方法。相對于傳統(tǒng)算法,機器學(xué)習(xí)算法學(xué)習(xí)能力更強,模擬效果更佳,成為許多時間序列分析人員的首選。神經(jīng)網(wǎng)絡(luò)(BP)[7]有很強的自學(xué)習(xí)能力,BP模型作為經(jīng)典的神經(jīng)網(wǎng)絡(luò)模型,可通過調(diào)整權(quán)重、激活函數(shù)等來增強解決復(fù)雜非線性問題的能力,其權(quán)值的調(diào)整采用反向傳播算法,在環(huán)境預(yù)測等方面已有不少應(yīng)用[8-12]。SVR算法以其訓(xùn)練樣本小、泛化能力強的特點在數(shù)據(jù)分析領(lǐng)域有較多應(yīng)用[13-14],并被成功應(yīng)用在時間序列預(yù)測等研究中[15-18]。除上面這些方法之外,目前出現(xiàn)了一些新的預(yù)測模型。其中Facebook開源了基于時間序列分解和機器學(xué)習(xí)擬合的Prophet時間序列預(yù)測算法[19-20]。Prophet可以處理具有大異常值和趨勢變化的數(shù)據(jù),并模擬具有周期性的數(shù)據(jù)[21],目前已有不錯的應(yīng)用[22]。
因為時間序列數(shù)據(jù)信息會隨著時間變化,往往訓(xùn)練很長的歷史數(shù)據(jù)后得到的是“過期”的信息,并不能反映當前階段數(shù)據(jù)之間的相關(guān)性,所以提出了基于“短時期數(shù)據(jù)”進行分析。這里的“短時期數(shù)據(jù)”指的是數(shù)據(jù)量相對較小,但通過對其研究可以更敏銳地發(fā)現(xiàn)當前時間段數(shù)據(jù)變化傾向的數(shù)據(jù)集。但是使用“短時間數(shù)據(jù)”進行預(yù)測與以上提到的多數(shù)預(yù)測模型需要大量數(shù)據(jù)進行訓(xùn)練相矛盾。為解決這種情況下因訓(xùn)練不充分導(dǎo)致的預(yù)測精度較低的問題,提出了基于Prophet_SVR模型的短期時間序列預(yù)測方法,選擇以溶氧時間序列參數(shù)為例進行預(yù)測分析,并可以推廣到其他如水溫、氨氮等參數(shù)值的分析上去。
樣本數(shù)據(jù)來自江蘇中洋河鲀莊園,位于江蘇省海安市濱海新區(qū)南通龍洋水產(chǎn)有限公司內(nèi),屬亞熱帶季風(fēng)氣候,全年溫暖濕潤,比較適合水產(chǎn)養(yǎng)殖,溶氧數(shù)據(jù)見表1?;趯Α岸虝r期數(shù)據(jù)”進行分析,但是這里的“短”只是相對而言,一般情況下這段數(shù)據(jù)也應(yīng)當有包含至少2~3個穩(wěn)定周期的長度。因此,溶氧樣本數(shù)據(jù)采集時間為2018年12月29日10:56至2019年1月2日23:41,共計6 017條,其中在1月2日13:50前每隔1 min采集一次數(shù)據(jù),共采集5 905條數(shù)據(jù);13:50后的數(shù)據(jù)為每5 min采集一次,共采集112條,由于時間間隔不同,根據(jù)模型需求選擇舍去。
表1 溶氧數(shù)據(jù)
傳感器在采集數(shù)據(jù)的過程中會有值缺失和出現(xiàn)過于偏離實際情況的數(shù)值,影響預(yù)測的精度。通過觀察,溶氧數(shù)據(jù)集中的值缺失屬于隨機缺失,故而采用可能值插補缺失值。由于數(shù)據(jù)集的采集間隔為1 min,屬于定距型,且數(shù)據(jù)發(fā)生劇烈變化的可能性較小,因而使用均值插補,具體方法是使用前后各2位共4個數(shù)值的平均數(shù)對缺失值進行補充??傆嬋苎鯏?shù)據(jù)有缺失值30條,采用均值插補法進行填充整理,預(yù)處理后共計溶氧有效數(shù)據(jù)5 935條,溶氧變化曲線圖如圖1所示。
圖1 水質(zhì)溶氧參數(shù)變化曲線圖
Prophet與傳統(tǒng)的時間序列方法(ARIMA模型等)不同,前者是基于時間序列分解(DTS)和機器學(xué)習(xí)的擬合,來預(yù)測時間序列未來的走勢。Prophet模型的公式定義:
y(t)=g(t)+s(t)+h(t)+εt
(1)
式中:t—當前時間;y(t)—當前值;g(t)—趨勢項,是時間序列在非周期上的變化趨勢;s(t)—周期項,反映序列的周期性變化;h(t)—節(jié)日-事件項,可理解為額外的影響項,在水質(zhì)溶氧預(yù)測應(yīng)用中這些項的單位為毫克每升(mg/L);εt—誤差項,服從正態(tài)分布。
趨勢項模型g(t)可基于邏輯回歸函數(shù)或分段線性函數(shù)。常用的是邏輯回歸函數(shù),模型可簡化為:
(2)
式中:t—當前時間;C—最大漸近值;k—曲線的增長率;m—曲線的中點值。當C=1,k=1,m=0時就是常見的sigmoid函數(shù)的形式。實際應(yīng)用中這3個參數(shù)不可能都是常數(shù),因此會被替換成了隨著時間t變化的函數(shù)。
周期項模型s(t),用傅立葉級數(shù)模擬時間序列的周期性,模型為:
(3)
參數(shù)P、N可根據(jù)周期的長度進行調(diào)整。例如當以年為周期時P=365.25,N=10;當以周為周期時P=7,N=3。
節(jié)日-事件項模型h(t)為:
(4)
式中:Z(t)=(1{t∈D1},...,1{t∈DL}),k=(k1,...,kL)T;L表示節(jié)日-事件的個數(shù),個;Di表示節(jié)日-事件所延續(xù)的時間范圍,當時間t在某個節(jié)日-事件的范圍內(nèi)則Z(t)取1,否則為0;ki表示不同節(jié)日-事件對時間序列預(yù)測的影響系數(shù),且k服從正態(tài)分布。
在對“短時期數(shù)據(jù)”分析時,Prophet模型能夠在序列中分離出周期性的規(guī)律,并依此進行時間序列數(shù)據(jù)的擬合。
支持向量回歸(SVR)是由Suykens等[13]提出用于解決函數(shù)估計問題的機器學(xué)習(xí)方法,是支持向量機(SVM)的一種擴展算法,保留了結(jié)構(gòu)風(fēng)險最小化、小樣本等特點,是支持向量機在回歸領(lǐng)域的應(yīng)用。
SVR回歸的過程如下:
1)線性回歸的基本形式為f(x)=ωT·x+b。對于給定樣本集{(xi,yi),i=1,2,...,N},其中xi∈Rn為輸入量,yi∈R為輸出量??紤]用映射形式,令φ(x)為x映射到高維后的特征向量,從而得到的線性回歸函數(shù)表示為:
f(x)=ωTφ(x)+b
(5)
式中:ω為系數(shù),b∈R為偏差,ω和b學(xué)得后,模型也隨之確定。
2)根據(jù)結(jié)構(gòu)風(fēng)險最小化準則,將問題轉(zhuǎn)化為目標函數(shù)R最小化問題,可表示為:
(6)
式中:s.t.后的式子表示目標函數(shù)R在最小化時應(yīng)滿足的約束條件;ei∈R,為誤差變量,有待模型訓(xùn)練確定;C為懲罰系數(shù),且C>0。
3)為了求解上述目標函數(shù)R的最小化問題,構(gòu)建拉格朗日函數(shù)L:
(7)
并代入f(x)=ωT·x+b,可得:
(8)
最后在SVR對偶問題里滿足Karush-Kuhn-Tucker(KKT)條件,并代入f(x)=ωT·x+b,可以得到有SVR的解形如:
(9)
(10)
式中:k(xi,xj)=φ(xi)Tφ(xj)為核函數(shù)。常用的核函數(shù)有線性核函數(shù)及徑向基核函數(shù)。
最后,支持向量回歸需要考慮的參數(shù)主要有兩個,分別為懲罰系數(shù)C和當選用核函數(shù)時對應(yīng)的系數(shù)gama。結(jié)合文獻[23],調(diào)整這兩個參數(shù)的取值,以選擇最優(yōu)化的模型。
試驗所使用計算機配置為:處理器為Intel Core i5 2.6 GHz,內(nèi)存為8 GB,操作系統(tǒng)為 Windows 10;程序設(shè)計語言為Python3.6;集成開發(fā)環(huán)境是Anaconda,使用的深度學(xué)習(xí)框架是Theano 1.0.3和Keras 2.2.4。
數(shù)據(jù)來源:江蘇中洋河鲀莊園溶氧參數(shù)監(jiān)測值,共5 935條。輸入數(shù)據(jù):自2018年12月29日10:56至2019年1月2日11:50的養(yǎng)殖水質(zhì)溶氧參數(shù)監(jiān)測值。數(shù)據(jù)形式為長度為5 815的二元組,每個元組中分別是從“2018/12/29 10:56”開始的時間記錄和這個時間對應(yīng)的溶氧值。預(yù)測模型:Prophet模型,本文所提出的Prophet_SVR預(yù)測模型及其用于對比的Prophet_NN模型。預(yù)測目標:預(yù)測自2019年1月2日11:51至13:50這2 h內(nèi)共計120條水質(zhì)溶氧參數(shù)值。輸出數(shù)據(jù):長度為120的一段時間序列預(yù)測數(shù)值。
3.3.1 Prophet時序模型預(yù)測及優(yōu)化
首先將水質(zhì)溶氧數(shù)據(jù)按照Prophet時序模型的輸入要求整理。接著從后向前截取長度為120的數(shù)據(jù)為測試集,余下的5 815條數(shù)據(jù)為訓(xùn)練集T。將訓(xùn)練集T作為Prophet時序模型的輸入進行預(yù)測,通過試驗對比,選擇在模型的趨勢項g(t)部分使用邏輯回歸函數(shù),因而要確定的Capacity參數(shù)根據(jù)樣本數(shù)據(jù)設(shè)置為溶氧數(shù)據(jù)的最大值(9.5),模型趨勢項中變點數(shù)與光滑參數(shù)采用默認值。輸出得到長度與訓(xùn)練集長度相同的訓(xùn)練預(yù)測集TP和與測試集長度相同的預(yù)測集P。
為了選擇更適合溶氧預(yù)測研究的算法優(yōu)化模型,使用支持向量回歸以及應(yīng)用較為廣泛的神經(jīng)網(wǎng)絡(luò)分別對預(yù)測結(jié)果進行優(yōu)化并進行對比:
1)支持向量回歸的優(yōu)化。將通過Prophet模型得到的訓(xùn)練預(yù)測集TP與原始數(shù)據(jù)的訓(xùn)練集T改寫成[X(tpn-m,tpn-m+1,...,tpn-2,tpn-1),yn]的X→y對應(yīng)形式,類似構(gòu)建一個時間窗口。該目的在于使用Prophet模型訓(xùn)練預(yù)測集某時間點n前的m個時間點數(shù)據(jù)序列來對應(yīng)原始數(shù)據(jù)訓(xùn)練集中第n個時間點的數(shù)值yn,這樣可以通過構(gòu)建有監(jiān)督學(xué)習(xí)來提高預(yù)測精準度,結(jié)合試驗與參考文獻[12,25],根據(jù)溶氧數(shù)據(jù)的特征周期以及采樣頻率,計算得出合適的m值為21。將改寫數(shù)據(jù)集中X和y分別作為輸入和期望輸出來訓(xùn)練SVR模型。最后將由Prophet模型得到的預(yù)測集P作為訓(xùn)練好的SVR模型的輸入,得到長度為120的優(yōu)化預(yù)測值集。
參數(shù)設(shè)置:結(jié)合文獻[23],調(diào)整懲罰系數(shù)C,以及選用的核函數(shù)對應(yīng)的系數(shù)gama這兩個參數(shù)的取值,以求得模型的最優(yōu)化。模型中選擇RBF作為核函數(shù),通過試驗對比,當設(shè)置懲罰系數(shù)C為7.5,gama系數(shù)為1時得到的均方根誤差最小為0.255 8,因此設(shè)定C為7.5,gama為1。Prophet_SVR模型的結(jié)構(gòu)如圖2所示。
圖2 Prophet_SVR模型結(jié)構(gòu)
2)神經(jīng)網(wǎng)絡(luò)的優(yōu)化。將通過Prophet模型得到的訓(xùn)練預(yù)測集TP和原始數(shù)據(jù)的訓(xùn)練集T分別作為神經(jīng)網(wǎng)絡(luò)的輸入與期望輸出,通過進行反向傳播訓(xùn)練模型。最后將由Prophet模型得到的預(yù)測集P作為訓(xùn)練好的NN模型的輸入,得到長度為120的優(yōu)化預(yù)測值集。
參數(shù)設(shè)置:模型中設(shè)置結(jié)構(gòu)為1-K-1的BP神經(jīng)網(wǎng)絡(luò)。結(jié)合文獻[24]確定隱藏層節(jié)點數(shù)K的范圍在1~16之間。最后通過試驗對比,當隱含層節(jié)點數(shù)為16、迭代次數(shù)為200時,預(yù)測結(jié)果的均方根誤差最小為0.333 4,因此設(shè)定隱藏層節(jié)點數(shù)為16。
3.2.2 模型性能評價方法
使用均方根誤差(ERMSE),平均絕對百分比誤差(EMAPE)與允許誤差內(nèi)的預(yù)測值占比來評價預(yù)測性能。ERMSE是指參數(shù)估計值與參數(shù)真值之差的平方期望值的平方根,其值越小預(yù)測性能越穩(wěn)定,計算公式如式11;EMAPE是一個百分比值,其值越小說明模型擁有更好的預(yù)測精度,公式如式12所示。允許誤差內(nèi)的預(yù)測值占比也是一個百分比值,先設(shè)定閾值,當參數(shù)估計與參數(shù)真值之差小于這個閾值時可看作近似預(yù)測正確,允許誤差內(nèi)的預(yù)測值占比則使用近似預(yù)測正確的樣本數(shù)量占比來衡量模型的預(yù)測效果,本文簡記為EPPVAE,計算公式如式13所示。
(11)
(12)
(13)
式中:ni—近似預(yù)測正確的樣本數(shù),個;N—預(yù)測集總數(shù),個;試驗中閾值設(shè)為0.2。
綜上,基本流程如圖3所示。
圖3 水質(zhì)溶氧預(yù)測試驗流程圖
首先使用Prophet時序模型對2019年1月2日11:51開始至13:50,2 h內(nèi)水質(zhì)溶氧參數(shù)進行預(yù)測,預(yù)測結(jié)果如圖4所示。在Prophet模型的輸出圖像中,黑色點表示原始的溶氧值時間序列離散點,深灰色的線條表示使用模型來擬合時間序列所得到的取值,兩條淺灰色的線分別是合理上界和下界,兩線之間的淺灰色區(qū)域則是時間序列的置信區(qū)間。圖4中最后一段橫坐標2 h長度的深灰色下降曲線表示使用該模型所得到的預(yù)測值。
圖4 Prophet時序模型預(yù)測結(jié)果
接著使用Prophet_SVR與相應(yīng)參數(shù)得到的未來2 h水質(zhì)溶氧預(yù)測的結(jié)果,同時與Prophet和Prophet_NN模型的結(jié)果進行比較。各模型預(yù)測結(jié)果與實際測試集的對比如圖5所示。Prophet時序模型的預(yù)測結(jié)果隨著時間的推移與真實值之間的誤差逐漸增大,而Prophet_SVR和Prophet_NN模型通過優(yōu)化都可以在一定程度上減小誤差,其中Prophet_SVR模型的預(yù)測曲線相比其他兩個模型在更多的時間段內(nèi)與實際值曲線更為接近,直觀上看,Prophet_SVR模型對于水質(zhì)溶氧的預(yù)測更為準確。
圖5 實際溶氧時間序列及各模型預(yù)測序列對比圖
以上3模型對2019年1月2日11:51開始至13:50的水質(zhì)溶氧預(yù)測結(jié)果評估以及模型的預(yù)測用時如表2所示。
表2 3種模型預(yù)測性能評估結(jié)果
注:*號表示使用SVR和NN對Prophet模型得到的預(yù)測結(jié)果進行優(yōu)化各自所使用的時間
結(jié)合圖5與表2得知:Prophet_SVR模型的試驗效果在均方根誤差(ERMSE)與平均絕對百分比誤差(EMAPE)上較Prophet模型分別下降0.197 1和3.890 4%,允許誤差內(nèi)的預(yù)測值占比(EPPVAE)提高42.5%,說明整體的預(yù)測誤差降低且對單個數(shù)值的預(yù)測精度提高,模型預(yù)測性能更穩(wěn)定??梢婎A(yù)測效果有了很大的提升。
對比Prophet_NN模型,Prophet_SVR模型在ERMSE和EMAPE上評估分別要低0.061 6和1.973 2%,允許誤差內(nèi)的預(yù)測值占比(EPPVAE)也要高得多。同時在模型訓(xùn)練時間方面有較大的優(yōu)勢,優(yōu)化的效率更高,體現(xiàn)了SVR算法在處理小樣本數(shù)據(jù)上的優(yōu)勢。
綜上,使用Prophet_SVR模型在對Prophet模型的預(yù)測結(jié)果優(yōu)化上有較好的效果。
Prophet模型基于時間序列分解,優(yōu)點是對具有趨勢性、周期性等明顯內(nèi)在規(guī)律的數(shù)據(jù)敏感,這是相對于其他時間序列處理方法的優(yōu)勢。但其模型的表達能力還是較簡單,導(dǎo)致模型訓(xùn)練時欠擬合,對于復(fù)雜的模式預(yù)測精度不高。
神經(jīng)網(wǎng)絡(luò)的優(yōu)點在于學(xué)習(xí)能力和容錯性較強。不足之處在于過分依賴學(xué)習(xí)樣本的數(shù)量和質(zhì)量,且參數(shù)較多,對小樣本的學(xué)習(xí)過程也會比較長。而且神經(jīng)網(wǎng)絡(luò)優(yōu)化目標是基于訓(xùn)練集的最優(yōu)化進行,這樣就會造成過擬合,導(dǎo)致泛化能力不佳。這應(yīng)是試驗中出現(xiàn)Prophet_NN允許誤差內(nèi)的預(yù)測值占比(EPPVAE)反而低于Prophet的原因。
支持向量回歸優(yōu)點在于能較好處理小樣本數(shù)據(jù),且相對于神經(jīng)網(wǎng)絡(luò)等算法沒有局部極小值問題,保證了算法的全局最優(yōu)性和解的唯一性。泛化能力比較強,可以防止欠學(xué)習(xí)和過學(xué)習(xí)現(xiàn)象,解釋了試驗使用SVR模型優(yōu)化的預(yù)測效果要好于NN的現(xiàn)象。但是不易發(fā)現(xiàn)數(shù)據(jù)中隱含的周期性的因素,大多需要經(jīng)過序列的分解后才能進行處理。
結(jié)合Prophet與SVR的優(yōu)點,在使用Prophet處理具有周期性和趨勢性的短期數(shù)據(jù)的基礎(chǔ)上,針對其模型訓(xùn)練中易出現(xiàn)欠擬合的現(xiàn)象,利用支持向量回歸提高訓(xùn)練擬合度,從而對預(yù)測效果進行優(yōu)化。雖然使用Prophet_NN模型也可以對Prophet模型訓(xùn)練時的欠擬合問題進行處理,但由于試驗樣本較少,且使用NN進行處理容易出現(xiàn)過擬合的情況,反倒使得優(yōu)化效果不佳。通過試驗也證明了Prophet_SVR可以在明顯減少整體預(yù)測誤差的基礎(chǔ)上,同時提升單個數(shù)值的預(yù)測精度,而且模型訓(xùn)練時間更短,整體的預(yù)測效率更高。
針對Prophet時序模型在短期水質(zhì)溶氧時間序列預(yù)測的應(yīng)用中精度較低的實際情況,提出結(jié)合支持向量回歸優(yōu)化的Prophet_SVR模型。結(jié)果顯示,對于樣本較少的數(shù)據(jù),相較于Prophet模型,Prophet_SVR模型預(yù)測精度、穩(wěn)定性以及單個數(shù)據(jù)預(yù)測精度都有所提高。這為基于短期的時間序列預(yù)測提供了一個新的思路,也可以擴展到其他水質(zhì)因子如pH、氨氮等的預(yù)測應(yīng)用中去。本研究不足之處在于,通過觀察模型預(yù)測序列對比圖,發(fā)現(xiàn)所預(yù)測的溶氧數(shù)值在60~80 min這段時間與真實值偏差較大。根據(jù)資料判斷,此處時間序列數(shù)值可能出現(xiàn)了概念漂移,導(dǎo)致模型的預(yù)測精度隨時間推進而降低。后期將實時處理方法運用到模型中,從而進一步提高模型的預(yù)測精度。
□