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

支持向量机

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

在这简单介绍一下SVM。
设训练集{(xi,yi)}i=1N\{(x_i,y_i)\}_{i=1}^N{(xi,yi)}i=1N,其中xi∈RD,yi∈{+1,−1}x_i\in R^D, y_i \in \{+1,-1\}xiRD,yi{+1,1}xi为第ix_i为第ixii个样本,N为样本量,D为样本特征数。SVM寻找最优的分类超平面ω⋅x+b=0\omega\cdot x+b=0ωx+b=0
SVM需要求解的优化问题为:
min12∣∣ω∣∣2+CΣi=1Nξis.t.yi(ω⋅xi+b)≥1−ξi,i=1,2,...,Nξi≥0,i=1,2,...,Nmin \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,...,Nmin21ω2+CΣi=1Nξis.t.yi(ωxi+b)1ξi,i=1,2,...,Nξi0,i=1,2,...,N

而原始问题可以转化为对偶问题:
min12Σi=1NΣj=1Nαiαjyiyj(xi⋅xj)−Σi=1Nαis.t.Σi=1Nyiαi=00≤αi≤C,i=1,2,...,Nmin\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,...,Nmin21Σ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=1Nαiyixi\omega=\Sigma_{i=1}^N\alpha_iy_ix_iω=Σi=1Nαiyixi

两分类的SVM-RFE算法

