几种特征选择的方法

当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:

  • 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
  • 特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除方差法外,本文介绍的其他方法均从相关性考虑。

根据特征选择的形式又可以将特征选择方法分为3种:

  • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
  • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
  • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

  我们使用sklearn中的feature_selection库来进行特征选择。

$Filter$

  • 优点:快速,主需要统计知识
  • 缺点:难以挖局特征之间的组合效应

方差选择法

使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。

相关系数法

使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。

卡方检验

经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:

其中$A$为实际值,$E$为理论值。$\chi^2$用于衡量两个变量实际值与联合分布理论值的差异程度(也就是卡方检验的核心思想),包含了一下两个信息:

  • 实际值与理论值偏差的绝对大小
  • 差异程度与理论值的相对大小

这个统计量含义就是自变量对因变量的相关性

可以这么理解,对于这两个特征的联合分布矩阵,这两个变量不相关,那么通过边缘概率求得的期望值($E$)就应该越接近于真实值($A$),$\chi^2$越小;相反,这两个变量越相关,通关边缘概率分布求得的期望值($E$)跟真实值($A$)的差距就应该越大,$\chi^2$越大。

因此$\chi^2$越大,说明自变量与因变量相关性越强

互信息法

不多说

$Wrapper$

  • 优点:直接面向算法优化,不需要太多知识
  • 缺点:庞大的搜索空间,需要定义启发式策略

递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。

$Embedded$

  • 优点:快速,并且面向算法
  • 缺点:需要调整结构和参数配置

基于惩罚项的特征选择法

使用带$L1$惩罚项的基模型,除了筛选出特征外,同时也进行了降维。

$Lasso$的参数$\lambda$越大,参数的解越稀疏,选出的特征越少。

L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要。故,可结合L2惩罚项来优化。具体操作为:若一个特征在L1中的权值为1,选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合,将这一集合中的特征平分L1中的权值.

基于树模型的特征选择法

各种树模型可以输出特征的重要性

0%