特征选择

F-measure:2·recall·precision / ( recall + precision )
ROC曲线:FPR为横坐标,TPR为纵坐标
PR曲线:recall为横坐标,precision 为纵坐标

作者:知乎用户
链接:https://www.zhihu.com/question/28641663/answer/41653367
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

特征选择是特征工程中的重要问题(另一个重要的问题是特征提取),坊间常说:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程尤其是特征选择在机器学习中占有相当重要的地位。
通常而言,特征选择是指选择获得相应模型和算法最好性能的特征集,工程上常用的方法有以下:

  1. 计算每一个特征与响应变量的相关性:工程上常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;
  2. 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征,另外,记得JMLR’03上有一篇论文介绍了一种基于决策树的特征选择方法,本质上是等价的。当选择到了目标特征之后,再用来训练最终的模型;
  3. 通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;
  4. 训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;
  5. 通过特征组合后再来选择特征:如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型,这个问题有机会可以展开讲。
  6. 通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。
    整体上来说,特征选择是一个既有学术价值又有工程价值的问题,目前在研究领域也比较热,值得所有做机器学习的朋友重视。

单变量特征选择 Univariate feature selection

分别选择每一个特征,衡量该特征与label之间的关系,选择出topk个最重要的特征
该方法可以帮助对数据的理解,但是对特征优化,提高模型的泛化能力不一定有效。
from sklearn.feature_selection import SelectKBest,f_classif
selector = SelectKBest(f_classif, k=5)

f_classif(方差分析的F值):评估特征的指标。一般的,f_regression(单因素线性回归试验)用作回归
chi2卡方检验,f_classif等用作分类
k:选择的特征的个数

Sklearn中的f_classif和f_regression

这两个方法的原理和用法
方差分析(ANOVA (analysis of variance))
举个经典的栗子:
我们开发出了一种降血压的药,需要检验这个降血压药品的药效如何。
给定不同剂量,分别是0,1,2,3,4这四个级别的剂量(0剂量表示病人服用了安慰剂),给4组病人服用,在一定时间后测量病人的血压差,在得到数据以后。我们要问,这种新药是不是有显著药效,也就是说病人的血压差是不是显著的不等于0。
我们得到了5个总体 Xi,i=0,1,2,3,4Xi,i=0,1,2,3,4,这五个总体的均值为μiμi,我们假设是:

H0: μ0=μ1=μ2=μ3=μ4=0H0:μ0=μ1=μ2=μ3=μ4=0 
H1:μi中至少有一个不为0H1:μi中至少有一个不为0 

在这里插入图片描述
原博地址

f_calssif

利用f值这个检验统计量,可以判断假设H0是否成立:f值越大,大到一定程度时,就有理由拒绝零假设,认为不同总体下的均值存在显著差异。
假设H0:μS+=μS−,希望拒绝H0
我们可以根据样本的某个特征 xi 的 f 值来判断特征 xi 对预测类别的帮助,f值越大,预测能力也就越强,相关性就越大,从而基于此可以进行特征选择。
另外,我们也可以利用f_calssif方法来计算两个特征之间的相关性,前提是其中一个变量是离散型的类别变量。

f_regression

前面讲了在分类问题中的f值怎么计算,结合方差分析相信能理解其原理。
那么回归问题中,怎么算f值?前面说到一个类别对应一个总体,回归问题中的因变量是连续值,这该怎么办?
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值