一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?很多同学并未搞清楚,维基百科给出的解释:
1)归一化后加快了梯度下降求最优解的速度
蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;
而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。
因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。
2)归一化有可能提高精度
一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。
欢迎关注我的公众号,第一时间追踪相关面试题和总结:百面机器学习。回复干货获取相关资料和面试题总结(定期更新)。
处理数据时不进行归一化会有什么影响?归一化的作用是什么?什么时候需要归一化?有哪些归一化的方法? 机器学习中为什么需要对数据进行归一化? - CSDN博客 为什么要特征标准化 (机器学习) (简单理解一下标准化的意思)
概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、rf。而像adaboost、gbdt、xgboost、svm、lr、KNN、KMeans之类的最优化问题就需要归一化。(小伙伴要记清楚哦,或者用sklearn里面的库跑一下模型看看呢)
笔者只是一些问题的搬运工,具体需要对问题进行深入的小伙伴还望自己阅读相关文献,这里只是提出一些问题,以便于面试时问到,如果内容有一些错误,还望批评指正!
米娜 Thanks♪(・ω・)ノ