机器学习入门系列(2)–如何构建一个完整的机器学习项目,第五篇!
该系列的前四篇文章:
本篇文章会继续介绍特征工程的内容,这次会介绍特征缩放和特征编码,前者主要是归一化和正则化,用于消除量纲关系的影响,后者包括了序号编码、独热编码等,主要是处理类别型、文本型以及连续型特征。
3.2 特征缩放
特征缩放主要分为两种方法,归一化和正则化。
3.2.1 归一化
- 归一化(Normalization),也称为标准化,这里不仅仅是对特征,实际上对于原始数据也可以进行归一化处理,它是将特征(或者数据)都缩放到一个指定的大致相同的数值区间内。
- 归一化的两个原因:
- 某些算法要求样本数据或特征的数值具有零均值和单位方差;
- 为了消除样本数据或者特征之间的量纲影响,即消除数量级的影响。如下图所示是包含两个属性的目标函数的等高线
- 数量级的差异将导致量级较大的属性占据主导地位。从下图左看到量级较大的属性会让椭圆的等高线压缩为直线,使得目标函数仅依赖于该属性。
- 数量级的差异会导致迭代收敛速度减慢。原始的特征进行梯度下降时,每一步梯度的方向会偏离最小值(等高线中心点)的方向,迭代次数较多,且学习率必须非常小,否则非常容易引起宽幅震荡。但经过标准化后,每一步梯度的方向都几乎指向最小值(等高线中心点)的方向,迭代次数较少。
- 所有依赖于样本距离的算法对于数据的数量级都非常敏感。比如 KNN 算法需要计算距离当前样本最近的 k 个样本,当属性的量级不同,选择的最近的 k 个样本也会不同。
- 常用的两种归一化方法:
- 线性函数归一化(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=Xmax−XminX−Xmin
其中 X 是原始数据, X m a x , X m i n X_{max}, X_{min} Xmax,X