如何做特征选择¶
1 引言¶
特征工程与特征选择在数据建模中扮演着重要的地位,尤其是处理结构化的数据。如何科学地在众多特征中选择一部分有效特征是一个涉及科学与艺术的话题。
2 是否需要做特征选择¶
需要。因为我们面对的候选特征往往是数量众多的。过多的特征会消耗不必要的模型训练时间,并且从经验上来讲,有些模型特征过多反而可能表现变差。
那么特征选择能给模型表现带来提升吗?比如不同方法选出同一数量级的特征。有大佬说,并没有大的提升。至于是否如此,还需要自己实验求证。
3 如何做特征选择¶
特征选择有三大类方法:
- Filter:衡量单个特征
- Embedded:通过模型得到特征在模型中的重要性
- Wrapper:根据目标函数,每次选择或者排除若干特征
感觉前两种方法较为实用。第一种方法可以很快地将特征减少到可以训练模型的个数,从而使用第二种方法。 关于衡量单个特征的指标,常见的有:
- 相关性:常用皮尔斯相关系数来衡量。也可以用斯皮尔曼相关系数(排序相关),它对极端值不敏感,但由于只用到了原序列的排序信息,使用信息较少,表达能力较弱。
- 稳定性:常用群体稳定性指标(population stability index, PSI)来衡量。
- 有效性:对于分类问题,常把特征分箱后,用信息价值(Information Value, IV)值来衡量。当然还有很多别的统计量。为了便于不同统计量(比如计算连续特征、离散特征与label之间有效性的不同统计量)的比较,我们可以把它们都转换为假设检验中的p值。
3.1 相关性¶
皮尔斯相关系数只能反映变量间的线性关系。
最大信息系数(maximal information coefficient, MIC)可以衡量变量间高维的相关性。它反映了变量间最大的互信息(mutual information, MI)。从直观上来讲,如果X,Y存在关联,当Y已知时,X的不确定性会变小。这一变化值就是互信息。
3.2 稳定性¶
变量的稳定性常用PSI来衡量。从熵的角度来看,PSI衡量了两个分布的差异。因此,可以有多种衡量的角度,如时间维度,群体维度等。值得一提的是,PSI较大无法反映是左偏还是右偏。
3.3 有效性¶
对于风控建模来说,最常见的就是将变量分箱后,计算IV。同样从熵的角度,IV反映了好坏分布间的差异。
虽然证据权重(Weight of Evidence, WOE)和IV最初是为了适配逻辑回归模型。但是在实务中,常用IV筛选后,将变量送入非逻辑回归的树模型或是神经网络模型。
潜在的问题有,IV反映的是单变量与label的关系,无法反映变量间的交互。由此,嵌入式(Embedded)的特征选择出现了。
3.4 嵌入式特征选择¶
通过上述的一些初筛步骤,特征的数量已经能较快地降低到可以训练模型的程度。下一步,可以通过各种衡量特征重要性的方法作嵌入式的特征选择。
需要注意的是,不同模型对特征的要求不同。有实验表明,对于加入无关变量,神经网络的表现会明显变差(loss上升)。因此,在训练神经网络模型前,需要去除无关变量及高相关性变量。
树模型对此较为不敏感。但是在衡量特征重要性时,两个同样有效的变量会由于高相关性而使特征重要性下降(一定程度的下降,并不会下降到0)。
嵌入式的特征选择往往依赖于模型,在树模型下重要的特征并不一定适用于神经网络模型。同时,模型的参数也会影响到特征重要性的排序。推荐用“祖传参数”或是默认参数,让模型稍稍过拟合一点。
4 小结¶
特征选择是一个兼顾科学与艺术的话题,以上总结只是基于作者有限的知识与经验。很难有放之四海而皆准的方法,更多的是需要在实务中多做实验,多思考。