买了本《百面机器学习》看着玩,虽然已经毕业了,机器学习还是放不下吧,希望以后新的机会出现能够及时抓住。书中第一章「特征工程」的“01 特征归一化”(第002-003页)提到:
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。
- 线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使结果映射到
的范围,实现对原始数据的等比缩放。归一化公式如下: 其中,
为原始数据, 、 分别为数据最大值和最小值。
- 零均值归一化(Z-Score Normalization)。它会将原始数据映射到均值为0、标准差为1的分布上。具体来说,假设原始特征的均值为μ、标准差为σ,那么归一化公式定义为:
我平时使用的全是线性函数归一化……因为比较简单也好理解。零均值归一化看到过,但是不知道该用在哪里,接下来仔细地分析一下相关的内容,以及感兴趣的数学知识。
为什么需要对数值类型的特征做归一化?
这是《百面》提出的问题。官方解答是通过一个形象的随机梯度下降例子:
假设有两种数值型特征,
的取值范围为 , 的取值范围为 ,于是可以构造一个目标函数符合 图1.1(a)中的等值图。在学习速率相同的情况下,的更新速度会大于 ,需要较多的迭代才能找到最优解。如果将 和 归一化到相同的数值区间后,优化目标的等值图会变成 图1.1(b)中的圆形,和 的更新速度变得更为一致,容易更快地通过梯度下降找到最优解。
用人话来讲就是,归一化使得特征的变化更容易用统一标准去衡量了。
这个例子其实来源于斯坦福机器学习公开课的一节,课题是我们想要去预测房价,假设存在这样一个函数:
注意这里的
这个函数里的损失函数最小。命题转变为了求解使得损失函数最小的参数
损失函数很容易定义为预测房价和真实房价差值的平方(为了取正数):
损失函数值越小,说明预测房价和真实房价的差距越小,预测越精准。
可以想象的是,当没有归一化的时候,
所以,用原始的量纲不同、取值范围差异较大的两个特征,去进行梯度下降寻找最优解,未归一化的话这个圆会变得很尖,归一化了圆就会更圆,但程序不知道啊,它会通过梯度下降去迭代,未归一化的数据更容易产生“之”字型走法来迭代寻找最优解,归一化的数据更容易走直线快速找到最优解。
但这只是讲了归一化的好处——提升模型收敛速度,并没有讲不归一化会发生什么。不归一化的最大坏处在于——数值小的特征变化失去意义,举个例子(我以前就干过这样的事……):
我们已知平面上有很多点
text
(0.1,100)
(0.2,300)
(0.2,100)
(0.3,300)我们会发现,当计算距离的时候,
text
y1=100
y2=300
y3=100
y4=300最近的仍然是
所以,归一化在维数非常多的时候,可以防止某一维或某几维对数据影响过大。
归一化和标准化的取舍
虽然可以统称为归一化,但是我更愿意称线性函数归一化(Min-Max Scaling)为极大极小归一化(Min-Max Normalization),称零均值归一化(Z-Score Normalization)为零均值标准化(Z-Score Standardization)。
因为极大极小归一化的方法是,根据极值,将所有内部值压缩到
那么,应该如何取舍归一化和标准化呢?
如果对输出结果有要求,或者数据比较稳定,用归一化。
如果存在一些异常值和噪音,数据符合正态分布,用标准化。
如果涉及距离度量计算相似性(比如KNN、Kmeans聚类)、或者PCA,用标准化。
前面两个都好理解,数据稳定,用极值方便;有异常或噪音,用标准化保证整体数值分布。我们来仔细分析一下第三点,首先推导零均值标准化原理。
正态分布的期望从定义开始推导
正态分布也叫高斯分布,期望有很多种推导方式,比如极坐标这种很秀的推导方法,我们只记最简单的Γ函数推导就好了。
1) 推导 到合适的地方
已知一般正态分布:
其概率密度函数为:
根据期望的定义有:
换元积分,令:
则
左式为奇函数在对称区间的积分,积分为0,而右边是偶函数在对称区间的积分,积分为2倍半区间积分,于是:
2) 推导 函数的特性
注意到含参变量的以无穷乘积函数定义的反常积分
用分部积分法(其公式不再继续往下证明)有:
那么,令:
得到
3) 利用 函数的特性
所以,对
有:
正态分布的方差从定义开始推导
1) 推导 到合适的地方
同样地,进行换元,令:
利用分部积分法,有:
注意这里分部积分法的使用,是拆开了前面的平方,组合后面的。而且没有用网上所谓的“注意到”:
虽然和分部积分法原理一样,但是除非非常熟练,看到这个积分就能想到这个导数,否则以我的视角根本不可能去“注意到”。还是分部积分法靠谱一些。
2) 利用 函数特性
采用的推导方案
方案2: 利用方差和期望的关系
第二种推导方案是利用:
来进行推导。
方案3: 利用洛必达
第三种推导方案是,不使用奇函数特性,使用洛必达法则推导;不使用
方案4: 利用 函数特性
第四种推导方案是,不使用分部积分法,使用一种新奇的换元方法+
这里不再赘述。
为什么零均值标准化能使得均值为0方差为1
即需要证明:若
我们知道,分布函数
那么:
所以,
为什么零均值标准化适合于距离度量、PCA
PCA原理不再介绍,我们知道PCA的核心就是方差与协方差。原始特征样本协方差为(N-1是无偏估计,'表示区分不是表示导数):
那么,使用零均值标准化:
而使用极大极小归一化:
极大极小归一化使得协方差产生了倍数值缩放,无法消除量纲的影响;而零均值标准化对方差进行了归一化,使得量纲不会对协方差的计算产生任何影响。
所以,如果需要每个特征值都对整体归一化产生一定影响的话(和分布相关的话),选择零均值归一化。
特征归一化的使用范围
《百面》上说:
在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对于决策树模型则并不适用,以C4.5决策树为例,决策树在进行节点分裂时主要依据数据集
关于特征 的信息增益比,而信息增益比跟特征是否进行归一化是无关的,因为归一化并不会改变样本在特征 上的信息增益。
但其实,看一下C4.5的信息增益比公式,样本集合
信息增益比相当于帮决策树进行了归一化。而且其实,决策树使用了归一化,也不会有太大的问题。
总结
除了极大极小归一化、零均值归一化,还有一些非线性的归一化,比如
这里通过一些数学推导把以前原理模糊的概念都理解透彻了,由于涉及到较多的数学,如有错误还望指正。




粤公网安备44030602007943号