特征工程
归一化 (Normalization)
归一化的目的是为了消除特征之间的量纲(scale)影响,比如一个特征值在1000左右的特征在参与计算时起的作用,肯定比特征值在10左右的特征大,特征值小产生的影响的会被淹没,因而将他们放缩到同一个量级才能正确分析结果。
常用方法有两种:
- 线性函数归一化(Min-Max Scaling):对原始数据进行线性变换,将结果映射到[0, 1]的范围,实现对原始数据的等比缩放。归一化公式为:
- 零均值归一化(Z-Score Normalization):将原始数据映射到均值为0,标准差为1的分布上。具体来说,假设原始特征的均值为
标准差为
,那么归一化公式为:
当然这是针对单个特征而言的,采用batch训练的归一化还有Batch Normalization、Layer Normalization、Weight Normalization等。
为什么需要归一化?
在使用梯度下降算法的场景下,归一化将可以加速收敛。
如图所示,如果不做归一化,求解过程可能需要多次震荡才能达到最优值区域,而如果进行了归一化,则需要相对较少的迭代次数就能够收敛。
这仅仅对使用梯度下降的优化算法适用,决策树等模型则不适用。因为决策树进行节点分裂时主要依据数据集D关于特征x的信息增益比,信息增益比跟是否归一化无关。
特征组合
可以将一阶特征两两组合,构成高维特征。
进一步扩展这一概念,可以将高维特征缩放到较低维度,来降低对高维参数的需求(高维参数一般很难学习,甚至学习不到)。
如何找到有效的组合特征?
利用决策树。决策树怎么来,可以采用梯度提升决策树,核心思想是每次在之前构建的决策树的残差上构建下一颗决策树。