劉繼承 解 敬 隋殿雪
(東北石油大學電氣信息工程學院,黑龍江 大慶 163318)
SVM是一種基于統(tǒng)計學習理論的模式識別方法[3],其基本思想是通過核函數(shù)將樣本空間映射到特征空間,在特征空間中尋求原樣本的最優(yōu)分類面,得到輸入變量和輸出結果之間的一種線性或非線性關系[4],即尋找SVM進行模式分類[5]。
對線性可分的樣本集(xi,yi)(i=1,2,…,n,n為學習樣本數(shù)目),xi=Rd表示輸入變量,yi∈[-1,+1]為輸出變量。利用非線性映射φ(·),將輸入空間的數(shù)據(jù)映射到高維特征空間,并構造最優(yōu)分類超平面:
f(x)=w·φ(x)+b=0
(1)
式中b——閾值;
w——權值矢量。
為了使結構風險最小化,分類應滿足以下約束:
yi[(w·xi)+b]-1≥0,i=1,2,…,n
(2)
對于線性不可分的問題,引入松弛變量ξi來構建最優(yōu)超平面。允許在一定程度上違反間隔約束優(yōu)化問題,則有:
(3)
yi[(w·xi)+b]≥1-ξi,ξi≥0,i=0,1,…,n
(4)
此時根據(jù)核函數(shù)理論,應存在核函數(shù)K=(x,x′)=[Φ(x),Φ(x′)],從而使:
(5)
(6)
C≥αi≥0,i=1,2,…,l
(7)
其中,C為誤差的懲罰參數(shù),αi>0對應的點是支持向量。進而構造出決策函數(shù):
b*)
(8)
SVM參數(shù)的確定影響其學習和推廣能力[6]。對于RBF核函數(shù)的SVM來說,其參數(shù)包括懲罰參數(shù)C和核寬度σ。懲罰參數(shù)C是在結構風險和樣本誤差之間的折衷,其值越大,允許的誤差越??;核寬度σ與學習樣本的輸入空間范圍或寬度有關,樣本的輸入空間越大,σ取值越大。
由于蟻群算法全局優(yōu)化參數(shù)的時間較長,為了減少優(yōu)化參數(shù)的時間,筆者有效結合了交叉驗證法和蟻群算法來優(yōu)化SVM參數(shù),最終達到理想的識別效果。
首先將數(shù)據(jù)分成n個同樣大小的子集;然后選取n-1個子集作為訓練樣本,預測那個沒有參加訓練的子集,共進行n次,將全部數(shù)據(jù)中的每個樣本點都預測一遍,但準確率并不是很穩(wěn)定;最后記錄每次預測的(σ,C),挑選準確率相對較高的幾組,運用蟻群算法再次尋優(yōu),得到最佳參數(shù),進而得到滿意的識別結果。
1992年意大利學者Dorigo M首先提出了一種源于蟻群覓食行為的智能仿生蟻群優(yōu)化算法[7],該算法具有智能搜索、全局優(yōu)化、較強的魯棒性、正反饋、分布式計算和易與其他算法結合的特點。筆者通過蟻群優(yōu)化算法優(yōu)化SVM參數(shù)σ、C的具體操作步驟包括:參數(shù)初始化;通過蟻群進行局部和全局搜索,不斷更新信息素,同時將每代全局最優(yōu)解保存下來。
2.2.1參數(shù)初始化
首先,將利用交叉驗證法得到的幾組參數(shù)(σ,C)隨機分配給每只螞蟻,然后對訓練集通過SVM學習得到相應的誤差模型:
Δt(i)=α-Error(i)
(9)
用根據(jù)上述誤差模型預測得到的誤差值來確定螞蟻i的位置信息素:
T0(i)=α-Error(i)
(10)
其中,α=2。由式(10)可知:誤差值越小,螞蟻的信息素越大。
2.2.2局部和全局搜索
根據(jù)螞蟻留下來的信息素的大小確定每只螞蟻下一步的轉移概率:
(11)
其中,BestIndex為得到信息素最大的螞蟻。
建立動態(tài)揮發(fā)因子。在最初階段信息素揮發(fā)因子相對較小,隨著不斷增加進化次數(shù),信息素揮發(fā)因子逐漸增大。信息素的揮發(fā)因子定義為:
(12)
其中,k=0.1;Echo為當前的進化代數(shù);Echomax為蟻群的最大進化代數(shù)。
建立動態(tài)轉移因子。在每輪迭代過程中,根據(jù)螞蟻信息素的大小來確定全局轉移因子p0。設螞蟻數(shù)量為m,計算e-T0(i)(i=1,2,…,m),并對計算結果進行升序排列,得到序列T1(j)(j=1,2,…,m)。當Echo 如果螞蟻的轉移概率小于p0,則進行局部搜索,否則進行全局搜索。在開始搜索過程中,大部分螞蟻進行局部搜索,從而保證螞蟻能搜索到更好的解;在后期搜索中,大部分螞蟻進行全局搜索,避免陷入局部最優(yōu),得到全局最優(yōu)解。 更新信息素。根據(jù)蟻群優(yōu)化得到的SVM參數(shù)進行信息素更新,更新規(guī)則為: T0(i)=(1-ρ)T0(i)+Δt(i) (13) 在每次迭代的過程中,將信息素最大的螞蟻保存下來,然后根據(jù)誤差模型計算誤差值,返回2.2.1小節(jié)進行迭代循環(huán)。 如果迭代的次數(shù)滿足開始設置的要求,則搜索完成,從而得到最佳螞蟻,將最佳螞蟻轉換成SVM參數(shù)σ、C。 根據(jù)確定的SVM參數(shù)σ、C計算相應的目標函數(shù)值,最后進行誤差分析(圖1)[8]。 圖1 蟻群算法的SVM參數(shù)優(yōu)化流程 選取大慶油田某井的測井數(shù)據(jù)中有代表性的屬性來構成樣本的維數(shù)。筆者選取具有代表性的某油井在不同深度中的側向電阻率RT、深側向電阻率RXO、自然電位SP和自然伽馬GR共4個參數(shù)進行巖性預測,輸出為泥巖和砂巖(表1)。 表1 學習樣本集 蟻群算法中參數(shù)的設置:螞蟻數(shù)m=25,揮發(fā)因子ρ=0.7,步長0.2,α=0.5,β=1。SVM參數(shù)C、σ采用二進制編碼,C∈[0,500],σ∈[0.01,100.00]。最大進化代數(shù)為100,最優(yōu)解碼誤差為0.02,最終C=10,σ=0.19。 同時為證明基于改進蟻群算法優(yōu)化SVM參數(shù)的優(yōu)越性,采用交叉驗證法作為參比模型,其優(yōu)化后的SVM參數(shù)C=1,σ=0.01。 預測樣本通過交叉驗證法和改進蟻群算法優(yōu)化參數(shù),兩種方法的識別結果見表2,識別準確率分別為91.666 7%和100%,說明采用改進蟻群算法優(yōu)化SVM參數(shù)的識別準確率高于采用交叉驗證法的識別準確率,證實筆者提出的改進蟻群算法是分類準確率較高的參數(shù)優(yōu)化方法。 表2 交叉驗證法和改進蟻群算法識別結果的比較 SVM參數(shù)的優(yōu)化是當前模式識別研究的一項很有意義的課題,筆者通過采用改進的蟻群算法(即交叉驗證法與蟻群算法的有效結合)對SVM參數(shù)進行優(yōu)化之后,不僅縮短了參數(shù)優(yōu)化的時間,而且有效地改進了其學習性能,提高了學習精度和識別準確率。 [1] Ertekin S,Bottou L,Giles C L.Nonconvex Online Support Vector Machines[J]. IEEE Transactions on Pattern Aanlysis and Machine Intelligence,2010,33(2):368~381. [2] 莊嚴,白振林,許云峰.基于蟻群算法的支持向量機參數(shù)選擇方法研究[J].計算機仿真,2011,28(5):216~219. [3] 陳桂娟,賈春雨,鄒龍慶,等.基于腐蝕圖像與支持向量機的CO2腐蝕類型識別方法研究[J].化工機械,2014,41(6):742~745. [4] 文傳軍,詹永照,陳長軍.最大間隔最小體積球形支持向量機[J].控制與決策,2010,25(1):79~83. [5] 楊智明,彭宇,彭喜元.基于支持向量機的不平衡數(shù)據(jù)集分類方法研究[J].儀器儀表學報,2009,30(5):1094~1099. [6] 王凱,張永祥,姚曉山,等.支持向量機懲罰參數(shù)的自適應調整方法[J].計算機工程與應用,2008,44(26):45~47. [7] 韓虎,黨建武,任恩恩.基于自適應小波支持向量機的圖像去噪研究[C].第七屆全國信號與信息處理聯(lián)合會議暨首屆全國省(市)級圖象圖形學會聯(lián)合年會論文集.蘭州:蘭州交通大學,2008:349~352. [8] 劉瑜,馬良.基于元胞蟻群算法的臥式內壓容器優(yōu)化設計[J].化工機械,2010,37(1):17~20,89.3 仿真實驗
3.1 數(shù)據(jù)源
3.2 算法的參數(shù)設置
3.3 結果與分析
4 結束語