?

改進人工蜂群算法優化支持向量機及應用

2021-02-25 07:48黃英雙
計算機應用與軟件 2021年2期
關鍵詞:蜜源適應度蜂群

黃英雙 曹 輝

(大連海事大學輪機工程學院 遼寧 大連 116026)

0 引 言

支持向量機(SVM)作為一種有監督的機器學習方法,是基于統計學的VC維理論和結構風險最小化原理的樣本學習方法,它可以解決小樣本學習、高維及非線性問題,在模式識別和分類上具有良好的泛化性能。但在選擇其模型參數時(包括懲罰因子C、核函數類型和核函數參數)存在許多問題,如果選取不當,會產生較差的分類結果。文獻[1]采用遺傳算法(GA)對SVM進行模型參數的優化,并應用于軸承的故障檢測,在此研究中,首次通過實驗將SVM和BP神經網絡的故障檢測進行詳細對比,驗證了SVM具有較高的工程使用價值。文獻[2]為了能夠找到合適的SVM參數,利用固定的步長來進行網格搜索,但在實際運用過程中,當參數較多時存在計算復雜、耗時長等問題。文獻[3]提出的SVM參數優化方法為交叉驗證算法,由于其得到的參數使SVM的分類精確度較高,從而成為目前SVM的標準主流參數優化方法,本文將利用交叉驗證算法優化的標準支持向量機模型作為本文提出方法的比較對象之一。文獻[4]的SVM參數尋優方法是布谷鳥搜索算法,尋優得到全局最優解,從而可以構建具有最優參數的支持向量機模型,并應用于變壓器的故障診斷,但其在尋優過程中參數的尋優范圍不好確定,如果設置不當則容易造成過學習狀態,從而導致診斷正確率降低。在智能優化算法領域,Karaboga等[5]提出一種新的群體智能優化算法——人工蜂群(Artificial Bee Colony,ABC)算法,并應用于訓練人工神經網絡,取得較好的效果。文獻[6]提出基于交叉突變人工蜂群算法的支持向量機的參數優化方法,引入交叉突變算子對種群進行劃分,但并沒有對原始人工蜂群算法的搜索公式進行改進。文獻[7]提出面向觀察蜂的免疫機制和面向偵察蜂的改進逃逸機制來改進人工蜂群算法,但也沒有對算法的搜索公式進行改進。文獻[8]利用人工蜂群算法優化SVM的參數,構建ABC-SVM(人工蜂群優化支持向量機)對燃氣輪機葉片進行診斷,取得較好的診斷效果。

本文提出一種利用經過改進的人工蜂群算法優化支持向量機兩個參數的方法,將原始人工蜂群算法的搜索公式進行改進,從而得到最佳的支持向量機分類模型,用UCI數據集驗證了該模型的分類效果,并應用于船舶壓載水系統的故障診斷。

1 支持向量機

SVM的基本思想是:對于輸入空間中的非線性可分的數據,將其通過非線性映射函數(核函數)映射到高維空間中,再在高維空間中進行線性分類,其目的是希望在高維空間中能夠構造出一個可以對數據進行分類的最優超平面[9]。求解過程中引入拉格朗日乘子,對不定等式約束下的二次函數極值問題進行求解,求得的分類超平面可以使得幾類數據之間的間隔達到最大化,再映射回原始輸入空間,達到在原始輸入空間中可以進行非線性分類的目的。分類函數為:

(1)

式中:sign表示取表達式的符號(正或負);訓練集T={(x1,y1),(x2,y2),…,(xN,yN)},yi∈Y={-1,1},i=1,2,…,N;αi為拉格朗日乘子;b是根據訓練數據確定的閾值;C為懲罰因子,其作用是可以對分類錯誤的樣本的懲罰程度進行控制,對最大分類間隔和最小分類錯誤的樣本進行折中,C越高,說明越不能容忍誤差的存在,容易過擬合,C越小,容易欠擬合,C過大或過小,泛化能力變差;K(x·xi)為核函數,在目前的大多數研究中,經常使用的核函數有多項式核函數、徑向基(簡稱RBF)核函數、雙曲正切(Sigmoid)核函數等。由于RBF核函數具有收斂速度快、非線性映射、參數少等優點,在實際問題中應用較為廣泛[8]。本文選取的SVM模型非線性映射函數為RBF核函數,其表達式為:

K(xi,xj)=exp(-‖xi-xj‖2/2σ2)

(2)

式中:σ為核函數參數。σ的值會影響支持向量的數量,支持向量機的訓練和預測在速度和結果上,會受到支持向量數量的影響。

2 人工蜂群算法及改進

2.1 人工蜂群算法

