最近一直很困惑,因为有些资料在进行回归的时候,往往需要数据标准化。然而也有些资料说对于线性回归是不需要标准化。在查询了大量的资料后,准备在这篇博客上做一个总结。
为什么要数据标准化
数据标准化的原理往往是来自于独立连续变量的量纲。举一个例子,如果我们要对人口进行回归,采取“个数”的量纲和“百万个”的量纲得到的回归系数会差的相当大。而进行处理时,采取“个数”的量纲的回归系数太小。这时候便有必要需要对原始数据进行标准化,使得每个变量有相同的范围或者方差。
关于数据标准化,中心化
标准化: 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值。 常用的标准化有:Min-Max scaling, Z score
中心化:即变量减去它的均值,对数据进行平移。
什么时候对数据中心化呢
- 在聚类过程中,标准化显得尤为重要。这是因为聚类操作依赖于对类间距离和类内聚类之间的衡量。如果一个变量的衡量标准高于其他变量,那么我们使用的任何衡量标准都将受到该变量的过度影响。
- 在PCA降维操作之前。在主成分PCA分析之前,对变量进行标准化至关重要。 这是因为PCA给那些方差较高的变量比那些方差非常小的变量赋予更多的权重。而 标准化原始数据会产生相同的方差,因此高权重不会分配给具有较高方差的变量
- KNN操作,原因类似于kmeans聚类。由于KNN需要用欧式距离去度量。标准化会让变量之间起着相同的作用。
- 在SVM中,使用所有跟距离计算相关的的kernel都需要对数据进行标准化。
- 在选择岭回归和Lasso时候,标准化是必须的。原因是正则化是有偏估计,会对权重进行惩罚。在量纲不同的情况,正则化会带来更大的偏差。
什么时候不需要标准化
- 当采用普通的线性回归的时候,是无需标准化的。因为标准化前后,不会影响线性回归预测值。
- 同时,标准化不会影响logistic回归,决策树及其他一些集成学习算法:such as random forest and gradient boosting.
线性回归无需标准化的证明:
在线性回归中,是否进行标准化将不会影响最后预测效果,即使训练时候的权重将不一样。
下面用R语言进行实验证明:
一、当不采用标准化时:
在测试集上的预测:
二、当采用标准化时:
对数据进行标准化后,然后再进行训练
在进行predict的时候,我们仍然需要对输入数据进行标准化,此时可以利用训练集上的均值和方差。
三、对比标准化与无标准化之间的预测值:
此处的标准化的prediction进行了重新scale。可以看到是否标准化,不会影响回归结果。
其他关于线性回归的一些易错点
- 不考虑线性相关直接使用线性模型
设想建立一个具有两变量X1和X2的线性模型,假设真实模型是Y=X1+X2。理想地,如果观测数据含有少量噪声,线性回归解决方案将会恢复真实模型。然而,如果X1和X2线性相关(大多数优化算法所关心的),Y=2*X1, Y=3*X1-X2或Y=100*X1-99*X2都一样好,这一问题可能并无不妥,因为它是无偏估计。然而,它却会使问题变得病态,使系数权重变得无法解释。 - 将线性或逻辑回归模型的系数绝对值解释为特征重要性 因为很多现有线性回归量为每个系数返回P值,对于线性模型,许多实践者认为,系数绝对值越大,其对应特征越重要。事实很少如此,因为:(a)改变变量尺度就会改变系数绝对值;(b)如果特征是线性相关的,则系数可以从一个特征转移到另一个特征。此外,数据集特征越多,特征间越可能线性相关,用系数解释特征重要性就越不可靠。