2. 特征工程之特征选择

1. 前言

当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。

在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征;另一块是我们从业务特征中自己去寻找高级数据特征。我们就针对这两部分来分别讨论。

2. 特征选择的方法

通常来说,从两个方面考虑来选择特征:

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

特征选择方法有很多,一般分为三类:

  1. 过滤法(Filter)比较简单,它按照特征的发散性或者相关性指标对各个特征进行评分,设定评分阈值或者待选择阈值的个数,选择合适特征。上面我们提到的方差筛选就是过滤法的一种。
  2. 包装法(Wrapper),根据目标函数,通常是预测效果评分,每次选择部分特征,或者排除部分特征。
  3. 集成法(Embedded),它先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小来选择特征。

2.1 Filter

2.1.1 方差选择法

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

2.1.2 相关系数法

使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。用feature_selection库的SelectKBest类结合相关系数来选择特征

2.1.3 卡方检验

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

\[ \chi^2=\sum\frac{(A-E}^2}{E} \]

2.1.4 互信息法

经典的互信息也是评价定性自变量对定性因变量的相关性的。
\[ I(X,Y)=∫_X∫_YP(X,Y)log\frac{P(X,Y)}{P(X)P(Y)} \]

2.2 Wrapper

2.2.1 递归特征消除法

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

2.3 Embedded

2.3.1 基于惩罚项的特征选择法

使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维。使用feature_selection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型

2.3.2 基于树模型的特征选择法

树模型中GBDT也可用来作为基模型进行特征选择,使用feature_selection库的SelectFromModel类结合GBDT模型

(欢迎转载,转载请注明出处。欢迎沟通交流: [email protected]

猜你喜欢

转载自www.cnblogs.com/huangyc/p/9967758.html