1. 程式人生 > >特徵選擇之支援向量機遞迴特徵消除(SVM-RFE)

特徵選擇之支援向量機遞迴特徵消除(SVM-RFE)

支援向量機遞迴特徵消除(下文簡稱SVM-RFE)是由Guyon等人在對癌症分類時提出來的,最初只能對兩類資料進行特徵提取。它是一種基於Embedded方法。

支援向量機

支援向量機廣泛用於模式識別,機器學習等領域,SVM採用結構風險最小化原則,同時最小化經驗誤差,以此提高學習的效能。詳細的SVM介紹請看我的另一篇博文《 線性支援向量機》

在這簡單介紹一下SVM。
設訓練集{(xi,yi)}Ni=1,其中xiRD,yi{+1,1}xii個樣本,N為樣本量,D為樣本特徵數。SVM尋找最優的分類超平面ωx+b=0
SVM需要求解的優化問題為:

min12||ω||2+C
ΣNi=1ξi
s.t.yi(ωxi+b)1ξi,i=1,2,...,Nξi0,i=1,2,...,N

而原始問題可以轉化為對偶問題:

min12ΣNi=1ΣNj=1αiαjyiyj(xixj)ΣNi=1αis.t.ΣNi=1yiαi=00αiC,i=1,2,...,N
其中,αi為拉格朗日乘子。
最後ω的解為:
ω=ΣNi=1αiyixi

兩分類的SVM-RFE演算法

SVM-RFE是一個基於SVM的最大間隔原理的序列後向選擇演算法。它通過模型訓練樣本,然後對每個特徵進行得分進行排序,去掉最小特徵得分的特徵,然後用剩餘的特徵再次訓練模型,進行下一次迭代,最後選出需要的特徵數。而特徵i

的排序準則得分定義為:

ci=w2i
兩分類SVM-RFE演算法:
輸入:訓練樣本{(xi,yi)}Ni=1,yi{+1,1}
輸出:特徵排序集R
1)初始化原始特徵集合S={1,2,…,D},特徵排序集R=[]
2)迴圈以下過程直至S=[]
獲取帶候選特徵集合的訓練樣本;
用式min12ΣNi=1ΣNj=1αiαjyiyj(xixj)ΣNi=1αi訓練SVM分類器,得到ω
用式ci=w2i,k=1,2,...,|S|計算排序準則得分;
找出排序得分最小的特徵p=argminkck;
更新特徵集R=[p,R];
在S中去除此特徵:S=S/p。

多分類的SVM-RFE演算法

多分類的SVM-RFE演算法其實和兩分類的SVM-RFE演算法類似,只不過在處理多分類時,把類別進行兩兩配對,其中一類為正類,另一類為負類,這樣需訓練N(N1)2個分類器,這就是一對一(One vs. One,簡稱OvO)的多分類拆分策略(詳細請看周志華的《機器學習》的第三章線性模型的多分類學習),這樣就變成了多個兩分類問題(當然,也可以使用一對其餘(OvR)),每個兩類問題用一個SVM-RFE進行特徵選擇,利用多個SVM-RFE獲得多個排序準則得分,然後把多個排序