福州腮红价格联盟

ML小卡片——p2-Standardization(z-score scaling)

yoyo食堂笔记2018-06-12 15:38:19


标准化(Standardization)

这张小卡片要说的概念呢是ML/data mining里经常会碰见的,就是数据标准化(Standardization)。说到标准化,不得不一起说一下另外两个概念,也是经常出现并且较容易混淆的概念:归一化(Normalization)和正则化(Regularization)。

其实归一化与标准化在某些教科书里都统一归于标准化的领域,因为从大的层面上讲,标准化与归一化一样都是把数据(特征)进行预处理,从而使数值都落入到统一的数值范围,使得在建模过程中,各个特征量没差别对待。消除一些数值差异带来的某些特征的重要性偏见。经过标准化的数据,能加快训练速度,促进算法的收敛



归一化Normalization

normalization一般是把数据缩放在指定的范围内,比如一般都是[0, 1],从而消除了数据量纲对建模的影响。上面公式的归一化方法是最常用的最值归一化把最大值归一化成1,最小值归一化成0

那么,为什么需要归一化处理呢?【下面的标准化处理的原因类似

以Ng大神的预测房屋价格为例:自变量为面积,房间数两个,因变量为房价。那么可以得到的公式为:

假设未进行归一化,房间数的范围是0~10,面积大小的范围是0~1000,面积大小x2的取值范围远大于房间数x1。

这样造成的影响就是在画损失函数梯度下降等高线的时候,整个是类似椭圆的形状【更夸张的情况,这个椭圆会非常的扁,以至于整个梯度下降的寻优过程会忽视掉取值范围小的某些特征】,而最优解的寻优过程如图:

而此时我们进行数据的归一化处理,使得x1和x2的取值范围归一到[0,1]之间,这个时候损失函数等高线就会类似圆形的形状,而最优解的寻优过程如图:

从上可以看出,数据归一化后,最优解的寻优过程明显会变得平缓,不会震荡的特别剧烈,更容易正确的收敛到最优解。



标准化standardization


与归一化对原始数据进行线性变化使得取值范围固定在某个区间([0,1])内不一样,standardization的做法是用原始数据的均值(mean)与标准差(standard deviation)进行数据标准化

比较常用的标准化方法是z-score,该方法使得经过处理的数据符合标准正态分布N~(0, 1),即均值为0,标准差为1,这种标准化更适用于属性的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。

x’= (x−μ)/σ

其中 μ为所有样本数据的均值,σ为所有样本数据的标准差。这样所得到的数据都聚集在0附近,方差为1。

上图则是一个散点序列的标准化过程:原图->减去均值->除以标准差。显而易见,最终数据分布变成了一个均值为 0 ,方差为 1 的分布


为何要标准化的理由与归一化的一致,都是为了规范化特征取值,使得更快的收敛到最优解




正则化 regularization


正则化就是对最小化经验误差函数上加约束,主要是用于避免过拟合的产生。

正则化项一般是模型复杂度(参数个数)的单调递增函数,模型越复杂,正则化值就越大。一般会选用模型参数向量的范数:

    • L1 regularization: (1范数)对系数绝对值之和进行约束。L1范数||w||会导致更多的参数变成0,增加了一定的稀疏性。有时候这样的稀疏性,可以减少模型的参数数目。

    • L2 regularization:(2范数)对系数平方和进行约束,L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0

正则化涉及到的知识稍微多点,具体描述后续的卡片会有讲解到。