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