徐 苗
(山西農(nóng)業(yè)大學 信息科學與工程學院,山西 晉中 030800)
支持向量機(Support Vector Machine, SVM)是20世紀90年代中期基于統(tǒng)計學習理論[1]發(fā)展起來的一種新興機器學習方法,具有分類準確率高和能夠解決小樣本、非線性及高維數(shù)據(jù)劃分問題的特點,在分類問題中得到廣泛應用。然而,SVM中懲罰參數(shù)C和核函數(shù)參數(shù)g的取值對分類準確率有很大影響,這類問題也作為參數(shù)優(yōu)化選取問題成為研究熱點[2]。當前比較常用的參數(shù)優(yōu)化選取方法有:實驗法[1]、網(wǎng)格搜索法[3]、K折交叉驗證法[4]、仿生智能算法參數(shù)尋優(yōu)。
采用仿生智能算法進行參數(shù)尋優(yōu),不必遍歷區(qū)間內(nèi)所有的參數(shù)組也能找到全局最優(yōu)解[5],常見的仿生智能算法包括遺傳算法(Genetic Algorithm, GA)[6]、粒子群算法(Particle Swarm Optimization, PSO)[7]、人工魚群算法(Artificial Fish-Swarm Algorithm, AFSA)[8]等。作為一種新興仿生智能算法,AFSA具有如下優(yōu)點:對極值有較強的全局搜索能力,對搜索空間有較強的自適應能力,收斂速度快,使用靈活[9]。
本文將人工魚群算法用于SVM參數(shù)優(yōu)化選擇中,提供了一種參數(shù)優(yōu)化方法。該方法通過多條人工魚同時進行尋優(yōu),選取其中的最優(yōu)值作為優(yōu)化結果實現(xiàn)了并行處理,提高了SVM的數(shù)據(jù)分類準確率和參數(shù)尋優(yōu)收斂速度。
人工魚群算法(Artificial Fish-Swarm Algorithm, AFSA)[8]采用自下而上的尋優(yōu)策略。首先構造一群人工魚,設計每條人工魚的感知、行為機制,然后魚群中每條人工魚搜索局部尋優(yōu),并在各自組織系統(tǒng)中傳遞消息,最后達到全局最優(yōu)[10]。
該算法主要包括覓食、聚群、追尾三大基本行為,其基本原理是:在食物濃度的誘導下,人工魚會游向食物來源,最終人工魚聚集在食物濃度較大的幾個食物來源附近。魚游向食物來源時遵循兩條原則:一是盡量向鄰近伙伴的中心移動,二是避免過分擁擠[11]。
SVM參數(shù)優(yōu)化對于分類準確率具有重要影響。本文提出了一種基于AFSA的SVM參數(shù)優(yōu)化算法(記為AFSA-SVM),其流程如圖 1所示。具體步驟如下:
輸入:人工魚群的種群規(guī)模size_pop,魚群最大迭代次數(shù)max_gen,覓食最大選擇次數(shù)try_num,擁擠度因子δ,感知距離visual,移動步長step;SVM中懲罰參數(shù)C和核函數(shù)參數(shù)g的取值范圍。
輸出:SVM參數(shù)(C,g)及對應的分類準確率。
步驟1 確定SVM數(shù)據(jù)集。隨機選定SVM相應訓練集和測試集,并將數(shù)據(jù)歸一化到[0,1]區(qū)間。
步驟2 構造人工魚群。每條人工魚是待優(yōu)化SVM參數(shù)組合(C,g);按照輸入C和g的取值隨機初始化人工魚,構成size_pop*2矩陣的魚群。
步驟3 計算初始魚群的食物濃度值。以訓練集的分類準確率最大化為優(yōu)化原則,計算每條人工魚的食物濃度值并比較大小,將最大值作為當前魚群的最優(yōu)值,并保存(C,g)。
步驟4 對魚群中人工魚執(zhí)行行為操作,產(chǎn)生新魚群。每條人工魚按食物濃度值最大化原則執(zhí)行基本行為,缺失執(zhí)行隨機行為,按人工魚的感知距離和移動步長進行隨機游走。
步驟5 選定最優(yōu)食物濃度值。魚群在執(zhí)行行為操作時,計算并保存最優(yōu)的食物濃度值及最優(yōu)值所對應的(C,g)。
步驟6 判斷算法是否達到終止條件。判斷是否達到魚群最大迭代次數(shù)max_gen,若是則輸出最優(yōu)食物濃度值及最優(yōu)值所對應的(C,g);否則迭代次數(shù)加1,并跳轉(zhuǎn)執(zhí)行步驟4。
圖1 AFSA-SVM流程圖
為了驗證本文AFSA-SVM算法效果,本文對比了交叉驗證法SVM參數(shù)優(yōu)化(記為CV-SVM)、基于GA的SVM參數(shù)優(yōu)化(記為GA-SVM)和基于PSO的SVM參數(shù)優(yōu)化(記為PSO-SVM)等算法。
實驗平臺:Intel? CoreTMi7 CPU @3.40GHz,8.00 GB RAM,Windows 7操作系統(tǒng),MATLAB 2016a。
實驗數(shù)據(jù):實驗使用的數(shù)據(jù)集從UCI機器學習知識庫(http://archive.ics.uci.edu/ml/)中選取八個數(shù)據(jù)集,詳見表 1。
表1 實驗所用數(shù)據(jù)集
實驗中采用隨機方式從原始數(shù)據(jù)集中選定訓練集和測試集,具體操作如下:將原始數(shù)據(jù)集的N個樣本按行進行隨機排列;取隨機排列后的前0.5*N(四舍五入)個樣本構成訓練數(shù)據(jù)集,剩余的(N-0.5*N)個樣本構成測試數(shù)據(jù)集。如表1所示,每個數(shù)據(jù)集的不同類別在訓練集和測試集中樣本數(shù)并非均勻分布,但差異較小,不會對分類和測試效果產(chǎn)生影響。
SVM核函數(shù)的作用是對特征進行從低維到高維的轉(zhuǎn)換,實驗使用徑向基核函數(shù)(Radial Basis Function, RBF),具有較高的靈活性。實驗中基本參數(shù)和不同仿生智能算法的參數(shù)取值見表 2。
試探次數(shù)try_num:試探次數(shù)越多,人工魚的覓食行為能力越強,收斂效率越高。在局部極值突出時,應適當減少試探次數(shù)以增加隨機游動概率,克服局部最優(yōu)解。
表2 仿生智能算法參數(shù)取值
擁擠度因子δ:避免人工魚過度擁擠而陷入局部最優(yōu)解。
感知距離visual:對AFSA中三大基本行為均有較大影響,視野越大,人工魚越易發(fā)現(xiàn)全局最優(yōu)并收斂。
移動步長step:在一定范圍內(nèi),步長越大收斂速度越快,但步長過大會出現(xiàn)震蕩現(xiàn)象并影響收斂速度。采用隨機步長在一定程度上防止了震蕩現(xiàn)象,但最優(yōu)固定步長的收斂速度更快,因此,本文使用固定步長來提高收斂速度。
針對表1中八個數(shù)據(jù)集,分別使用CV-SVM、GA-SVM、PSO-SVM、AFSA-SVM方法選取SVM最優(yōu)參數(shù)組合(C,g);然后利用(C,g)和訓練集對SVM進行訓練;最后用得到的模型對測試集進行標簽預測,并記錄相應的分類準確率,結果詳見表3。此外,為進一步分析GA-SVM、PSO-SVM、AFSA-SVM的收斂性,對比了八個數(shù)據(jù)集在相同迭代次數(shù)下的最佳適應度(準確率),如圖2所示。
由表3可知:1) 于同一數(shù)據(jù)集,四種方法選取的最優(yōu)參數(shù)組合各異;2) 于不同數(shù)據(jù)集,同一方法選取的最優(yōu)參數(shù)組合各異;3) 于表1中八個數(shù)據(jù)集,CV-SVM、GA-SVM、PSO-SVM、AFSA-SVM方法的平均分類準確率依次為87.73%、87.70%、87.91%、88.92%。上述結論表明,SVM參數(shù)組合的優(yōu)化選取取決于數(shù)據(jù)集的屬性和使用的選取方法;此外,AFSA-SVM較CV-SVM、GA-SVM、PSO-SVM有更高的分類準確率,表明參數(shù)和數(shù)據(jù)集屬性會影響分類準確率,而AFSA對SVM參數(shù)組合具有較強的尋優(yōu)能力,得到的分類準確率更高。
由圖2可知:在相同迭代次數(shù)下,AFSA-SVM比GA-SVM、PSO-SVM的分類準確率更高,且收斂性好,收斂速度更快,表明多條人工魚并行搜索最優(yōu)參數(shù)組合的性能較強。綜上可知,基于人工魚群算法的SVM參數(shù)優(yōu)化選取性能更佳。
表3 四種方法所選取SVM最優(yōu)參數(shù)對數(shù)據(jù)集分類結果對比表
懲罰參數(shù)C和核函數(shù)參數(shù)g的取值對SVM的分類準確率有重要影響,而AFSA具有較快的收斂速度、不易陷入局部極值、能盡快適應搜索空間等優(yōu)點,因此,本文提出了基于人工魚群算法的SVM參數(shù)優(yōu)化。實驗結果表明,隨機選取訓練集和測試集對參數(shù)的選取有影響,且不同數(shù)據(jù)集的屬性也會對分類準確率有重要影響。但對于不同數(shù)據(jù)集,AFSA-SVM能夠盡快尋優(yōu),且得到的參數(shù)組合對訓練集的分類準確率均較高,證實了本文方法的可行性和高效性,為SVM參數(shù)優(yōu)化選取提供了較好方法。
圖2 三種仿生智能算法的最佳適應度對比圖