最近一直很困惑,因为有些资料在进行回归的时候,往往需要数据标准化。然而也有些资料说对于线性回归是不需要标准化。在查询了大量的资料后,准备在这篇博客上做一个总结。

为什么要数据标准化

数据标准化的原理往往是来自于独立连续变量的量纲。举一个例子,如果我们要对人口进行回归,采取“个数”的量纲和“百万个”的量纲得到的回归系数会差的相当大。而进行处理时,采取“个数”的量纲的回归系数太小。这时候便有必要需要对原始数据进行标准化,使得每个变量有相同的范围或者方差。

关于数据标准化,中心化

标准化: 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值。 常用的标准化有:Min-Max scaling, Z score

中心化:即变量减去它的均值,对数据进行平移。

机器学习 预测结果 恢复标准化 回归标准化预计值_线性回归

什么时候对数据中心化呢

  1. 在聚类过程中,标准化显得尤为重要。这是因为聚类操作依赖于对类间距离和类内聚类之间的衡量。如果一个变量的衡量标准高于其他变量,那么我们使用的任何衡量标准都将受到该变量的过度影响。
  2. 在PCA降维操作之前。在主成分PCA分析之前,对变量进行标准化至关重要。 这是因为PCA给那些方差较高的变量比那些方差非常小的变量赋予更多的权重。而 标准化原始数据会产生相同的方差,因此高权重不会分配给具有较高方差的变量
  3. KNN操作,原因类似于kmeans聚类。由于KNN需要用欧式距离去度量。标准化会让变量之间起着相同的作用。
  4. 在SVM中,使用所有跟距离计算相关的的kernel都需要对数据进行标准化。
  5. 在选择岭回归和Lasso时候,标准化是必须的。原因是正则化是有偏估计,会对权重进行惩罚。在量纲不同的情况,正则化会带来更大的偏差。

什么时候不需要标准化

  1. 当采用普通的线性回归的时候,是无需标准化的。因为标准化前后,不会影响线性回归预测值。
  2. 同时,标准化不会影响logistic回归,决策树及其他一些集成学习算法:such as random forest and gradient boosting.

线性回归无需标准化的证明:

机器学习 预测结果 恢复标准化 回归标准化预计值_线性回归_02

在线性回归中,是否进行标准化将不会影响最后预测效果,即使训练时候的权重将不一样。

下面用R语言进行实验证明:

一、当不采用标准化时:

机器学习 预测结果 恢复标准化 回归标准化预计值_方差_03

在测试集上的预测:

机器学习 预测结果 恢复标准化 回归标准化预计值_机器学习 预测结果 恢复标准化_04

二、当采用标准化时:

机器学习 预测结果 恢复标准化 回归标准化预计值_数据_05

对数据进行标准化后,然后再进行训练

机器学习 预测结果 恢复标准化 回归标准化预计值_线性回归_06

在进行predict的时候,我们仍然需要对输入数据进行标准化,此时可以利用训练集上的均值和方差。

机器学习 预测结果 恢复标准化 回归标准化预计值_线性回归_07

三、对比标准化与无标准化之间的预测值:

机器学习 预测结果 恢复标准化 回归标准化预计值_线性回归_08

此处的标准化的prediction进行了重新scale。可以看到是否标准化,不会影响回归结果。

其他关于线性回归的一些易错点

  1. 不考虑线性相关直接使用线性模型
    设想建立一个具有两变量X1和X2的线性模型,假设真实模型是Y=X1+X2。理想地,如果观测数据含有少量噪声,线性回归解决方案将会恢复真实模型。然而,如果X1和X2线性相关(大多数优化算法所关心的),Y=2*X1, Y=3*X1-X2或Y=100*X1-99*X2都一样好,这一问题可能并无不妥,因为它是无偏估计。然而,它却会使问题变得病态,使系数权重变得无法解释。
  2. 将线性或逻辑回归模型的系数绝对值解释为特征重要性 因为很多现有线性回归量为每个系数返回P值,对于线性模型,许多实践者认为,系数绝对值越大,其对应特征越重要。事实很少如此,因为:(a)改变变量尺度就会改变系数绝对值;(b)如果特征是线性相关的,则系数可以从一个特征转移到另一个特征。此外,数据集特征越多,特征间越可能线性相关,用系数解释特征重要性就越不可靠。