1. 什么是特征选择
从现有的m个特征中选出n个特征(n<=m),降低特征维度减少计算量的同时,使模型效果达到最优。
2. 为什么要做特征选择
在实际业务中,用于模型中的特征维度往往很高,几万维。如一些CTR预估问题中,特征维度高达上亿维,维度过高会增大模型计算复杂度。但实际情况是,并不是每个特征对模型的预测都是有效果的,所以需要去除一些不必要的特征,从而降低模型计算的复杂度。
3. 特征选择的基本原则
- 波动性:指特征取值的分布情况,用方差来衡量。
- 相关性:指特征和目标结果的相关性大小,常用皮尔逊相关系数来度量。
如果方差很小,说明该特征的取值很稳定,可以近似理解成该特征的每个值都接近。这样的特征对模型几乎是没有效果,不具备区分度的。比如年龄这个特征,都是20岁左右大小的。反之,方差越大,则特征对模型的区分度越好。
4. 特征选择的方法及实现
4.1 移除低方差特征
指移除方差低于指定阈值的特征,即特征值变动幅度小于某个范围的特征。这一部分特征的区分度较差,可以移除。这里的阈值需要根据具体的业务场景进行设定。
from sklearn.feature_selection import VarianceThreshold
X = [[0, 2, 1], [1, 1, 0], [2, 3, 0], [3, 6, 1], [4,