人工蜂群算法主要是模擬自然界中的蜜蜂采蜜過程。在ABC算法中,將存在于解空間中的各種可能解作為蜜蜂將要尋找的蜜源,其質量的好壞是利用適應度值來衡量。本文中共設了i個蜜源,第i個蜜源的表達式為xi=(xi1,xi2,…,xiD),i=1,2,…,N,N表示蜜源的總個數,D表示待求問題解的維數。再引入三種蜜蜂:采蜜蜂、跟隨蜂和偵察蜂,采蜜蜂同具體的蜜源聯系到一起,其數量與蜜源個數相等,在尋優時,三種蜜蜂的工作過程如下:

1)N個初始解即N個采蜜蜂和蜜源被隨機產生。針對所有的初始解,蜜蜂開始循環進行搜索,為了比較新的蜜源和原來蜜源哪個的質量較好,需要計算新解的適應度,如果新解的適應度值高于原始解的適應度值,則采蜜蜂利用新解來替換原始解[10]。采蜜蜂的搜索公式為:

new_xid=xid+r(xid-xkd)

(3)

式中:new_xid為第i個新蜜源中第d維的值;xid為第i個蜜源第d維的值;r為[-1,1]之間的隨機數;k為除第i個蜜源外的任意蜜源。

2) 在完成搜索任務后,采蜜蜂將回到蜂巢。跟隨蜂在得到采蜜蜂傳遞的蜜源信息后,選擇一個蜜源位置,這種選擇是根據與適應度值相關的概率做出的,然后跟隨蜂和采蜜蜂改變位置,并計算新的候選蜜源的適應度值,如果新解的適應度值大于原始解,則用新的解替代原來的解。蜜源被選擇的概率計算公式為:

(4)

式中:pi為第i個蜜源被選中的概率;fiti為第i個蜜源的適應度值;N為蜜源的總個數。

針對原始解的鄰域,跟隨蜂會與采蜜蜂進行相同方式的搜索,同為式(3)。

3) 設定值limit將會控制蜜源的改進次數,當某個蜜源的改進次數較大時,一旦超過limit,將會放棄該位置對應的解,該解被舍棄后,該位置采蜜蜂將進行角色轉變,變為偵察蜂,將會繼續對新的蜜源進行搜索,其公式為:

(5)

式中:xij為第i個蜜源的第j維的值,j∈{1,2,…,D}。

適應度值的計算是十分關鍵的,在標準的人工蜂群算法中,對于蜜源適應度值的計算公式為[8]:

(6)

式中:fi為第i個蜜源的目標函數值。

2.2 改進人工蜂群算法

通過觀察傳統的人工蜂群算法可以發現,采蜜蜂確定下一次蜜源搜索位置的方法是利用貪婪機制比較前后兩次搜索中對應蜜源的適應度值。食物源搜索公式決定著采蜜蜂是否能夠快速準確地找到新的蜜源。式(3)在進行搜索時并沒有考慮迭代前后位置的優劣比較,采蜜蜂在搜索的整個過程中獲得的位置信息,只有自己的歷史最優位置和當前的位置信息,然而對于全局的最優考慮是不足的,造成的結果是使算法的搜索能力欠缺,缺點主要有:迭代隨機性大、更新速度慢、易陷入局部最優解等。針對這一問題,在式(3)中引入全局搜索因子[11],在每次搜索過程中,將當前具有最優適應度的蜜源信息加入到下一次位置更新中,將式(3)改進為:

new_xid=xid+r(xmd-xkd)+φ(xbest,d-xid)

(7)

式中:k、m和i都是隨機產生的隨機數,k、m互不相等且都不等于i;φ是[0,1]上的隨機數;xbest,d代表的是目前食物豐富度(適應度值)最高的蜜源,在人工蜂群算法尋優的第一次循環時,其是初始化的N個蜜源中適應度值最大的蜜源。

式(7)在式(3)的基礎上加入了全局搜索因子φ(xbest,d-xid),φ是用于約束尋優幅度的影響因子。改進的人工蜂群算法可以使蜜蜂的搜索具有方向性,加快算法收斂速度。

3 支持向量機參數的優化

在利用IABC算法尋優時,將懲罰因子C和核函數參數σ作為蜜源(C,σ),三種類型的蜜蜂根據自己的任務對蜜源進行尋優,得到最優的蜜源(C,σ),再利用得到的最優蜜源構建IABC-SVM分類模型。圖1為IABC算法優化SVM的流程。

圖1 IABC算法優化SVM參數流程

優化的過程如下:

1) 初始化IABC算法中的控制參數,主要包括:蜂群規模;蜜源的數量,其值與采蜜蜂的數量是相等的;蜜源最大循環次數;最大迭代次數;在選取懲罰因子和核函數參數時取值范圍的上下界。

