归一化与标准化

归一化: 将某一列特征的值缩放到0到1之间
x − m i n m a x − m i n \frac{x-min}{max-min} maxminxmin

标准化: 将某一列特征的值缩放为均值为0,方差为1
x − m e a n σ \frac{x-mean}{\sigma} σxmean

注意:

  1. 归一化和标准化都是对某个特征进行的。
  2. 先拆分出test集,不要在整个数据集上做标准化。

标准化更好保持了样本间距,标准化更符合统计学假设,调整为均值为0,方差为1的标准正态分布。

对数据进行特征归一化有两点原因:

  1. 对于使用梯度下降法求最优解的机器学习模型,归一化往往非常有必要,否则很难收敛甚至不能收敛
  2. 对特征范围敏感的模型,需要进行归一化,以免范围大的特征主导输出结果

有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。

有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression,linear regression。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

线性回归使用梯度下降法求解的时候需要标准化,这样有助于收敛。使用解析解的时候,不用标准化。

KNN,kmeans等对特征尺度敏感,需要标准化。

使用梯度下降求解的算法需要标准化。

为什么决策树不需要数据标准化?
一般来说, 机器学习都需要特征标准化, 目的是让特征之间的比较可以在同一个量纲上进行. 但是从数据构建过程来看, 决策树中的计算和比较都是单特征的. 所有决策树不需要数据的标准化.

[0] 推荐阅读 https://www.jianshu.com/p/4c3081d40ca6
[1] http://www.cnblogs.com/LBSer/p/4440590.html
[2] 什么情况需要对特征使用归一化处理https://blog.csdn.net/zhouhong0284/article/details/79443182
[3] https://www.jianshu.com/p/1e63cd2afedc
[4] https://baijiahao.baidu.com/s?id=1609320767556598767&wfr=spider&for=pc

你可能感兴趣的:(机器学习算法总结)