结合交叉验证之递迴特徵删除简介(recursive feature elimination with cross-val

前言

结合交叉验证之递迴特徵删除(recursive feature elimination with cross-validation, RFECV)属于特徵筛选(feature selection)中的包裹式(wrapper)。

动机

昨天跑了RFECV发现效果不错,想知道它的原理但网路上都只介绍RFE,而关于RFECV的介绍都草草带过,所以我直接看sklearn代码整理出流程,并且跟大家分享

什么是包裹式

包裹式是由两个部件组成建立:

投放策略:根据前一次迭代的结果,决定本次应投入哪些特徵到模型中进行训练预测模型:可以评估特徵与目标间关係的模型

RFE

在介绍RFECV前,需要先科普一下什么是RFE。首先,当我们準备好数据并且决定要用什么模型后,首先将所有特徵灌入模型进行训练,然后删除step个回归係数最小的特徵;紧接着用剩余特徵重新训练一个新模型后再删除step个回归係数最小的特徵,如此反覆循环直到剩余特徵数目等于我们的期望数字,就是这么简单,流程图在下面:
http://img2.58codes.com/2024/20124766fwxzdXVwKW.png

RFECV

RFECV其实就是RFE结合KFOLD。实际计算方法为,将数据分割为K-FOLD个,然后分别执行一次RFE(砍到剩1个特徵),须注意我们这次需要记下每次循环所得到的预测误差。
举个例子:

step1. 我们有一个总特徵数n=16的数据,令每次删除特徵数step=1,将数据分成3个FOLD
step2. 因为想知道k=1~16相应的最佳组合,因此我们必须强制令每个RFE的关键特徵数目k=1
step3. 对每个FOLD执行RFE,然后要记得每次迭代都要记录预测误差,因为特徵是从16=>15=>14=>...=>2=>1,所以每个RFV会有16个预测误差,三个FOLD就有3x16个预测误差(误差矩阵)
step4. 将误差矩阵取平均,会得到1x16的数列(平均误差矩阵),gridscore就是从这来的
step5. 从平均误差矩阵中找出误差最小相应的特徵数目a,这也是sklearn RFECV会帮我们自动挑选最佳特徵数目的原因
step6. 用完整的数据跑一次RFE(令k=a),完工

结论:

要使用RFE和RFECV的前提是,我们需要得到每一特徵相应的係数或者重要性,如果无法得到就不能执行RFE或者RFECV。关于这点sklearn也有提到,更白话的就是如果无法取得coef或者importance就会跳异常。因此如果用SVM(kernel!=linear)就会跳异常;反之LR、Lasso、Ridge、RF等等的都可以用如果某些採用RFE方法的研究文献没有特别介绍用哪个预测模型,因为第一篇RFE就是用SVM当预测模型,所以假定预测模型为SVM通常RFE都是用作分类任务的特徵筛选查了一下博硕士毕业论文,发现用RFE的人很少。这篇的算法流程图比我更直白,各位可以下载来看一下。这篇则是架构图很酷

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章