各维属性的取值范围差别很大,归一化的目标是把各位属性的取值范围放缩到差不多的区间,例如[-0.5,0.5]。
这里我们使用一种很常见的操作方法:减掉均值,然后除以原取值范围。
做归一化(或 Feature scaling)至少有以下3个理由:
-
过大或过小的数值范围会导致计算时的浮点上溢或下溢。
-
不同的数值范围会导致不同属性对模型的重要性不同(至少在训练的初始阶段如此),而这个隐含的假设常常是不合理的。这会对优化的过程造成困难,使训练时间大大的加长。
-
很多的机器学习技巧/模型(例如L1,L2正则项,向量空间模型-Vector Space Model)都基于这样的假设:所有的属性取值都差不多是以0为均值且取值范围相近的。