在机器学习中,特征工程对于模型最终的性能影响非常大,好的特征工程可以给模型的性能带了很大的提升。而特征选择使特征工程中最重要的一个环节。
面对特征有成百上千的数据集,应该如何选择我们需要的特征呢?一种方法是基于对业务的理解,通过业务相关领域知识筛选出对预测目标影响最显著的特征;另外一种方法是通过统计学和机器学习特征选择算法筛选特征,这种方法不涉及领域知识,包括过滤法、包裹法和嵌入法三种思想。
1、过滤法
过滤法是在训练机器学习模型之前,通过设定特征评价指标阈值或设定要选择的特征数,来筛选特征。该方法不涉及机器学习模型的训练和评估。
- 方差筛选
该方法是最简单的。方差越大的特征,对模型的影响效果越显著。因此,可以选择方差大于某一阈值的特征来作为最终的特征。 - 相关系数筛选
对于数值型特征和因变量,可以通过计算两者的相关系数,并选择相关系数最大的特征。 - 卡方检验
对于非数值型特征和因变量,可以通过卡方检验的方式,筛选出对因变量影响最显著的特征。 - 互信息(信息增益)
类似与决策树中,选择互信息最大的特征。互信息越大,体现了利用该特征进行分类所得的不确定性信息减小的程度越大。 - 相关统计量方法
Relief是一种著名的过滤式算法,通过设计特征的相关统计量来度量特征的重要性。算法主要过程如下:
(1)对有K个类别的数据集D进行s次抽样,分别得到s个子数据集。
(2)对每个子数据集Ds进行遍历,对每个样本xi,找到该样本同类别k中的最近邻xi,nh,找到除类别k以外其他K-1个类别里的最近邻xi,l,nh(l≠k),然后基于属性j计算:
其中,pl为其他k-1个类别组成的样本集合中,l类别所占的比例。离散值diff的计算,若属性相同为1,不同为0;连续值diff的计算,可以采用将数据规范化到[0,1]区间后的曼哈顿距离。
(3)对所有样本的diff数据进行加和,得到对应于属性j的相关统计量δj。
(4)计算所有子数据集相关统计量δj的平均值,筛选出最大δj对应的特征。
2、包裹法
包裹法将选择的特征,用于机器学习模型目标函数的优化,并将使性能最优化的特征自己作为最终的特征。
- 递归特征消除法RFE(recursive feature elimination)
使用机器学习模型进行多轮训练,每轮学习后,选择权值系数最小的特征进行剔除,利用剩下的特征进行下一轮的训练,最终剩下的特征就是我们筛选的特征 - LVW法
采用拉斯维加斯随机策略来进行特征子集搜索,并以最终分类器的分类误差为特征子集评价原则。主要算法框架如下:
(1)初始化特征子集A*,包含的特征个数d和误差E
(2)随机策略选择特征子集A'
(3)每一轮迭代,利用特征子集A'训练机器学习模型,并交叉验证得到平均误差E'。如果E'<E或者E'=E & d'<d,则A*=A
(4)迭代多次后,最终的A*即为筛选的特征。
3、嵌入法
嵌入法将特征选择与模型训练融为一体,训练数据时使用的是全部的特征。比如L1、L2正则化就是嵌入法的体现。注意,只有可以得到特征系数或特征重要程度的机器学习算法才可以作为嵌入法的基学习器。
此外,除了以上介绍的特征选择方法外,还可以基于对业务的理解选择高级特征,比如基于两个特征进行加减乘除得到具有相应业务含义的高级特征。