SVM-RFE是一个基于SVM的最大间隔原理的序列后向选择算法。它通过模型训练样本,然后对每个特征进行得分进行排序,去掉最小特征得分的特征,然后用剩余的特征再次训练模型,进行下一次迭代,最后选出需要的特征数。而特征iii的排序准则得分定义为:
ci=wi2c_i=w_i^2ci=wi2
两分类SVM-RFE算法:
输入:训练样本{(xi,yi)}i=1N,yi∈{+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用式min12Σi=1NΣj=1Nαiαjyiyj(xi⋅xj)−Σi=1Nαimin\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_imin21Σi=1NΣj=1Nαiαjyiyj(xixj)Σi=1Nαi训练SVM分类器,得到ω\omegaω
\quad用式ci=wi2,k=1,2,...,∣S∣c_i=w_i^2,k=1,2,...,|S|ci=wi2,k=1,2,...,S计算排序准则得分;
\quad找出排序得分最小的特征p=argminkckp=arg\quad min_kc_kp=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算法:
输入:训练样本集{(xi,vi)}i=1N,vi∈{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在训练样本{(xi,vi)}i=1N\{(x_i,v_i)\}_{i=1}^N{(xi,vi)}i=1N中找出不同类别的两两组合得到最后的训练样本:
\quadXj=X_j=Xj=
\qquad{(xi,yi)}i=1N1+Nj+1,j=1,2,...,l;当vi=1时,yi=1,当vi=j+1,yi=−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{(xi,yi)}i=1N2+Nj−l+3,j=l,...,2l−3;当vi=2时,yi=1,当vi=j−l+3,yi=−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{(xi,yi)}i=1Nl−1+Nl,j=l(l−1)2−1,...,l(l−1)2;当vi=l−1时,yi=1,当vi=l,yi=−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个训练子样本Xj(j=1,2,...,l(l−1)/2)X_j(j=1,2,...,l(l-1)/2)Xj(j=1,2,...,l(l1)/2)
\quad分别用XjX_jXj训练SVM,分别得到ωj(j=1,2,...,l)\omega_j(j=1,2,...,l)ωj(j=1,2,...,l)
\quad计算排序准则得分ck=Σjωjk2(k=1,2,...,∣S∣)c_k=\Sigma_j\omega_{jk}^2(k=1,2,...,|S|)ck=Σjωjk2(k=1,2,...,S)
\quad找出排序准则得分最小的特征p=argminkckp=arg\quad min_kc_kp=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
【黄晓娟,张莉】改进的多类支持向量机递归特征消除在癌症多分类中的应用
【周志华】机器学习

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

  1. 使用特征_R语言-使用caret包实现特征选择:递归特征消除(RFE)算法

    在caret(short for classification and regression training)包中有多个函数可以实现特征选择,总的分为封装法和过滤法.封装法,将特征选择过程与训练过程 ...

  2. python卡方检验筛选特征原理_基于Python的遥感特征筛选—递归特征消除(RFE)与极限树(Extra-Trees)...

    引言 基于前几篇文章关于筛选方法的介绍,本篇同样给大家介绍两种python封装的经典特征降维方法,递归特征消除(RFE)与极限树(Extra-Trees, ET).其中,RFE整合了两种不同的超参数, ...

  3. R语言基于递归特征消除RFE(Recursive Feature Elimination)进行特征筛选(feature selection)

    R语言基于递归特征消除RFE(Recursive Feature Elimination)进行特征筛选(feature selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可 ...

  4. 利用多项式特征生成与递归特征消除解决特征组合与特征选择问题

    目录 项目背景 技术栈 实现 数据 代码 总结 项目背景 无论是对于什么数据都存在两个非常经典的问题:问题一是,数据与标签之间,数据与数据之间的一些实际关系很难搞清楚.有些时候特征A,特征B可能都与标 ...

  5. 使用RFECV、递归特征消除 (Recursive Feature Elimination)进行特征筛选详解及实战

    使用RFECV.递归特征消除 (Recursive Feature Elimination)进行特征筛选详解及实战 包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征. 所 ...

  6. 递归特征消除和K折交叉验证(以决策树回归为例)

    与特征选择不同的是递归特征消除后不会输出权值 导入相应模块 import matplotlib.pyplot as plt import numpy as np import pandas as pd ...

  7. 基于wrapper的特征选择——递归特征消除RFE的python实现

    class sklearn.feature_selection.RFE(estimator, *, n_features_to_select=None, step=1, verbose=0) http ...

  8. 随机森林模型进行递归特征消除的python实现

    核心代码: import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.metrics im ...

  9. RFE递归式特征消除

    RFE递归式特征消除 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 RFE递归式特征消除简介 RFE(Recursive F ...

最新文章

  1. rxswift中hud_如何在RxSwift中运行测试
  2. 人工智能及其应用(第5版).蔡自兴-5章课后习题。【部分答案】
  3. sqlite只能用于android系统,Android 数据库的使用 -- Sqlite
  4. VR开发中性能问题—OculusWaitForGPU
  5. 前端学习(2404):表单验证总结
  6. 使用keras进行深度学习_如何在Keras中通过深度学习对蝴蝶进行分类
  7. 使用python对文档的所有词组统计
  8. 使用Typescript开发(二)
  9. 对架构师认识的误区有哪些?
  10. 蚂蚁金服二面,竟然被问到事务的基本原理?
  11. qt 读取mysql数据库_qt 读取mysql数据库
  12. 韦东山freeRTOS系列教程:入门文档教程+进阶视频教程(全部免费的freeRTOS系列教程、freeRTOS学习路线)
  13. 【metasploit】1 渗透测试与metasploit基础介绍 [PTES|msf|armitage安装]
  14. Pytorch教程之torch.mm、torch.bmm、torch.matmul、masked_fill
  15. Java程序基础——异常
  16. 小米电视/盒子 访问群晖 需要打开 设置“SMB1”
  17. 暖心的坚果 Pro 3发布会,Smartisan OS亮点颇多
  18. 制作动态图表,没有比这个方法更简单的了
  19. Java——使用多线程模拟真实高并发业务并保证安全性(一)
  20. 原生JS事件绑定的三种方式

热门文章

  1. 微软数据库之微软自带数据库分析
  2. AndroidStudio 中 buildSrc/src/main/groovy 的构建
  3. 小红书怎么运营?清法网络分享步骤
  4. Java基础之在窗口中绘图——使用模型/视图体系结构在视图中绘图(Sketcher 1 drawing a 3D rectangle)...
  5. blender 给人物角色绑定骨骼到unity3d
  6. 武汉python培训机构有哪些
  7. 内网安全学习(二)---横向渗透
  8. 基于Android的驾校一点通app
  9. Linux下虚拟机的快照详解
  10. 渗透实战-HttpFileServer漏洞利用