高心怡,韓 飛
(江蘇大學 計算機與通信工程學院,江蘇 鎮(zhèn)江 212013)
對于中國這個糧食大國來說,農(nóng)業(yè)經(jīng)濟預測十分重要,它為國家、政企及其他有關部門把握未來經(jīng)濟運行狀況、判斷發(fā)展后勁、制定相關決策等提供科學依據(jù).早先,國內(nèi)外學者對農(nóng)業(yè)經(jīng)濟預測進行了大量研究,提出了很多預測方法,如因果預測法、時間序列預測法、決策樹法、先期調(diào)查等,這些都是傳統(tǒng)經(jīng)濟預測的基本方法.此后有學者提出BP神經(jīng)網(wǎng)絡預測模型[1-3],但BP神經(jīng)網(wǎng)絡在非線性預測中易于陷入局部極值,影響預測精度,即農(nóng)業(yè)經(jīng)濟預測對于模型的非線性預測性能有著比較高的要求.支持向量機回歸算法[4]是一種用于趨勢預測的支持向量機,它通過一個映射函數(shù)將輸入數(shù)據(jù)非線性地映射到高維特征空間,并在此高維空間進行回歸.由于支持向量機中核參數(shù)γ、懲罰參數(shù)C的選取對其預測效果有一定影響,因此求得較優(yōu)的參數(shù)組合可以提高支持向量機的預測性能.粒子群算法(PSO)[5]是根據(jù)鳥群覓食行為而產(chǎn)生的仿生設計算法,屬于一種較為簡單有效的全局優(yōu)化算法,但在進化后期收斂慢,粒子容易趨于同一化,失去多樣性,優(yōu)化精度較差.針對此缺陷,文中提出一種改進的基于混合智能算法的支持向量機的農(nóng)業(yè)經(jīng)濟預測方法,融合了改進的PSO算法與人工魚群算法,通過自身內(nèi)部的變異交叉以及族外競爭機制,使得目標函數(shù)值向全局最優(yōu)解快速收斂,提高粒子的多樣性以及算法的全局搜索能力,最終得到支持向量機的最優(yōu)參數(shù)組合.并以BP 神經(jīng)網(wǎng)絡預測模型、PSO-SVM預測模型與文中預測模型進行試驗對比,結果表明基于混合智能算法的支持向量機的農(nóng)業(yè)經(jīng)濟預測模型比其他方法有著更高的預測精度.
支持向量機(support vector machine,SVM)是一種機器學習過程,其基本原理是將樣本數(shù)據(jù)映射到一個高維空間,并在高維空間中尋找一個最大間隔超平面,將不同類別的樣本數(shù)據(jù)隔離,使得間隔最大,從而正確分類樣本數(shù)據(jù).對于給定的線性可分數(shù)據(jù)集{xi,yi},i=1,2,…,l,yi∈{-1,+1},xi∈Rn,滿足
yi[w·xi+b]-1≥0,i=1,2,…,l,
(1)
利用Lagrange乘子法并滿足KKT(Karush Kuhn Tucher)條件,最終可得到解上述問題的最優(yōu)分類函數(shù)為
(2)
式中:a*,b*為確定最優(yōu)劃分超平面的參數(shù).
對于線性不可分情況,通過在約束條件中引入松弛變量以及在目標函數(shù)中加入懲罰變量來解決這一問題.這時廣義最優(yōu)分類面問題可以進一步演化為求取下列函數(shù)的極小值:
(3)
式中:C為懲罰系數(shù),用于控制錯分樣本懲罰的程度.
支持向量機引入核函數(shù),避免了高維空間的向量內(nèi)積而造成大量運算.目前,徑向基函數(shù)是應用最廣泛的核函數(shù),函數(shù)形式如下:
K(xi,yi)=exp(-γ‖xi-xj‖2),γ>0,
(4)
式中:參數(shù)γ是核函數(shù)中的重要參數(shù),影響著SVM分類算法的復雜程度[6].
綜上所述,支持向量機中核參數(shù)γ、懲罰參數(shù)C的選取對其預測效果有一定影響[7],因此,擬采用混合智能算法選取合適的支持向量機參數(shù)組合.
粒子群算法(particle swarm optimization,PSO)將搜索最優(yōu)解的過程看成是鳥類覓食活動,用粒子來模擬鳥類個體,每個粒子可視為n維搜索空間中的一個搜索個體,粒子的當前位置即為對應優(yōu)化問題的一個候選解,粒子的飛行過程即為該個體的搜索過程.粒子的飛行速度可以根據(jù)粒子的歷史最優(yōu)位置和種群的歷史最優(yōu)位置進行動態(tài)調(diào)整.粒子僅具有兩個屬性:速度和位置,速度代表移動的快慢,位置代表移動的方向.每個粒子單獨搜尋的最優(yōu)解叫做個體極值pbest,當前全局最優(yōu)解即為粒子群中最優(yōu)的個體極值.通過不斷的迭代,粒子更新速度和位置,最終可以得到滿足終止條件的最優(yōu)解.
設一個包含M個粒子的粒子群在n維空間中進行搜索,將食物視為最優(yōu)解,所有的粒子都清楚它們自身的位置.同時,能夠依據(jù)適應度的值判斷位置的優(yōu)劣.粒子根據(jù)它們自身的經(jīng)驗和群體的經(jīng)驗更新粒子的速度和方向,直到能夠達到停止條件為止.首先對i個粒子進行初始化,粒子i的位置矢量和速度矢量分別記做xi=(xi1,xi2,…,xin)和vi=(vi1,vi2,…,vin,記為pi=(pi1,pi2,…,pin),群體最優(yōu)解為gbest,記為gi=(gi1,gi2,…,gin),在迭代期間,粒子i在n維子空間中的飛行速度和位置按下式調(diào)整:
vid=wvid+c1r1(pid-xid)+c2r2(pgd-xid),
(5)
xid=xid+vid,
(6)
(7)
式中:i=1,2,…,M;d=1,2,…,n;w為慣性權重;c1和c2是加速常數(shù);r1和r2是[0,1]之間的隨機數(shù);vmax,vmin是粒子運動速度的限制范圍.
在PSO的搜索過程中,粒子之間會互相分享信息而得到最優(yōu)解.這樣的分享方式可以讓粒子在剛開始的時候擁有較快的收斂速度,但是在迭代的后期,粒子的更新受到限制,速度變慢,陷入局部最優(yōu)的可能性增大.因此,需要針對這些問題對PSO算法加以改進.
單一的群智能算法通常會存在許多局限性,例如蟻群算法不能處理連續(xù)優(yōu)化問題,混合蛙跳算法易陷入局部最優(yōu)等問題.因此很多學者通過融合多種算法特性來改進這些缺陷,同時提出了混合群智能算法優(yōu)化支持向量機參數(shù)[8-12]的方法.群智能算法之間的混合使用,可以幫助尋找到更優(yōu)的參數(shù)組合,并且更大程度地提高SVM 的預測與分類精度,多數(shù)混合群智能算法在SVM 參數(shù)優(yōu)化的試驗結果中表明,改進的算法不僅具備了其中一種群智能算法的優(yōu)點,還具備其他群智能算法的優(yōu)點,比單一的算法更加可行且有效.
遺傳算法具有更好的全局尋優(yōu)能力以及能自動獲取和指導優(yōu)化的搜索空間,自適應地調(diào)整搜索方向,不需要確定的規(guī)則.而人工魚群算法具有尋優(yōu)速度快、全局尋優(yōu)能力以及較強的并行處理能力等優(yōu)點.兩者皆能改善粒子群算法易于陷入局部最優(yōu)的缺陷,因此采用這兩種算法對粒子群算法進行改進.針對PSO易于陷入局部最優(yōu)解的缺陷,文中提出一種引入內(nèi)部交叉變異與外部競爭機制的算法.
PSO算法提高個體的方式是分享個體之間的有用信息以及個體的自學習.改進的PSO算法在個體提高以后,采用GA算法中的交叉和變異步驟,得到更加優(yōu)秀的下一代群體,流程圖如圖1所示.新的算法既保證了粒子群的個體之間交流與位置轉(zhuǎn)移的思想,又同時融合了遺傳算法強大的全局搜索性能.這樣,經(jīng)過改進的算法充分利用了粒子群算法中的種群的信息和個體的信息,其尋優(yōu)過程更有效率,所得到的結果精度更高.
圖1 改進的粒子群算法流程圖
改進的粒子群算法首先計算適應度函數(shù)值,對群體中的個體按適應度函數(shù)值的大小進行排序,再采用PSO算法對群體中的優(yōu)秀個體進行提高,提高以后的個體被保留并進入下一代,其他適應度函數(shù)值差的個體則被淘汰.對已經(jīng)提高的優(yōu)秀個體再通過交叉和變異步驟得到剩下的個體.采用新方法得到的下一代個體比采用單一算法得到的下一代個體要優(yōu)秀,不過這仍然是在一個種群中不斷優(yōu)化的內(nèi)部競爭.
人工魚群算法(artificial fish-swarm algorithm,AFSA) 是一種基于模擬魚群行為的隨機搜索優(yōu)化算法.它是說在一片水域中,魚往往能自行或尾隨其他魚找到營養(yǎng)物質(zhì)多的地方,因而魚生存數(shù)目最多的地方一般就是本水域中營養(yǎng)物質(zhì)最多的地方.人工魚群算法就是根據(jù)仿生學特點,通過構造人工魚來模仿魚群的覓食、聚群及追尾行為,從而實現(xiàn)尋優(yōu),過程如下:
(8)
為了加強個體之間的競爭壓力,將個體的內(nèi)部的競爭擴大到不同種群之間,將進化種群中的最優(yōu)解的個體與隨機組成的種群的最優(yōu)解形成競爭.引入AFSA算法,通過族外競爭使目標函數(shù)值向全局最優(yōu)解快速收斂.既利用了PSO算法追逐當前全局最優(yōu)點來保證算法的收斂性,又利用人工魚群算法的搜索隨機性,加大了搜索范圍,克服了PSO陷入局部極值點和AFSA算法運行速度慢等缺點.
GAPSO-AFSA算法的基本思想:將種群一分為二成A,B兩個子群體,在每次的迭代中,A子群體利用改進的粒子群算法進化,而B子群體利用人工魚群算法進化,然后通過對比兩種進化算法的最優(yōu)解得到整個群體中能夠搜索到的最優(yōu)解,流程如圖2所示.這種算法既利用了改進的粒子群算法追逐當前全局最優(yōu)點來保證算法的收斂性,又利用人工魚群算法的搜索隨機性,加大了算法的搜索范圍,同時克服了PSO易陷入局部極值點和 AFSA 算法尋優(yōu)精度不高等缺點,從而兼顧了算法的優(yōu)化精度和效率,提高了算法的優(yōu)化性能.
圖2 GAPSO-AFSA算法的流程圖
GAPSO-AFSA預測模型基本流程:
1) 對所有樣本數(shù)據(jù)進行初始化.
2) 人工魚群算法的思想:
① 設定魚群的參數(shù),包括魚群規(guī)模m,最大迭代次數(shù)iter,最大嘗試次數(shù)try_number,最大移動步長step,擁擠度因子δ等;
② 計算初始適應度值,把最優(yōu)值存儲起來;
③ 計算得到追尾行為和群聚行為的值,魚的前進方向即為最優(yōu)的行為值,同時與存儲起來的最優(yōu)值進行比較,如果優(yōu)于存儲起來的最優(yōu)值則更新最優(yōu)解;
④ 判斷是否已經(jīng)滿足最大迭代次數(shù),若已經(jīng)滿足則終止尋優(yōu)過程,輸出存儲的最優(yōu)值;否則,返回到②,繼續(xù)運行.
3) GAPSO算法的基本思想:
① 生成初始種群,初始化種群,賦值種群中的參數(shù);
② 計算種群中個體的初始適應度值,按適應度的值大小進行排序,保留更優(yōu)的前ps/2個個體,拋棄后ps/2個個體;
③ 對前ps/2中的個體進行提高和進化并直接進入下一代;
④ 對下一代的剩下的ps/2個體,從已經(jīng)進化后的ps/2個個體中按競爭選擇方法,先隨機選擇2個較為優(yōu)秀的個體,然后比較2個個體的適應度函數(shù)值大小,選擇其中適應度函數(shù)值大的作為父體,再以同樣的方式選擇一個母體,最后以概率pc進行交叉,生成2個新的個體,重復上述過程直到獲得ps/2個個體;
⑤ 對于選擇交叉后獲得的ps/2個個體以概率pm進行變異.變異操作完后,把ps/2個個體帶入到下一代種群中再次競爭;
⑥ 判斷是否達到迭代次數(shù)或者當前種群是否滿足預設的條件,若滿足則終止尋優(yōu),否則跳轉(zhuǎn)回②.
4) 比較2種算法所取得的懲罰系數(shù)C和核參數(shù)γ的值,取最佳組合(C,γ).
5) 將最優(yōu)(C,γ)帶入到SVM預測模型中對數(shù)據(jù)進行預測試驗.
文中使用的數(shù)據(jù)源自于國家統(tǒng)計局歷年糧食報告(中國1949—2016年的糧食產(chǎn)量),如圖3所示.選擇1949年至2016年我國糧食的產(chǎn)量數(shù)據(jù)及影響其產(chǎn)量的因素作為數(shù)據(jù)集,數(shù)據(jù)源自中國國家統(tǒng)計局網(wǎng)站.選取了全國總體統(tǒng)計數(shù)據(jù)以及江蘇、山西、黑龍江等多個省或直轄市的地區(qū)統(tǒng)計數(shù)據(jù),由于影響糧食產(chǎn)量的因素眾多,并且各因素之間還有相互影響的可能,因此在綜合考慮以后,選擇糧食播種面積、農(nóng)作物有效灌溉面積、施用農(nóng)用化肥的總量、本年度末所擁有的農(nóng)業(yè)機械總動力、農(nóng)村用電總量以及從事農(nóng)業(yè)的勞動力共六項指標作為函數(shù)的輸入值,以糧食總產(chǎn)量這一項作為整個函數(shù)的輸出.
圖3 中國實際糧食產(chǎn)量曲線圖
選取1949—1999 年的糧食產(chǎn)量數(shù)據(jù)作為訓練數(shù)據(jù),以每5年的數(shù)據(jù)預測下一年的數(shù)據(jù),分別采用BP,PSO-SVM[11],GAPSO-AFSA算法對數(shù)據(jù)進行訓練,同時將訓練好的預測模型帶入試驗數(shù)據(jù)進行測試.對于混合智能算法選取合適的支持向量機的參數(shù)組合,其中徑向基核參數(shù)γ搜索范圍為[0.1,10],懲罰參數(shù)C的搜索范圍為[1,500],設定染色體種群大小為40,并設定最大進化代數(shù)為160,交叉率與變異率分別為0.6,0.003,try_number=3,Visual和Step按式(8)動態(tài)調(diào)整,s=3.
將得到的最優(yōu)參數(shù)組合賦予支持向量機以獲得優(yōu)化的支持向量機預測模型.以BP神經(jīng)網(wǎng)絡、PSO-SVM預測模型與文中GAPSO-AFSA預測模型進行對比分析,三者的預測產(chǎn)量與實際值如圖4所示,BP神經(jīng)網(wǎng)絡平均相對誤差為1.034 0,PSO-SVM預測模型的平均相對誤差為0.020 4,而GAPSO-AFSA平均相對誤差僅為0.014 1.表1為2005—2016年GAPSO-AFSA預測模型及PSO-SVM預測模型的差值比較.由表可見,基于混合智能算法的支持向量機的農(nóng)業(yè)經(jīng)濟預測模型比其他單一預測模型有著更高的預測精度.
圖4 各算法預測的糧食產(chǎn)量以及實際產(chǎn)量對比圖
表1 PSO-SVM和GAPSO-AFSA預測模型對比
為了進一步驗證文中所提出的GAPSO-AFSA預測模型的優(yōu)越性,又分別采用GAPSO-AFSA與PSO-SVM 預測模型對江蘇省糧食產(chǎn)量、黑龍江省糧食產(chǎn)量、山西省糧食產(chǎn)量等多個案例進行測試與分析,測試結果表明采用PSO-SVM預測糧食產(chǎn)量的平均相對誤差處于0.02 ~ 0.05,而基于GAPSO-AFSA的糧食產(chǎn)量預測的平均相對誤差處于0.007 ~ 0.024,可以看出,基于混合智能算分的支持向量機預測模型有著更高的預測精度.
提出了基于混合智能算法的支持向量機的農(nóng)業(yè)經(jīng)濟預測方法,支持向量機通過一個映射函數(shù)將輸入數(shù)據(jù)非線性地映射到高維特征空間,并在此高維空間進行回歸,通過混合智能算法選取合適的支持向量機參數(shù)組合,以PSO-SVM預測模型與文中的GAPSO-AFSA預測模型進行對比分析.試驗結果表明,基于混合智能算法的支持向量機的糧食產(chǎn)量預測模型比基于單一智能算法支持向量機的預測模型有著更高預測精度.與此同時,通過此次試驗,以下兩點改進及創(chuàng)新還有待后續(xù)研究:①雖然引入人工魚群算法提高了算法的精度,但此算法的時間復雜度較高,在迭代的過程中消耗的時間稍長,因此在未來的工作中可對其進行改進,以提高算法的效率;② 由于影響糧食產(chǎn)量因素較多也比較復雜,后續(xù)工作中還將引入多目標算法,通過多目標對多個因素的最優(yōu)規(guī)劃來得到更精確的預測值.