原创博文,转载请注明出处!
包裹式特征选择法的特征选择过程与学习器相关,使用学习器的性能作为特征选择的评价准则,选择最有利于学习器性能的特征子集。常用的包裹式特征选择法有递归特征消除法RFE。
# 递归特征消除法
- 递归特征消除法RFE
递归特征消除法的英文全名为recursive feature elimination,简称RFE。首先设定n_features_to_select( 经过特征选择后,特征集中剩余的特征个数),然后使用一个基模型来进行多轮训练,每轮训练后移除若干权值系数的特征,再基于新的特征集进行下一轮训练,直至特征个数为n_features_to_select。sklearn在feature_selection模块中封装了RFE。sklearn中RFE的主要参数为:
* estimator -- 基学习器
* n_features_to_select -- 经过特征选择后,特征集中剩余的特征个数
* step -- 默认1,即每次迭代移除一个特征
* verbose -- 默认0,不显示中间过程
- 结合交叉验证的递归特征消除法RFECV
RFE设定n_features_to_select时存在一定的盲目性,可能使得模型性能变差。比如,n_features_to_select过小时,相关特征可能被移除特征集,信息丢失;n_features_to_select过大时,无关特征没有被移除特征集,信息冗余。在工程实践中,RFE通过CV寻找最优的n_features_to_select,sklearn封装了结合CV的RFE,即RFECV。在RFECV中,如果减少特征会造成性能损失,那么将不会去除任何特征。RFECV适合选取单模型特征,但是计算量较大。sklearn中RFECV的主要参数为:
* estimator -- 基学习器
* step -- 默认1,即每次迭代移除一个特征
* cv – 默认2,即二折交叉验证的方式进行特征选择
* scoring -- 根据学习目标设定的模型评分标准
* verbose -- 默认0,即不显示中间过程
* n_jobs -- 默认1,即不使用并行计算,单核计算
# 递归特征消除法的工程实践
下面程序中,分别使用原始特征集、经过RFE特征选择后的特征集、经过RFECV特征选择后的特征集,训练线性支持向量机,结果显示使用RFECV处理后的特征集训练线性支持向量机模型效果最好。
# -*- coding: utf-8 -*- """ # author: wanglei5205 # b