libsvm中如何做特征选择
来源:互联网 发布:esp8266连接单片机 编辑:程序博客网 时间:2024/05/12 23:31
上一篇论文被审稿人说特征选择是在交叉验证的外部做的,存在过拟合的问题。所以这一次花了几天的时间弄清楚了交叉验证,libsvm和特征选择三者的关系。
首先libsvm内部是不包含特征选择的。libsvm的model.SV参数是把特征进行了一个区域的标准化,把所有的特征都压缩到一个范围内(默认的应该是[1,-1])。并不是每个样本特征的权重值。在2006年林林智仁教授的一篇文章中对于如何把libsvm和特征选择方法结合起来有了些了解。(本文的方法和图片都摘自这篇文章)1
文章中涉及到的特征选择的方法个人感觉是Embedded方法大类,除此之外还有Filter方法大类和Wrapper方法大类。文中介绍了三种方法F-scroe+SVM,F-score+RF+SVM,RF+RM-SVM。
1、F-score+SVM方法
计算F值;选取几个肉眼可见区别的F值域,然后分别去掉超出域的特征;把数据随机分成训练集合和验证集合,对每个subfeatures训练svm,之后再检验,重复五次,得到一个平均正确率值;进行比较得到最好的一个作为整个实验的特征选择程序;再用确定好的特征训练svm模型,来预测。
2、F-score+RF+SVM方法
这个方法是说随机森林除了可以做分类以外,也可以提供特征的重要程度。但是RF方法不能处理太多的特征,因此在使用RF之前需要按照第一个方法用F-score先做一下预筛选(感觉这个方法太拖沓了,做两次特征的筛选)。
参考上一个方法得到subfeatures;用RF来对所有训练集合进行处理得到特征子集的排序(how?之后再查);用RF来做5重交叉验证;之后去掉一半的不是特别重要的特征,然后重复上一步,这样循环,直到特征的数量很少了为止(什么算少?并没有给出具体值啊);上面这两步循环很多次,最后选取正确率最高的对应的特征值为准。
3、RF+RM-SVM方法
这个方法认为RBF核可以自己进行特征的筛选,因此通过最小化特征的泛化误差来得到特征的重要程度,然后用loo,之后一个平滑的函数来约束边缘,称为radius margin (RM),因此这个方法称为RM-SVM。在做之前需要RF方法进行预筛选。所以这个方法不能用于特征特别多的预测,因此作者在实现的时候只在最后一个样本上进行了实现。
之后是一个各种方法实现的错误率(BER)对比的表:
样本特征情况
这是作者参加一个NIPS的比赛做的,林教授最后是第三名,这是他的结果和第一名结果的对比图:
对此表我有两个疑问,之后再查一下。1、Score,Feat,Probe是如何计算的?2、正确率这么高真的好么,给大神跪了,是我之前做的太渣,还是有特殊的优化方法?
另外,抛开这篇文章,由于libsvm的SVMtrain如果加上了-v 5,那得到的就只是一个正确率值。如果是用五重交叉验证的正确率值作为模型好坏的评判标准,那如何画ROC,中间的数据又没有给出,还是说要向F-score+SVM方法中的,随机分成两份,一份预测模型,另外一份来做ROC,ACC?
这些问题先记录下来,慢慢查。第一篇CSDN博文,个人学习的记录。哪里错了,看到的大神望指点一下。
参考文献:
Chen Y W, Lin C J. Combining SVMs with various feature selection strategies[M]//Feature extraction. Springer Berlin Heidelberg, 2006: 315-324.
- libsvm中如何做特征选择
- libsvm中如何做特征选择
- 【ML--05】第五课 如何做特征工程和特征选择
- 如何进行特征选择?
- 如何进行特征选择?
- 如何进行特征选择
- 工程中特征选择
- 利用随机森林做特征选择
- 用随机森林做特征选择
- 利用随机森林做特征选择
- 如何做选择?
- 机器学习中特征选择
- 如何在weka中使用libsvm
- 如何转成libsvm支持的数据格式并做回归分析
- 在MATLAB中使用libsvm做回归预测
- 深度学习如何做特征工程?
- liblinear 与libsvm选择
- LIBSVM 的参数选择
- xib设置控件圆角
- 人脸数据库总结
- C语言与程序概述
- IT加速营-关于java开发,测试及职业规划的公众号
- 微信小程序-UI控件的使用(4)
- libsvm中如何做特征选择
- java文件IO流体系
- GridControl中添加下拉列表列RepositoryItemComboBox
- RPC in oslo.messaging
- Gogland IDE Run/Debug Configurations 配置说明
- Chrome插件开发笔记
- 小明的故事
- java 学习目录大纲
- FNBJ-报错处理-5