给出一个场景
通过住户的居住面积和楼层来分析他们的居住舒适度,楼层的特征会在1-20(层)数值范围内,居住面积的特征会在30-200(平方米)数值范围内,那么根据这两种特征分析出来的数据居住面积会成为决定性更大的特征,这显然是不准确的,此时就需要我们进行特征归一化,使得各个特征处于同一个数值量级,然后再进行分析。
常用的特征归一化方法
- 最大最小归一化(Min-Max Scaling)
最大最小归一化对原始数据进行线性变换,使结果映射到[0,1]范围内,实现对原始数据的等比缩放。 - 零均值归一化(Z-Score Normalization)
零均值归一化会将原始数据映射到均值为0、标准差为1的分布上。
其中均值是,标准差是
。
为什么要进行特征归一化?
借助随机梯度下降的例子来说明一下归一化的重要性。假设现在我们有两个特征x1、x2,x1的范围是[0,10],x2的范围是[0,4],在他们的学习速率相同的情况下x1的更新速度要大于x2,此时需要较多的迭代才能找到最优解;而当他们在同一数值范围内的时候,他们的更新速度就会变得更为一致,此时就更容易快速的通过梯度下降找到最优解。
用一张图片来说明一下(左边是归一化之前,右边是归一化之后):
实际应用中哪里需要归一化
可以看到上文中我用到了梯度下降来距离,可以看出归一化对梯度下降的影响是很大的,所以在实际应用中通过梯度下降求解的算法通常都是需要进行归一化的,常见的有线性回归、逻辑回归、支持向量机、神经网络等模型。