李 代 華
(云南省水文水資源局文山分局,云南 文山 663000)
環(huán)境變化及人類活動加劇給徑流的精準預報帶來了新的挑戰(zhàn),積極探索具有較好預報精度的模型及方法一直是水文預報研究中的熱點和難點問題。支持向量機(Support Vector Machines,SVM)是Vapnik等人提出的一種新型通用學習方法,能較好地解決小樣本、非線性、高維數(shù)和局部極小點等實際問題,已在水文預測預報[1-3]及枯水期月徑流預測[4-6]中得到應用。研究表明,SVM核函數(shù)等關(guān)鍵參數(shù)的合理選取是提高SVM預測精度的關(guān)鍵。目前,除試錯法、網(wǎng)格搜索法選取SVM相關(guān)參數(shù)外,智能算法常被用于SVM關(guān)鍵參數(shù)的選取,包括遺傳算法[3](genetic algorithm,GA)、粒子群優(yōu)化(particle swarm optimization,PSO)算法[4]、人工魚群算法[5](artificial fish swarm algorithm,AFSA)、果蠅優(yōu)化算法[7](fruit optimization algorithm,F(xiàn)OA)、布谷鳥搜尋(Cuckoo Search,CS)算法[8]、灰狼優(yōu)化(gray wolf optimization,GWO)算法[9]、文化算法[10](cultural algorithm,CA)、SCE-UA算法[11]、混合蛙跳算法[12](shuffled frog leaping algorithm,SFLA)、入侵雜草優(yōu)化(invasive weed optimization,IWO)算法[13]、帝國競爭算法[14](imperialist competitive algorithm,ICA)、人工蜂群優(yōu)化(artificial bee colony,ABC)算法[15]等。然而,在實際應用中,智能算法優(yōu)化SVM關(guān)鍵參數(shù)存在以下兩方面的不足:①傳統(tǒng)GA、PSO、CS等標準算法在尋優(yōu)過程中存在早熟收斂和易陷入局部極值等問題,難以獲得SVM“最佳”關(guān)鍵參數(shù)。②SVM關(guān)鍵參數(shù)中交叉驗證參數(shù)V對于SVM性能有著重要影響, 取值“小”易導致SVM“欠擬合”,訓練樣本擬合度低;V取值“大”則易導致“過擬合”,使SVM外推能力差、預測精度低。目前大多數(shù)SVM參數(shù)優(yōu)化僅針對懲罰因子C和核函數(shù)參數(shù)g進行優(yōu)化,部分增加不敏感系數(shù)ε的優(yōu)化,而對于交叉驗證參數(shù)V普遍采用試算的方式選取,耗時費力,而且不能保證最優(yōu)。
基于上述原因分析,為有效提高SVM在水文預測預報中的精度,本文分別提出基于Mittag-Leffler、Pareto、Cauchy 3種重尾分布改進的布谷鳥搜索算法(mittag lefflercuckoo search,MLCS;paretocuckoo search,PCS;cauchycuckoo search,CCS)優(yōu)化的支持向量機(SVM)月徑流預測模型。內(nèi)容安排如下:①提出MLCS,PCS、CCS 3種CS改進算法,選取6個標準測試函數(shù)對MLCS,PCS、CCS算法進行仿真驗證,并與標準CS算法的仿真結(jié)果進行比較。②利用MLCS,PCS、CCS算法優(yōu)化SVM交叉驗證參數(shù)V、懲罰因子C、核函數(shù)參數(shù)g和不敏感系數(shù)ε,構(gòu)建MLCS-SVM、PCS-SVM和CCS-SVM預測模型,并構(gòu)建CS-SVM模型作對比,將此4種模型應用于云南省姑老河站枯水期月徑流預測研究,旨在驗證基于4參數(shù)優(yōu)化的MLCS-SVM、PCS-SVM、CCS-SVM模型用于枯水期月徑流預測的可行性和有效性。
布谷鳥搜索算法(CS)又名杜鵑搜索算法,其通過模擬布谷鳥寄生育雛來有效求解最優(yōu)化問題,目前已在各行業(yè)領(lǐng)域得到廣泛應用。算法需設(shè)定3個假設(shè)條件:①布谷鳥隨機選擇1個鳥巢孵化,且1次只產(chǎn)1顆蛋。②最好的鳥巢將會被保留到下一代。③可用鳥巢的數(shù)量n是固定的,鳥巢中外來蛋被發(fā)現(xiàn)的概率是p0∈[0,1][16]。
在這3個理想狀態(tài)下,鳥巢位置的更新公式為:
(1)
(2)
標準布谷鳥搜索(CS)算法的全局隨機游走主要基于L'evy分布來實現(xiàn),由于 L'evy分布屬較簡單的一種重尾分布,雖然能使CS算法獲得較好的隨機性,但也存在遍歷性的不足從而導致CS算法種群多樣性和全局搜索能力弱。為進一步提高CS算法的群多樣性和全局搜索能力,本文提出基于Mittag-Leffler、Pareto、Cauchy 3種重尾分布改進的CS(即MLCS,PCS、CCS)算法[17,18]。
(1)MLCS算法。如果一個隨機變量的分布函數(shù)滿足式(3),則稱該隨機變量服從Mittag-Leffler分布:
(3)
式中:0<β≤1,x> 0,且對于x≤0,F(xiàn)β(x)= 0;對于0<β<1,Mittag-Leffler分布為指數(shù)的重尾推廣,并且當β=1時減少到指數(shù)分布。
參考文獻[17,18]提出的方法生成Mittag-Leffler隨機數(shù):
(4)
式中:γ表示尺度參數(shù);u、v∈(0,1),表示獨立的均勻隨機數(shù);τβ為Mittag-Leffler隨機數(shù)。
基于Mittag-Leffler重尾概率分布,式(1)可以寫成:
(5)
式中:Mattag-Leffler(β,γ)表示從Mittag-Leffler分布中得出的隨機數(shù),本文β=0.8,γ=4.5;其他參數(shù)同上。
(2)PCS算法。如果隨機變量的累積分布函數(shù)滿足式(6),則稱其服從Pareto(帕累托)分布:
(6)
式中:b>0表示比例參數(shù);a>0表示形狀參數(shù)(Pareto不等式指數(shù))。
基于Pareto重尾概率分布,式(1)可以寫成:
(7)
式中:Pareto(b,a)表示從Pareto分布中得出的隨機數(shù),本文a=1.5,b=4.5;其他參數(shù)同上。
(3)CCS算法。如果隨機變量的累積分布函數(shù)滿足式(8)具有以下表達式,則稱其服從Cauchy分布:
(8)
式中:μ表示位置參數(shù);σ表示比例參數(shù)。
基于Cauchy重尾概率分布,式(1)可以寫成:
(9)
式中:Cauchy(μ,σ)表示從Cauchy分布中得出的隨機數(shù),本文σ=4.5,μ=0.8;其他參數(shù)同上。
SVM通過將低維樣本空間映射到高維特征空間,并在高維特征空間中建立線性學習機求解,其學習過程轉(zhuǎn)換為凸優(yōu)化問題[1-3,8]如下:
(10)
最終回歸函數(shù)為:
(11)
為驗證MLCS,PCS和CCS算法尋優(yōu)能力,利用MLCS,PCS、CCS對Sphere、Schwefel 2.22、Schwefel 2.21、Schwefel 1.2、Griewank、Ackley 6個典型測試函數(shù)進行仿真驗證,并與標準CS算法的仿真結(jié)果進行比較。6個函數(shù)優(yōu)化維度為30維,最優(yōu)解為0。其中函數(shù)Sphere、Schwefel 2.22、Schwefel 2.21、Schwefel 1.2為單峰函數(shù),主要用于測試算法的尋優(yōu)精度和局部搜索能力;函數(shù)Griewank、Ackley為多峰函數(shù),主要用于測試算法逃逸極部極值能力和全局搜索能力。4種算法重復20次尋優(yōu),采用平均值、標準差進行性能評價,見表1;4種算法最大迭代次數(shù)T=5 000,鳥巢數(shù)量n=50,發(fā)現(xiàn)概率Pa=0.25。其中MLCS 算法Mittag-Leffler分布參數(shù)β=0.8,γ=4.5;PCS算法Pareto分布參數(shù)a=1.5,b=4.5;CCS算法Cauchy分布參數(shù)σ=4.5,μ=0.8。其他參數(shù)采用各算法默認值。
表1 函數(shù)優(yōu)化對比結(jié)果
對單峰函數(shù)Sphere,MLCS,PCS和CCS算法尋優(yōu)能力相差不大,CCS算法表現(xiàn)相對較好,3種改進算法尋優(yōu)精度均高于標準CS算法23個量級以上;對于具有明顯轉(zhuǎn)折點的非線性函數(shù)Schwefel 2.22,MLCS,PCS和CCS算法尋優(yōu)能力相似,PCS算法表現(xiàn)相對較好,3種改進算法尋優(yōu)精度均高于標準CS算法12個量級以上;對于倒錐形非線性函數(shù)Schwefel 2.21,CCS、MLCS算法尋優(yōu)精度略優(yōu)于PCS算法,優(yōu)于標準CS算法;對于最優(yōu)解周圍存在很小下降梯度函數(shù)Schwefel 1.2,PCS、MLCS、CCS算法尋優(yōu)效果相差不大,尋優(yōu)精度優(yōu)于標準CS算法;對于典型多峰多模態(tài)函數(shù)Griewank,MLCS,PCS和CCS算法20次尋優(yōu)均獲得了理論最優(yōu)值0,全局搜索能力遠優(yōu)于標準CS算法;對于連續(xù)旋轉(zhuǎn)不可分多峰函數(shù)Ackley,MLCS,PCS和CCS算法尋優(yōu)精度相同,3種改進算法尋優(yōu)精度均高于標準CS算法13個量級以上??梢?,基于Mittag-Leffler、Pareto、Cauchy 3種重尾分布改進的CS算法能有效增強其種群多樣性和全局搜索能力,3種改進算法在這 6個函數(shù)上的搜索效果均優(yōu)于標準CS算法,具有較好的尋優(yōu)精度和全局搜索能力。
步驟1:利用下式歸一化處理實測數(shù)據(jù),并合理劃分訓練、預測樣本。設(shè)置SVM交叉驗證參數(shù)V和懲罰因子C、核函數(shù)參數(shù)g、不敏感系數(shù)ε的搜尋范圍。(由于交叉驗證參數(shù)V取值為正整數(shù),因此采用fix函數(shù)取正)。
(12)
步驟2:確定訓練樣本均方誤差為適應度函數(shù):
(13)
步驟3:隨機初始化鳥巢位置,設(shè)置鳥巢數(shù)量n,最大迭代次數(shù)T,發(fā)現(xiàn)概率Pa,Mittag-Leffler分布參數(shù)β,γ,Pareto分布參數(shù)a,b,Cauchy分布參數(shù)σ,μ。
步驟4:通過適應度函數(shù)計算找出當代最優(yōu)鳥巢位置Xbest。判斷算法是否滿足終止條件,若滿足,算法結(jié)束;若否,執(zhí)行步驟5。
步驟5:分別執(zhí)行Mittag-Leffler、Pareto、Cauchy飛行操作,隨機產(chǎn)生鳥巢位置。采用式(5)、式(7)、式(9)更新鳥巢位置。計算更新后鳥巢位置的適應度,并與原鳥巢的適應度作比較,若優(yōu)于原鳥巢則代替原鳥巢,否則丟棄。
步驟7:利用新更新的鳥巢位置計算適應度值,并與前代鳥巢位置對應的適應度值進行比較,保留適應度值更好的鳥巢位置。
步驟8:判斷終止條件,若是,輸出最優(yōu)解Xbest;否則重復步驟5~步驟8。
步驟9:利用MLCS、PCS和CCS算法優(yōu)化獲得的交叉驗證參數(shù)V、懲罰因子C、核函數(shù)參數(shù)g、不敏感系數(shù)ε代入MLCS-SVM、PCS-SVM和CCS-SVM模型進行預測分析。
(1)數(shù)據(jù)來源及分析。應用實例數(shù)據(jù)來源于云南省姑老河站1960-2013年共54年的實測資料。該站1960-2012年上年度月徑流與次年枯水期1-3月月徑流相關(guān)關(guān)系見表2。
表2 上年度1-12月月均流量與次年1-3月月相關(guān)系數(shù)
從表2來看,該站上年度月徑流與次年1-3月月徑流存在較好的相關(guān)性。其中,次年1月月徑流與上年度1-12月徑流相關(guān)系數(shù)在0.095~0.938之間;次年2月月徑流與上年度1-12月、次年1月月徑流相關(guān)系數(shù)在0.087~0.833之間;次年3月月徑流與上年度1-12月、次年1-2月月徑流相關(guān)系數(shù)在0.063~0.794之間。本文選取相關(guān)系數(shù)較大的上年度8-12月月徑流預測次年枯水期1月均徑流,選取相關(guān)系數(shù)較大的上年度9-12月及次年1月月徑流預測次年枯水期2月月均徑流,選取相關(guān)系數(shù)較大的上年度9-12月及次年1-2月月徑流預測次年枯水期3月月均徑流量,并利用前40組實測數(shù)據(jù)作為訓練樣本,后13組實測數(shù)據(jù)作為預測檢驗樣本。
(2)參數(shù)設(shè)置。MLCS、PCS、CCS和標準CS 4種算法除最大迭代次數(shù) 設(shè)置為200外,其余參數(shù)設(shè)置同上。SVM模型相關(guān)參數(shù)搜索范圍:交叉驗證參數(shù)V∈[2,10]、懲罰因子C∈[0.01,1 000]、核函數(shù)參數(shù)g∈[0.01,1 000]、不敏感系數(shù)ε∈[0.000 1,1]。
(3)模型構(gòu)建及預測。建立MLCS-SVM、PCS-SVM、CCS-SVM和CS-SVM 4種模型對實例1-3月月徑流進行訓練及預測,結(jié)果見表3;并給出4種模型1-3月訓練樣本進化過程圖和訓練-預測相對誤差效果圖,分別見圖1、圖2。并利用平均相對誤差MRE(%)、最大相對誤差maxRE(%)和適應度值對各模型預測性能進行評價。
表3 實例1-3月月徑流訓練-預測結(jié)果及其比較表
續(xù)表3 實例1-3月月徑流訓練-預測結(jié)果及其比較表
圖1 4種模型1-3月訓練樣本進化過程圖
圖2 實例1-3月月徑流訓練-預測相對誤差效果圖
依據(jù)表3及圖1~圖2可以得出以下結(jié)論:
(1)MLCS-SVM、PCS-SVM、CCS-SVM 3種模型對實例1-3月月徑流預測的平均相對誤差分別在4.89%~4.94%、6.87%~7.07%、6.87%~7.09%之間,預測精度分別較CS-SVM模型提高了34.5%、8.30%、23.6%以上,具有較好預測精度和泛化能力,表明MLCS,PCS和CCS算法均能有效優(yōu)化SVM交叉驗證參數(shù)、懲罰因子、核函數(shù)參數(shù)和不敏感系數(shù),模型及方法可為水文預測預報及其他相關(guān)預測研究提供參考。
(2)對SVM而言,交叉驗證參數(shù)的多少直接影響到SVM預測精度和泛化能力。從本實例優(yōu)化結(jié)果來看,對于1月月徑流預測,SVM訓練的最佳交叉驗證參數(shù)為5;對于2月和3月,最佳交叉驗證參數(shù)為9??梢姡ㄟ^智能算法尋優(yōu)交叉驗證參數(shù),可避免人為調(diào)試的繁瑣。
(3)從表3及圖1來看,MLCS,PCS、CCS算法優(yōu)化實例1-3月SVM訓練樣本獲得的適應度值分別在0.003 618~0.003 632、0.004 403~0.004 421、0.007 471~0.007 472之間,均優(yōu)于標準CS算法,通過實例再次驗證了基于Mittag-Leffler、Pareto、Cauchy重尾分布改進的MLCS,PCS、CCS算法能有效增強標準CS算法的種群多樣性,進一步提升標準CS算法的全局尋優(yōu)能力。
(4)從圖2來看,4種模型擬合、預測精度由優(yōu)至劣依次是:CCS-SVM、MLCS-SVM、PCS-SVM、CS-SVM模型。
(1)針對標準CS算法存在早熟收斂和易陷入局部極值的不足,分別提出基于Mittag-Leffler、Pareto、Cauchy重尾分布改進的MLCS,PCS、CCS算法,選取6個標準測試函數(shù)對MLCS,PCS、CCS算法進行仿真測試,并與標準CS算法的仿真結(jié)果進行比較。結(jié)果表明:MLCS,PCS、CCS算法尋優(yōu)效果均優(yōu)于標準CS算法,具有較好的尋優(yōu)精度和全局搜索能力。
(2)首次提出SVM 4參數(shù)優(yōu)化方法,即利用MLCS,PCS、CCS算法同時優(yōu)化SVM交叉驗證參數(shù)、懲罰因子、核函數(shù)參數(shù)和不敏感系數(shù),并給出優(yōu)化步驟和應用實例,有效拓展了SVM模型的應用范疇。從實例應用效果來看,同時優(yōu)化SVM 4參數(shù)是可行和有效的。
(3)MLCS-SVM、PCS-SVM、CCS-SVM 3種模型對實例1-3月月徑流預測的平均相對誤差分別較CS-SVM模型提高了34.5%、8.30%和23.6%以上,具有較好預測精度和泛化能力。驗證了MLCS,PCS、CCS算法均能有效優(yōu)化SVM交叉驗證參數(shù)、懲罰因子、核函數(shù)參數(shù)和不敏感系數(shù),模型及方法可為水文預測預報及其他相關(guān)預測研究提供參考。
□