2) 設置IABC算法中的適應度函數。適應度函數利用式(6)計算,由于優化SVM參數的目的是為了提高SVM的分類正確率,因此目標函數值選取為:

fi=1-Vacc

(8)

式中:Vacc為SVM的分類正確率。

3) 三種蜜蜂按照各自的任務對蜜源(C,σ)進行尋優工作,搜索公式為改進后的式(7),三種蜜蜂利用適應度函數計算適應度值,對尋找到的所有可能的解進行優選。

4) 根據設定值limit來判定蜜源的循環次數是否超出限定,如果循環次數已經大于limit,則原來的蜜源由新產生的蜜源來代替,新的蜜源是按照式(5)產生的。當前得到的蜜源為搜索到的最優蜜源,記錄下來,并根據循環條件判斷其是否滿足終止條件。

5) 將得到的全局最優蜜源,即最優(C,σ)用于SVM模型的構建。

4 IABC算法優化SVM的數據驗證

本文采用UCI數據庫中的標準數據集對模型性能進行測試。兩個標準數據集的屬性見表1,其中的訓練集樣本和測試集樣本的選取都是隨機的。

表1 數據集屬性

針對訓練和測試工具的選取問題,本文模型選用LIBSVM工具箱在MATLAB中進行編程對算法進行實現,并采用傳統ABC算法優化的SVM模型和通過交叉驗證方法(Cross Validation,CV)來選取參數的傳統的支持向量機模型,在分類正確率和算法運算時間等方面進行對比分析[12]。查閱相關參考文獻,并經過多次對比實驗分析[6-7],將IABC算法的蜂群規模設置為20,蜜源個數設置為蜂群規模的兩倍為40,蜜源最大循環次數設定值limit設置為100,最大迭代次數設置為100,參數C和σ的搜索區間為[0.01,100],這些參數初始值得到的實驗結果較好,如表2-表5所示。

表2 Wine數據集上3種算法得到的參數

表3 BreastTissue數據集上3種算法得到的參數

表4 3種算法測試結果 %

表5 3種算法的運算時間對比 s

從表2-表5的實驗結果可以看出:

1) ABC算法優化的支持向量機在分類正確率方面要優于傳統的CV-SVM支持向量機模型。而經過改進的IABC-SVM,分類正確率在ABC-SVM基礎上又有提高。這證明了IABC算法優化支持向量機的有效性。

2) 為了排除其他因素影響實驗結果,表5為每種算法在實驗條件相同的情況下,運行3次所得的運算時間平均值。由于樣本數量有限,導致算法運算時間較短,IABC-SVM的運算時間比ABC-SVM的運算時間少近3 s,如果樣本數量加大,時間將減少更多,證明了IABC算法在收斂速度上有所提高,在尋優方面要優于傳統的ABC算法。

5 基于IABC算法應用

近年來,船舶的智能化成為船舶行業的熱點,將人工智能算法應用于船舶系統的故障診斷已經成為一種趨勢。壓載水系統作為調整船舶浮態的重要輔助系統,其主要作用是可以使船舶的穩心高度處于適當的位置[13]。在壓載水系統中的各設備布置比較分散,管路布局非常復雜,閥門的數量眾多,其故障部位不易察覺和查找,找到一種方法能夠實現對壓載水系統出現的故障進行正確的診斷是十分必要的。利用SVM對壓載水系統進行故障診斷研究的過程如圖2所示[14]。

圖2 SVM故障診斷過程

5.1 數據采集

由于實船中壓載水系統的故障數據獲取比較困難,本文利用C#編程語言和WPF技術在Visual Studio 2013中對某集裝箱船的壓載水系統進行仿真,制作了壓載水系統模擬器,通過在模擬器中設置故障來獲取壓載水系統故障數據。

本文主要研究5種系統運行狀態,包括正常狀態和4種故障狀態,分別是系統正常運行、海底門濾器臟堵、壓載水泵軸瓦磨損、閥門卡阻和管段泄漏[15],將各類型編號為1~5,其中壓載水泵軸瓦的磨損量在30%以上視為故障狀態,海底門濾器臟堵程度達到40%以上為故障狀態。本文以壓載水經低位海底門吸入打到壓載水艙典型工況為例,在模擬器中設置上述故障。圖3表示的是上述工況的數據監測點。根據該工況特點,及各種故障發生時系統可能會發生改變的參數,一共設置了13個數據監測點,包含8個壓力監測點P1、P2、P3、P4、P5、P6、P7、P8,4個流量監測點:Q1、Q2、Q3、Q4,泵電機的輸出功率mP。壓力單位為bar,流量單位為m3/h,功率單位為kW。本文分別以圖3中1號壓載水泵軸瓦磨損、1號濾器堵塞故障、閥V12卡阻、管段交叉點d2泄露為例,通過分別設置各個故障狀態來采集各個監測點的數據,作為系統故障診斷的特征數據。

