特征工程
一:特征工程介绍
俗话说,“巧妇难为无米之炊”。在机器学习中,数据和特征便是“米”,模型和算法便是“巧妇”。没有充足的数据、合适的特征,再强大的模型也是没有任何作用的。对于一个机器学习问题,数据和特征往往决定了结果的上限,而模型,算法只是逐步接近这个上限。
所谓特征工程,就是对最原始的数据(数字,文本,图像等)进行一系列的处理,将其提炼为特征,作为输入供算法和模型使用。
二:数据清洗
数据清洗能够去除脏数据,在这个过程中,会让你对业务的理解更加深刻。这是非常重要的一步,就好比练习题里边如果有错题,那么模型的学习效果肯定是不好的。脏数据也就是异常数据,比如说:
- 某人身高3米多
- 某地气温100度以上
- 其它……
这类数据一般可以通过箱线图来发现。
三:数据采样
在分类问题中,很多情况下,正负样本数量是不均衡的。比如:
- 唯品会用户中的男女比例
- 某种疾病的患病人数与不患病人数
- ……
而大部分分类模型对正负样本比例都是敏感的。这种时候就需要对数据进行采样处理。
- 如果正负样本的数量都很大,但是正样本数量远远大于负样本数量(反之亦然),那么就需要进行下采样,取一部分正样本,使得正负样本数量相当。
- 如果正负样本的数量都不大,但是正样本数量远远大于负样本数量(反之亦然),那么就需要进行过采样(有过拟合的风险),或者想办法采集更多的数据(数据的作用是非常明显的)。
一般来讲,一定要注意分层采样,**保证采样后的数据分布和原始数据分布一致,**尽量避免直接随机采样。
四:数值型特征
数值型特征的常见处理方法:
- 归一化
- 统计值
- 离散化(分箱/分桶)
- log变化
- 高次与四则运算特征
4.1 归一化
1. 为什么需要对数值型特征做特征归一化?
- 特征归一化能够消除不同特征之间量纲的影响,将所有特征都统一到一个大致相同的数值区间内。这样就使得不同特征之间具有可比性。
- 当通过梯度下降法进行模型求解时,可以降低迭代次数,更快的收敛到最小值。
- 树模型并不需要归一化。
2. 最常用的特征归一化的方法有什么?
-
线性函数归一化(Min-Max Scaling)。对原始数据进行线性变化,将特征规约到[0,1]之间。公式如下:
X n o r m = X − X m i n X m a x − X m i n X_{norm}=\frac{X-X_{min}}{X_{max}-X_{min}} Xnorm=X