特征选择之支持向量机递归特征消除(SVM-RFE)

SVM-RFE(支持向量机递归特征消除)是一种特征选择方法,源于两分类的支持向量机。它通过训练SVM并计算特征权重平方和作为排序准则,逐步剔除低得分特征。算法包括两分类和多分类版本,适用于模式识别和机器学习领域的特征提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击下方图片查看HappyChart专业绘图软件

HappyChart专业绘图软件

支持向量机递归特征消除(下文简称SVM-RFE)是由Guyon等人在对癌症分类时提出来的,最初只能对两类数据进行特征提取。它是一种基于Embedded方法。

支持向量机

支持向量机广泛用于模式识别,机器学习等领域,SVM采用结构风险最小化原则,同时最小化经验误差,以此提高学习的性能。详细的SVM介绍请看我的另一篇博文《 线性支持向量机》

在这简单介绍一下SVM。
设训练集 { ( x i , y i ) } i = 1 N \{(x_i,y_i)\}_{i=1}^N {(xi,yi)}i=1N,其中 x i ∈ R D , y i ∈ { + 1 , − 1 } x_i\in R^D, y_i \in \{+1,-1\} xiRD,yi{+1,1} x i 为第 i x_i为第i xi为第i个样本,N为样本量,D为样本特征数。SVM寻找最优的分类超平面 ω ⋅ x + b = 0 \omega\cdot x+b=0 ωx+b=0
SVM需要求解的优化问题为:
m i n 1 2 ∣ ∣ ω ∣ ∣ 2 + C Σ i = 1 N ξ i s . t . y i ( ω ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , N ξ i ≥ 0 , i = 1 , 2 , . . . , N min \quad \frac{1}{2}||\omega||^2+C\Sigma_{i=1}^N\xi_i\\ s.t.\quad y_i(\omega\cdot x_i+b)\ge 1-\xi_i,i=1,2,...,N\\ \xi_i\ge0,i=1,2,...,N min21∣∣ω2+CΣi=1Nξis.t.yi(ωxi+b)1ξi,i=1,2,...,Nξi0,i=1,2,...,N

而原始问题可以转化为对偶问题:
m i n 1 2 Σ i = 1 N Σ j = 1 N α i α j y i y j ( x i ⋅ x j ) − Σ i = 1 N α i s . t . Σ i = 1 N y i α i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N min\quad \frac{1}{2}\Sigma_{i=1}^N\Sigma_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\Sigma_{i=1}^N\alpha_i\\ s.t.\quad \Sigma_{i=1}^Ny_i\alpha_i=0\\ 0\le \alpha_i\le C,i=1,2,...,N min21Σi=1NΣj=1Nαiαjyiyj(xixj)Σi=1Nαis.t.Σi=1Nyiαi=00αiC,i=1,2,...,N
其中, α i \alpha_i αi为拉格朗日乘子。
最后 ω \omega ω的解为:
ω = Σ i = 1 N α i y i x i \omega=\Sigma_{i=1}^N\alpha_iy_ix_i ω=Σi=1Nαiyixi

两分类的SVM-RFE算法

SVM-RFE是一个基于SVM的最大间隔原理的序列后向选择算法。它通过模型训练样本,然后对每个特征进行得分进行排序,去掉最小特征得分的特征,然后用剩余的特征再次训练模型,进行下一次迭代,最后选出需要的特征数。而特征 i i i的排序准则得分定义为:
c i = w i 2 c_i=w_i^2 ci=wi2
两分类SVM-RFE算法:
输入:训练样本 { ( x i , y i ) } i = 1 N , y i ∈ { + 1 , − 1 } \{(x_i,y_i)\}_{i=1}^N, y_i \in \{+1,-1\} {(xi,yi)}i=1N,yi{+1,1}
输出:特征排序集R
1)初始化原始特征集合S={1,2,…,D},特征排序集R=[]
2)循环以下过程直至S=[]
\quad 获取带候选特征集合的训练样本;
\quad 用式 m i n 1 2 Σ i = 1 N Σ j = 1 N α i α j y i y j ( x i ⋅ x j ) − Σ i = 1 N α i min\quad \frac{1}{2}\Sigma_{i=1}^N\Sigma_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\Sigma_{i=1}^N\alpha_i min21Σi=1NΣj=1Nαiαjyiyj(xixj)Σi=1Nαi训练SVM分类器,得到 ω \omega ω
\quad 用式 c i = w i 2 , k = 1 , 2 , . . . , ∣ S ∣ c_i=w_i^2,k=1,2,...,|S| ci=wi2,k=1,2,...,S计算排序准则得分;
\quad 找出排序得分最小的特征 p = a r g m i n k c k p=arg\quad min_kc_k p=argminkck;
\quad 更新特征集R=[p,R];
\quad 在S中去除此特征:S=S/p。
#多分类的SVM-RFE算法
多分类的SVM-RFE算法其实和两分类的SVM-RFE算法类似,只不过在处理多分类时,把类别进行两两配对,其中一类为正类,另一类为负类,这样需训练 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N1)个分类器,这就是一对一(One vs. One,简称OvO)的多分类拆分策略(详细请看周志华的《机器学习》的第三章线性模型的多分类学习),这样就变成了多个两分类问题(当然,也可以使用一对其余(OvR)),每个两类问题用一个SVM-RFE进行特征选择,利用多个SVM-RFE获得多个排序准则得分,然后把多个排序准则得分相加后得到排序准则总分,以此作为特征剔除的依据,每次迭代消去最小特征,直到所有特征都被删除。
多分类SVM-RFE算法:
输入:训练样本集 { ( x i , v i ) } i = 1 N , v i ∈ { 1 , 2 , . . . , l } , l 为类别数 \{(x_i,v_i)\}_{i=1}^N, v_i \in \{1,2,...,l\},l为类别数 {(xi,vi)}i=1N,vi{1,2,...,l},l为类别数
输出:特征排序集R
1)初始化原始特征集合S={1,2,…,D},特征排序集R=[]
2)生成 l ( l − 1 ) 2 \frac{l(l-1)}{2} 2l(l1)个训练样本:
\quad 在训练样本 { ( x i , v i ) } i = 1 N \{(x_i,v_i)\}_{i=1}^N {(xi,vi)}i=1N中找出不同类别的两两组合得到最后的训练样本:
\quad X j = X_j= Xj=
\qquad { ( x i , y i ) } i = 1 N 1 + N j + 1 , j = 1 , 2 , . . . , l ; 当 v i = 1 时 , y i = 1 , 当 v i = j + 1 , y i = − 1 {\{(x_i,y_i)\}_{i=1}^{N_1+N_{j+1}},j=1,2,...,l;当v_i=1时,y_i=1,当v_i=j+1,y_i=-1} {(xi,yi)}i=1N1+Nj+1,j=1,2,...,l;vi=1,yi=1,vi=j+1,yi=1
\qquad { ( x i , y i ) } i = 1 N 2 + N j − l + 3 , j = l , . . . , 2 l − 3 ; 当 v i = 2 时 , y i = 1 , 当 v i = j − l + 3 , y i = − 1 {\{(x_i,y_i)\}_{i=1}^{N_2+N_{j-l+3}},j=l,...,2l-3;当v_i=2时,y_i=1,当v_i=j-l+3,y_i=-1} {(xi,yi)}i=1N2+Njl+3,j=l,...,2l3;vi=2,yi=1,vi=jl+3,yi=1
⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ \qquad\cdots \qquad\cdots\qquad\cdots\qquad\cdots\qquad\cdots\qquad\cdots\qquad\cdots\qquad\cdots
\quad { ( x i , y i ) } i = 1 N l − 1 + N l , j = l ( l − 1 ) 2 − 1 , . . . , l ( l − 1 ) 2 ; 当 v i = l − 1 时 , y i = 1 , 当 v i = l , y i = − 1 {\{(x_i,y_i)\}_{i=1}^{N_l-1+N_{l}},j=\frac{l(l-1)}{2}-1,...,\frac{l(l-1)}{2};当v_i=l-1时,y_i=1,当v_i=l,y_i=-1} {(xi,yi)}i=1Nl1+Nl,j=2l(l1)1,...,2l(l1);vi=l1,yi=1,vi=l,yi=1
3)循环一下过程直至S=[]:
\quad 获取用l个训练子样本 X j ( j = 1 , 2 , . . . , l ( l − 1 ) / 2 ) X_j(j=1,2,...,l(l-1)/2) Xj(j=1,2,...,l(l1)/2)
\quad 分别用 X j X_j Xj训练SVM,分别得到 ω j ( j = 1 , 2 , . . . , l ) \omega_j(j=1,2,...,l) ωj(j=1,2,...,l)
\quad 计算排序准则得分 c k = Σ j ω j k 2 ( k = 1 , 2 , . . . , ∣ S ∣ ) c_k=\Sigma_j\omega_{jk}^2(k=1,2,...,|S|) ck=Σjωjk2(k=1,2,...,S)
\quad 找出排序准则得分最小的特征 p = a r g m i n k c k p=arg\quad min_kc_k p=argminkck
\quad 更新特征集R=[p,R];
\quad 在S中去除此特征S=S/p.

参考
【Isabelle Guyon, Jason Weston et.al】Gene Selection for Cancer Classification using Support Vector Machines
【黄晓娟,张莉】改进的多类支持向量机递归特征消除在癌症多分类中的应用
【周志华】机器学习

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值