特征归一化
-
场景描述:分析一个人的身高和体重对健康的影响,如果使用米和千克作为单位,那么身高特征就会在1.6 - 1.8m这样一个范围内,体重会在50 - 100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。如果想要得到更为精确的结果,就需要进行特征归一化处理。
-
问题:为什么需要对数值类型的特征做归一化?
因为可以通过对特征做归一化将所有特征都统一到一个大致相同的数值区间内。借助随机梯度下降的例子说明归一化的重要性。
假设有两种数值型特征, X 1 X_{1} X1的取值范围为 [0, 10], X 2 X_{2} X2的取值 范围为[0, 3],于是可以构造一个目标函数符合图1.1(a)中的等值图。
在学习速率相同的情况下, X 1 X_{1} X1的更新速度会大于 X 2 X_{2} X2,需要用较多的迭代次数才能找到最优解。如果将 X 1 X_{1} X1和 X 2 X_{2} X2归一化到相同的数值区间后,优化目标的等值图会变成图 中的圆形, X 1 X_{1} X1和 X 2 X_{2} X2的更新速度变得更为一致,容易更快地通过梯度下降找到最优解。
常用的方法有以下两种:
(1)线性函数归一化(Min-Max Scaling)。函数将原始数据进行线性变换,使其结果映射到[0,1]的范围,实现对原始数据的等比缩放。
归一化公式: X norm = X − X min X max − X min X_{\text {norm }}=\frac{X-X_{\min }}{X_{\max }-X_{\min }} Xnorm =Xmax−XminX−Xmin
x x x为原始数据 $X_{\min } $ X max X_{\max } Xmax分别为数据的最小值和最大值。
(2)零均值归一化(Z-Score Normalization)。它将原始数据映射到均值为0、标准差为1的分布上。
归一化公式 z = x − μ σ z=\frac{x-\mu}{\sigma} z=σx−μ
μ μ μ、 σ σ σ分别为原始数据集的均值和方法。