MATLAB中SVM的特征重要性排序

MATLAB中可以通过支持向量机递归特征消除(Support Vector Machine Recursive Feature Elimination :SVM-RFE)来获得SVM的特征重要性排序!!!

SVM-RFE算法是根据SVM在训练时生成的权向量w来构造排序系数,每次迭代去掉一个排序系数最小的特征属性,最终得到所有特征属性的递减顺序的排序。
经典的SVM-RFE采用的是线性核函数,推广到非线性情况,这里我们采用的是RBF核函数,此时采用的排序系数为:

整体SVM-RFE(RBF核)算法过程如下:

在每一次循环中,具有最小排序系数的特征将被移除,然后SVM对剩余的特征重新训练以获取新的排序系数。SVM-RFE方法通过迭代执行这一过程,最后得到一个特征排序表,利用该排序列表,定义若干个嵌套的特征子集 来训练SVM,并以SVM的预测正确率评估这些子集的优劣,从而获得最优的特征子集。需要注意的是,排在前面的那些特征,单个并不一定使得SVM分类器获得最好的分类性能,而是多个特征组合在一起,才使得分类器获得最优的分类性能,因此,SVM-RFE算法能选择出互补的特征组合。

在选择最佳特征子集的过程中,我们采用训练集留一交叉检验错误识别率(LooErrorRate)和独立测试集错误识别率(TestErrorRate)两个指标来综合判定最佳的特征子集。由于采用RBF核函数,这就涉及到参数的选取设定(惩罚因子c和RBF核函数参数 ),在SVM-RFE确定特征排序表过程和训练集留一交叉检验过程中,采用固定的参数组 ,在独立测试集识别过程中将使用网格寻参(grid search)的方法来进行参数寻优。整体确定最佳特征子集过程如下表所示:

SVM-RFE 代码实现


function r = SVMRFE(label, data)
% SVM-RFE
% SVM Recursive Feature Elimination (SVM RFE)
% by liyang @BNU Math
% Email:patrick.lee@foxmail.com
% last modified 2010.09.18
%%
n = size(data,2);
s = 1:n;
r = [];
iter = 1;
while ~isempty(s)
%     if mod(iter, 10) == 0
%         str = ['===',num2str(iter),'==='];
%         disp(str);
%         disp('processing .....');
%     end
    X = data(:,s);
    
%     v = 3;
%     [bestCVaccuracy,bestc,bestg] = SVMcgForClass(label, X, ...
%         -8,8,-8,8,v,0.8,0.8,4.5);
%     cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
%     model = svmtrain(label, X, cmd);
    
    model = svmtrain(label, X);
    
    w = model.SVs' * model.sv_coef;
    c = w.^2;
    [c_minvalue, f] = min(c);
    r = [s(f),r];
    ind = [1:f-1, f+1:length(s)];
    s = s(ind);
    
    iter = iter + 1;
end

该程序需要用到以下工具箱:
Libsvm-mat faruto版本下载
libsvm-mat-2.89-3[FarutoUltimate3.0]
http://www.matlabsky.com/thread-9327-1-1.html

===================================================
更多关于SVM的最新整理帖子请看:
关于SVM的那点破事[长期更新整理 by faruto]
http://www.matlabsky.com/thread-10966-1-1.html

相关参考资料:


SVM-RFE相关文献.rar (1.38 MB, 下载次数: 68741)

===================================================
MATLAB 神经网络30个案例分析》视频销售官方地址:
http://video.ourmatlab.com/
视频销售客服QQ:1007911579
===================================================
《MATLAB 神经网络30个案例分析》购买方式:
当当网:
http://product.dangdang.com/prod ... mp;ref=search-1-pub
China-Pub:
http://www.china-pub.com/50688
卓越网:
http://www.amazon.cn/mn/detailAp ... 03HGHB9W&sr=8-1
===================================================

转自http://www.matlabsky.com/forum-viewthread-tid-11568-fromuid-18677.html

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值