机器学习:为什么需要对数值型的特征做归一化
为什么需要对数值型的特征做归一化?
假设有这样一组数据
身高(米) | 体重(斤) |
---|---|
1.6 | 130 |
1.7 | 125 |
1.8 | 145 |
1.9 | 135 |
公式:健康 = 3*身高 + 2*体重,那么,体重相对于身高而言,在健康中的比重占的多的多,显然这样是并不合理的,此时我们需要通过归一化方法,把两个特征处在同一个数量级上。
问题一:归一化的方法有哪些?
一. 最大最小值归一化(线性函数的归一化):
公式: Xnormal = ,
例如当X=130时, Xnormal = = 0.25,这样就把数据归到[0, 1]之间。
缺陷:对异常值敏感。
假如体重中出现了500斤的数据,显然Xnormal = = 0.013,与真实的值0.25相差过大,影响最终结果。
二. 零均值归一化方法:
公式: Xnormal =
是均值, 是标准差,计算同上。
问题二:为什么要归一化?
归一化加快模型训练,减少迭代次数(以等高线展示)。
左图是未归一化的时候,由于两个特征不在同一个数量级上,等高线的平面图呈椭圆状,边上的点切线的垂直方向是代价函数的收敛方向,程序经过多次迭代,最终才到达中心点的最小值。
右图是归一化的时候,边上的点切线的垂直方向是代价函数的收敛方向,每次收敛的方向几乎直接指向圆心,程序经过多次迭代,最终才到达中心点的最小值。
由此可以得出,右图比左图收敛的更快,迭代次数更少。
问题三:哪些模型需要归一化?
线性回归, 逻辑回归,SVM, 神经网络
问题四:哪些模型不需要归一化?
决策树,往往看的是增量