圖3 數據監測點布置圖

支持向量機可以有效解決小樣本學習問題,參照文獻[16]中的樣本選取數量,本文共選取300個樣本,每種類型的樣本個數為60。表6和表7中為部分原始數據樣本,編號1-5為5種狀態類型。

表6 壓載水系統故障診斷部分原始數據樣本1

表7 壓載水系統故障診斷部分原始數據樣本2

為了增強算法的魯棒性,給300組數據樣本加入隨機噪聲,加噪聲的公式為:

D(i,j)=D(i,j)+meanD(I)×0.02×(2×rand-1)

(9)

式中:i=1,2,…,300;j=1,2,…,13;meanD(I)為每一個故障特征參數300個數據樣本的平均值;2×rand-1表示取-1~1之間的隨機數。這樣可以得到加入噪聲之后的新的數據集。

5.2 建立故障診斷模型及診斷結果分析

將加入噪聲后的數據集進行歸一化處理,本文數據歸一化采用的處理公式為:

(10)

式中:xi代表所需處理的數據;xmin表示同一故障特征參數中的最小值;xmax表示同一故障特征參數中的最大值;x表示歸一化后的數據。將每種狀態下的數據樣本分為訓練集和測試集。為了測試本文算法的有效性,將樣本數據分為訓練集和測試集[17],每種類型樣本隨機選取40個作為訓練集樣本,20個作為測試集樣本。

1) 傳統支持向量機模型的故障診斷。傳統的支持向量機是采用交叉驗證方法尋找參數的CV-SVM模型,將歸一化處理后的數據輸入到CV-SVM進行故障診斷。表8為CV-SVM模型的參數取值及不同工況的故障診斷正確率。圖4為傳統的CV-SVM模型的故障診斷結果。

表8 CV-SVM故障診斷正確率 %

圖4 CV-SVM的故障診斷結果

2) IABC-SVM故障診斷。模型的輸入為經過歸一化處理后的數據,將各故障類型所對應的編碼標簽作為輸出,經過多次對比實驗,將算法的蜂群規模設置為20,蜜源個數設置為蜂群規模的一半為10,蜜源最大循環次數設定值limit設置為100,最大迭代次數設置為100,參數C和σ的搜索區間為[0.01,100]。分別利用ABC和IABC算法對SVN的參數進行尋優,得到最優的參數后構建故障診斷模型。圖5和圖6為兩種模型對壓載水系統進行故障診斷的結果。表9為兩種算法得到的SVM的參數及兩種模型的故障診斷正確率。在實驗條件相同的情況下,為了排除其他因素對實驗結果造成影響及結果的偶然性,進行10次重復實驗,取10次實驗的平均診斷正確率。

圖5 ABC-SVM的故障診斷結果

圖6 IABC-SVM的故障診斷結果

表9 兩種模型的故障診斷正確率

可以看出,IABC-SVM用于壓載水系統的故障診斷與傳統的CV-SVM和ABC-SVM相比,可以獲得較高的分類正確率,而且根據圖7和圖8的參數尋優過程可以看出,改進后的IABC算法相比于傳統的ABC算法在參數尋優時,因為全局搜索因子的引入,收斂速度加快,并且能夠跳出局部最優解。

圖7 ABC-SVM參數尋優過程

圖8 IABC-SVM參數尋優過程

6 結 語

針對支持向量機的參數選取不當會使其分類正確率降低的問題,本文利用改進后的人工蜂群算法對支持向量機的參數進行優化,克服了其參數選擇的盲目性,在傳統的人工蜂群算法的搜索公式中引入了全局搜索因子,使搜索具有方向性。通過UCI數據集中的數據對IABC-SVM模型的性能進行了驗證,并將該方法應用于壓載水系統的故障診斷中,實驗結果表明,IABC-SVM模型的故障診斷正確率要高于傳統的CV-SVM和ABC-SVM模型,IABC算法在參數尋優過程中,收斂速度加快,并且能夠跳出局部最優解,證明了其有效性。在本文的研究過程中發現,尋找到更加有效的方法來確定人工蜂群算法中的各個參數,將會在算法效率和實用價值方面取得進一步的提高。

猜你喜歡
蜜源適應度蜂群
改進的自適應復制、交叉和突變遺傳算法
林下拓蜜源 蜂業上臺階
指示蜜源的導蜜鳥
啟發式搜索算法進行樂曲編輯的基本原理分析
蜜蜂采花蜜
基于人群搜索算法的上市公司的Z—Score模型財務預警研究
蜂群春管效果佳
蟄伏為王
蟄伏為王
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合