吳程昊,莫路鋒
(浙江農林大學 信息工程學院,浙江 杭州 311300)
支持向量機(SVM)是一種有監(jiān)督的機器學習方法,它能有效解決小樣本學習、高維及非線性問題,并表現出較強的泛化能力,在模式識別、分類等領域有著廣泛的應用。
支持向量機的參數選擇極大程度上決定了其學習精度和泛化能力,因此國內外學者對SVM 的參數優(yōu)化問題進行了研究,并取得了較好的成效。文獻[2]引入了遺傳算法(GA)優(yōu)化SVM 參數,提出一種GA-SVM 算法。邱正等采用人工蜂群算法(ABC)對SVM 參數進行優(yōu)化,構建了ABC-SVM 模型。周頔建立一種基于混合擾動算子的量子粒子群優(yōu)化改進算法優(yōu)化SVM 參數,并取得了較好的優(yōu)化結果。韓祥等提出了一種基于改進人工魚群的優(yōu)化SVM 參數方法,實現了變壓器繞組熱點溫度的預測。陳晉音等建立了基于粒子群算法改進后的SVM 模型,降低算法復雜度的同時提高了精度。這些方法取得成效的同時,也仍存在一定的缺陷,如GA易于局部極值化,而粒子群優(yōu)化(PSO)收斂迅速,但也同樣易于陷入局部最優(yōu)。
獅群算法(LSO)是近年被提出的群體智能算法,收斂速度快,相較GA、PSO 等算法,具有良好的全局尋優(yōu)能力,但也存在陷入局部最優(yōu)解、欠缺局部搜索機制的問題,導致尋優(yōu)結果精度并不高。
本文針對LSO 陷入局部最優(yōu)解的問題,引入差分變異機制,提高了子代多樣性,避免陷入局部最優(yōu)。針對LSO 欠缺局部搜索機制,引入了覓食行為機制,提高了局部尋優(yōu)能力。最后,提出了一種改進后的獅群算法DALSO,用于對SVM 的參數進行優(yōu)化選擇,并利用UCI 數據集對DALSO 優(yōu)化SVM 模型進行有效驗證。
獅群算法是一種群體智能算法,通過模擬自然界獅群狩獵、繁衍等行為,建立一個搜索全局最優(yōu)解的模型。獅群在算法中被分成了3 類:獅王、母獅、幼獅。獅王是該種群中最強壯的公獅,是整個獅群中優(yōu)勝劣汰的領導者。母獅主要負責撫育幼獅,教授捕獵技巧。幼獅小時靠近獅王進食,長大后跟隨母獅捕獵,成年后被逐出獅群。獅群算法的主要思想如下:在待尋優(yōu)空間里的某一位置,適應度最高的被定義為獅王;母獅負責合作捕殺獵物,一旦發(fā)現有更優(yōu)質的獵物,則通知獅王,該獵物的位置會被獅王占據;幼獅在獅王附近進食或者跟隨母獅學習捕獵,成年后被趕出獅群。獅群不斷進行合作交流,更新位置,最終求得目標函數最優(yōu)解。
LSO 是基于獅群捕獵行為所提出的,有較好的尋優(yōu)效果。本文針對幼獅更新機制存在的容易導致陷入局部極值的問題,引入了差分進化算法的變異機制,以增加子代生成的多樣性和提高全局搜索的效率。
假設對于維空間,獅群總數為,成年獅占獅群比例因子為∈(0,1),最大迭代次數為,則有:
式中成年獅子的數量為,那么幼獅的數量則為-。在成年獅中,將初始群體最優(yōu)位置設置為獅王,其余均為母獅。
獅王的位置是當前迭代的最優(yōu)值,由式(2)更新獅王的位置:
母獅通常負責協(xié)同捕獵,所以母獅會隨機挑選另一只母獅進行合作。根據下式來更新母獅的位置:
但是由式(3)可以看出,原算法局部尋優(yōu)機制過度依賴母獅協(xié)作來完成,只有母獅兩兩之間存在信息交互,忽略了其他獅子的信息交互。為了提高子代的多樣性,本文引入差分變異機制,母獅將向第代中的最優(yōu)雌獅個體和全局最優(yōu)個體學習,因此將母獅的更新機制修改為:
式中:m代表第代中的最優(yōu)雌獅個體;為權重因子。國內外學者對DE 的參數在不同領域的優(yōu)化問題進行了研究分析,并指出通常意義下推薦∈[0.4,0.95],因此,和的表達式如下:
式中:代表當前迭代次數;則隨著的增大呈線性遞減,最小值為0.4。
傳統(tǒng)幼獅的更新機制可以分為3 種情況:跟隨母獅狩獵、跟隨獅王進食、精英反向學習。精英反向學習是為了跳出局部最優(yōu)解,但是當可行域不關于零點對稱的時候,則會引起無效迭代。因此,提出一種引入差分變異機制的更新方式來替代精英反向學習。在差分變異機制中,DE/rand/1 方式的變異注重于全局搜索能力,類似于精英反向學習,易于跳出局部最優(yōu)解。DE/best/1 方式的變異則更注重于局部搜索能力,該更新方式可以在前期擁有全局搜索能力,不易陷入局部極值;而后期更專注于局部搜索能力。兩種變異方式結合后的更新機制如下:
針對LSO 陷入局部極值的問題,本文引入了差分進化算法的變異機制來增加子代多樣性,更易于跳出局部最優(yōu)解。改進后的LSO 算法在結合兩種變異方式之后,在前期擁有更好的全局搜索能力,易于跳出局部極值;而在后期更專注于局部搜索能力,延展了搜索深度,在提高尋優(yōu)精度的同時效率也更高。
LSO 算法由于局部搜索機制的欠缺,尋優(yōu)結果精度并不高。針對LSO 算法局部尋優(yōu)能力不足的問題,本文引入了人工魚群算法的覓食行為機制來增強局部尋優(yōu)能力。魚群的覓食行為主要是通過判斷食物濃度的高低進而進行選擇性移動。
假設在獅群種群內一個個體當前狀態(tài)為x,適應值為y,在其視野范圍Visual 內隨機選擇一個狀態(tài)x,對應的適應值為y,若y<y,則向狀態(tài)x方向移動step 個單位;若在隨機try_number 次后仍不滿足前進條件,它將在任意方向上隨機移動一步。本文對覓食行為做了改動,若是try_number 次后仍不滿足前進條件,則保持x狀態(tài),且為了保證搜索效率和精度,將try_number 設置為4 次。覓食行為表示為:
改進后的算法在每次迭代完母獅和幼獅的位置之后,會運行覓食機制重新更新種群,保留高適應度優(yōu)質個體,以延展數據挖掘的深度,進而達到增強局部尋優(yōu)能力的效果。
本文針對LSO 算法欠缺局部搜索機制的問題,引入覓食行為機制來增強局部搜索能力。針對陷入局部最優(yōu)解的問題,引入了差分變異機制對獅群的更新機制進行優(yōu)化,提高了子代多樣性,更易于跳出局部最優(yōu)解,最后提出了DALSO 算法,該算法具體流程如圖1 所示。
圖1 DALSO 算法流程圖
SVM 包含有多種常用的核函數,鑒于RBF 核函數具有收斂迅速、非線性映射、適應性廣等優(yōu)點,本文選取徑向基核函數作為內積核函數,其數學形式為:
式中為核函數參數。
懲罰系數和核函數參數很大程度上決定了SVM模型的分類效果。
本文提出一種基于DALSO 的SVM 參數優(yōu)化方法,利用該方法進行(,)參數的自動尋優(yōu)可使分類準確率達到最高。
假設存在數據集=(,,…,x),輸出分類結果為=(,,…,y),正確分類樣本數為,則SVM 模型的分類正確率為:
SVM 模型的優(yōu)劣可以由分類準確率進行評估,因此本文將分類準確率作為適應度函數:
基于DALSO 的SVM 參數優(yōu)化方法具體步驟如下:
Step1:初始化算法參數獅群總數、成年獅占比、最大迭代次數等。
Step3:計算適應度,更新獅王位置。
Step4:根據式(4)更新母獅位置,根據式(7)更新幼獅位置。
Step5:根據式(8)運行覓食機制更新種群。
Step6:種群內根據適應度重新排序,更新獅王、母獅、幼獅的位置。
Step7:令=+1,迭代執(zhí)行Step3~Step6,直到迭代終止。
Step8:輸出全局最優(yōu)解,代入SVM 模型最終獲得優(yōu)化SVM 模型。
針對DALSO 算法的性能分析,本文選取獅群算法LSO、粒子群算法PSO、遺傳算法GA 與DALSO 在相同實驗環(huán)境下進行對比。各算法參數如表1 所示。
表1 算法參數表
4 種算法參數設置:種群總數=50,最大迭代次數=50,測試函數維度為5 維。在實驗對比中,采用了Sphere、Ackley、Griewank 三個標準測試函數對算法進行評估,分別運行50 次,測試數據結果如表2 所示。
表2 算法性能評估表
從表2 中可以看出,DALSO 算法的平均運行時間比其他算法耗時稍長,原因在于DALSO 算法中加入了局部搜索機制,加深了挖掘來提升尋優(yōu)精度,因此犧牲了一部分的執(zhí)行效率。但是DALSO 算法相對于其他3 種算法而言,有更高的尋優(yōu)精度,說明DALSO 算法不易于陷入局部最優(yōu)解,尋優(yōu)性能得到了一定的提升。
圖2~圖4 分別顯示3 種測試函數中,LSO、PSO、GA、DALSO 四種算法的尋優(yōu)收斂曲線圖。圖中,橫坐標為迭代次數,縱坐標為適應度值的對數lg(())。可以看出,DALSO 算法在3 種測試函數中收斂最快,并且所需迭代次數相對更少。因此,DALSO 算法在對測試函數尋優(yōu)的實驗中以更少的迭代次數獲得了更高質量的解,相比之下有著顯著的優(yōu)越性。
圖2 Ackley 函數收斂圖
圖3 Griewank 函數收斂圖
圖4 Sphere 函數收斂圖
為了驗證基于DALSO 的SVM 算法性能,本文采用UCI 數據集中的Wine、Seeds 和Iris 數據集進行實驗。同時,本文選取了遺傳算法優(yōu)化SVM(GA-SVM)、粒子群算法優(yōu)化SVM(PSO-SVM)、獅群算法優(yōu)化SVM(LSOSVM)三種優(yōu)化模型,用于比較DALSO-SVM 的分類性能,分類結果如表3 所示。
表3 算法分類正確率對比 %
從表3 中可以看出,DALSO-SVM 在對Wine、Seeds、Iris 數據集進行分類時,其平均分類準確率分別達到了91.23%,91.74% 以及98.33%,要高于GA-SVM、PSOSVM 和LSO-SVM,并且分類精度較3 種對比算法可提升6%~11%,提升幅度較大。實驗結果表明,本文提出的DALSO 算法具有較好的尋優(yōu)能力,DALSO-SVM 分類器有著更高的分類精度。
本文針對LSO 算法欠缺局部搜索機制的問題,引入覓食行為機制,提高局部尋優(yōu)能力。針對陷入局部極值的問題,引入差分變異機制,提高子代多樣性,易于跳出局部極值,提高尋優(yōu)精度。最后提出一種改進的獅群算法DALSO,并用于支持向量機的參數優(yōu)化。通過結合覓食行為機制以及差分變異機制提高了算法的性能,獲得了最優(yōu)的參數組合,進而得到優(yōu)化SVM 模型。通過測試函數和UCI 數據集的驗證,結果表明DALSO 算法擁有較好的全局尋優(yōu)能力,而DALSO-SVM 分類模型有更高的分類精度,SVM 模型的泛化能力得到了提高。