归一化和标准化
- 归一化
- 归一化类型
- 最大最小值归一化
- 均值方差归一化
- 标准化
- 区别和联系
归一化
把特征映射到0~1范围之内处理。多个维度特征的量级不同,会导致训练出来模型中不同特征对应的w参数差异很大,容易导致参数小的特征对目标函数的影响被覆盖,所以需要对每个特征的数据进行归一化处理,以减少不同量级的特征数据覆盖其他特征对目标函数的影响。归一化数据可以使各个特征维度对目标函数的影响权重一致,提高迭代的求解的收敛速度。从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
归一化类型
最大最小值归一化
缺点是抗干扰能力弱,受离群值影响比较大,中间容易没有数据。最大最小值归一化后的数据落在[0,1]之间。假设某个特征下有一组数据:1,2,3,4,5,100那么对数据使用最大最小值归一化后的值为:0,2/99,3/99,4/99,1。中间没有数据,受离群值100的影响大。
均值方差归一化
, 是样本的均值,是样本的标准差(方差的开方,方差:所有点与均值的差值平方和)。方差归一化抗干扰能力强,和所有数据有关,求标准差需要所有的值介入,若有离群值,会被抑制下来。但是归一化后的数据最终的结果不一定落在0到1之间
注意:理论上一个模型算法如果拿到训练集所有的特征一起训练模型就要归一化数据。
参考:https://www.jianshu.com/p/95a8f035c86c
标准化
标准化:把变量转化成平均数为0(将每个特征的值都减掉原始资料中该特征的平均值),标准差为1。
先从简单的预测房价的线性回归模型开始:
有一组关于房价和房子变量的数据集,通过房子的面积,房间数量,房子的层数来预测房价。占地面积1800尺,房间数量3间,房子层数2层-> 房价$$?
可以看出,标准化前后变量的系数不同,误差不同,但是R平方,和变量的t值是相同的。
那标准化前后得到的公式,怎么来解释呢?
标准化前:如果居住面积,房间数,房间层数都是0的情况下,房子的价格为91830万
标准化后:如果居住面积,房间数,房间层数是各自的平均数的情况下,房子的价格为539400万
当一个外行人在听解释的时候,一定会问,什么呀?所有东西都是0,空气造的房子还能卖9万?!
接着你会问,系数不同,那预测出来的房价会相同吗?
现在我们来预测一个1590尺,3个卧室,3层的房屋
标准化前房价 标准化后房价
$406641.02 $406641.02
我们发现预测出来的房价是一样的。
这时你一定会想,既然结果都一样,做不做标准化,都一样嘛。说到这里,我们再看一下,建模时寻找最优解的时间吧。
标准化前处理时间:0.026s
标准化后处理时间:0.021s
为什么标准化后的建模时间会短呢?这时候就要说起寻找系数最优解-梯度下降法。
标准化前,由于变量的单位相差很大,导致了椭圆型的梯度轮廓。标准化后,把变量变成统一单位,产生了圆形轮廓。由于梯度下降是按切线方向下降,所以导致了系统在椭圆轮廓不停迂回地寻找最优解,而圆形轮廓就能轻松找到了。还有一种比较极端的情况,有时没做标准化,模型始终找不到最优解,一直不收敛。
区别和联系
归一化和标准化的区别:归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种。标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。