4.2 特征标准化#
在前面两章内容中,我们在进行具体编码实现时都对训练数据集进行了标准化处理,但是我们并没有介绍什么是特征标准化(Standardization),以及为什么特征需要进行标准化,但这确实机器学习中极为重要的一步。在回答这两个问题之前,我们先来介绍一下什么是等高线。
4.2.1 等高线#
如图4-4所示,上面部分为$J(w_1,w_2)=w^2_1+w^2_2+5$的函数图形,而下面部分则为函数$J(w_1,w_2)$ 的等高线。也就是说,其实等高线就是函数$J(w_1,w_2)$ 向下的垂直投影,而所谓等高指的就是投影中任意一个环所代表的函数值均相等。反映在3D图形上就是,在曲面上总能找到一个闭环,使得环上每一点的函数值$J(w_1,w_2)$都相等,即距离谷底的高度都相同。

如图4-5所示,同样为函数$J(w_1,w_2)=w^2_1+w^2_2+5$的等高线图,只不过这次将它展示在二维平面。在图4-5中,任意一个环所代表的是不同$(w_1,w_2)$取值下相等的函数值,同时可以看到中心点为$J(0,0)$对应的函数值为$5$,通常这是通过梯度下降进行求解的最优点。

4.2.2 梯度与等高线#
由于梯度的方向始终与等高线保持垂直,所以理想情况下不管随机初始点选在何处,我们都希望梯度下降算法能沿着类似如图4-6左边所示的方式达到最低点,而非右边的情形。

可以看出,若同时使用梯度下降算法来优化图4-6左右两边所代表的目标函数,则显然在左边的情形下能够以更快的速度收敛得到最优解。同时,从右图可以看出,若$w_1$和$w_2$分别同时增加若干个单位,则增加$w_2$所带来的函数增量要远大于$w_1$。例如,当初始点$(w_1=0,w_2=0)$时,$w_1$从$0$变化至$3$的函数增量$J(3,0)$要远远小于$w_2$从$0$变化至$3$的函数增量$J(0,3)$,前者约等于$1.5$,而后者约等于$12$。那什么样的目标函数会使等高线呈现出椭圆形的环状现象呢?答案就是,若不同特征维度之间的范围差异过大便会出现如图4-6右边所示的椭圆形等高线,具体分析将在4.2.3节中进行介绍。
在本节内容伊始,我们便直接给出了梯度垂直于等高线的结论,下面先来大致分析一下梯度为什么会垂直于等高线。
设$f(x,y)=c$为平面上任意曲线,又由于曲线$F(x,y)=f(x,y)-c=0$的法向量为$n=\{F_x,F_y\}=\nabla F$。故,曲线$F(x,y)$的法向量为$m=\{{{f}_{x}},{{f}_{y}}\}$。可以发现,曲线$F(x,y)$也就是$f(x,y)=c$的法向量$m$正好就是曲线$f(x,y)=c$对应的梯度,所以可以得出梯度垂直于曲线(等高线)的结论。
如图4-7所示,已知曲线$f(x,y)=(x-2)^2+y^2-1=0$,因此其在$P$点的梯度$m=\{2(x-2),2y\}{{|}_{p}}$。

又因为曲线$y=\sqrt{1-{{(x-2)}^{2}}}$在$P$的斜率为
$$ k=\frac{2-x}{\sqrt{1-{{(x-2)}^{2}}}}\tag{4-1} $$将$y=\sqrt{1-{{(x-2)}^{2}}}$代入式(4-1)得
$$ k=(2-x)/y\tag{4-2} $$所以曲线$y=\sqrt{1-(x-2)^2}$过点$P$切线的一个方向向量为$n=\{(y,2-x)\}{{|}_{P}}$。
注: 若直线斜率为$k$,则它的一个方向向量为$(1,k)$。
由此可得
$$ m\cdot n=\{2(x-2),2y\}{{|}_{P}}\cdot \{(y,2-x)\}{{|}_{P}}=0\tag{4-3} $$所以有$m\bot n$,即曲线$f(x,y)=(x-2)^2+y^2-1=0$在任意一点的梯度$m$均垂直于曲线$f(x,y)$,因此,只有每次均沿着垂直于等高线的方向移动才能以最快的速度到达或远离原点,如图4-8所示。

4.2.3 标准化方法#
1. 线性回归
以线性回归为例,假设某线性回归模型为$\hat{y}=w_1x_1+w_2x_2$,且$x_1\in[0,1],x_2\in[10,100]$,则此时便有以下目标函数(暂时忽略$b$):
$$ J({{w}_{1}},{{w}_{2}})=\frac{1}{2}\sum\limits_{i=1}^{m}{{{\left( {{y}^{(i)}}-({{w}_{1}}x_{1}^{(i)}+{{w}_{2}}x_{2}^{(i)}) \right)}^{2}}}\tag{4-4} $$从式(4-4)可以看出,由于$x_2\gg x_1$,所以当$x_1$和$x_2$产生相同的增量时,后者能产生更大的函数变化值,而这就引发了如图4-6右边所示“椭圆形”的环状等高线。
2. 逻辑回归
从上面的分析可以得知,在线性回归中若各个特征变量之间的取值范围差异较大,则会导致目标函数收敛速度慢等问题。换句话说只有所有特征变量的取值都在类似的范围,便不会出现这样的问题。在逻辑回归中又会有什么样的影响呢?由于在逻辑回归中,特征组合的加权和会作用于Sigmoid()函数,所以影响目标函数收敛的因素除了上述因素外,更主要的还会取决于$z$的大小。
如图4-9所示,黑色实线为$g(z)$的函数图像,黑色虚线为$g(z)\prime$的函数图形。可以明显地看出,当$z<-5$或者$z>5$时,$g(z)\prime\approx 0$,这就意味着此时目标函数关于各个参数的梯度趋于0,从而使参数在梯度下降过程中无法得到更新(或更新非常缓慢)。

综上所述,在进行建模之前都应该对数据进行标准化。
常见的标准化方法有很多种,这里暂时只介绍机器学习中应用最广泛的两种标准化方法:去均值(Z-Score)标准化和最小-最大值(Min-Max)标准化。
1. 去均值标准化
对于去均值化标准化来说,它的作用是消除量纲对模型结果的影响,使得在标准化以后每一列特征的均值都为0方差都为1,其标准化计算过程为
$$ {x}'=\frac{x-\mu }{\sigma }\tag{4-5} $$其中$\mu$表示每一列特征的平均值,$\sigma$表示每一列特征的标准差。其实现代码如下:
1 def standarlization(X):
2 mean = X.mean(axis=0)
3 std = X.std(axis=0)
4 return (X - mean) / std在上述代码中,第2~3行是分别计算每一列特征的均值和标准差,形状均为[1,n]。第4行是返回标准化以后的结果,形状为[m,n]。
2. 最小-最大值标准化
对于最小-最大值标准化来说,它的作用是通过线性变换将数据映射到一个特定的区间,通常是$[0, 1]$或者$[-1, 1]$,使得所有特征的取值范围一致,其标准化计算过程为
$$ {x}'=\frac{x-\text{min} }{\text{max} -\text{min}}\tag{4-6} $$其中$\text{min}$表示每一列特征的最小值,$\text{max}$表示每一列特征的最大值。其实现代码如下:
1 def standarlization_minmax(X):
2 min = X.min(axis=0)
3 max = X.max(axis=0)
4 return (X - min) / (max - min)在上述代码中,第2~3行是分别计算每一列特征的最小值和最大值,形状均为[1,n]。第4行是返回标准化以后的结果,形状为[m,n]。
在完成上述两种标准化方法后,还可以通过二维样本点为例来进行可视化,如图4-10所示。
在图4-10中,左右两侧分别是去均值和最小-最大值方法标准化后的可视化结果,其中右上角均为原始样本点,左下角均为标准化后的样本点。从图中可以看出,不管是哪种标准化方法本身都不会改变数据的分布形状以及内在的结构信息,因此这也并不会影响到实际的建模结果。进一步,各位读者可自行通过所提供的示例代码将特征标准化与未标准化后预测的结果进行对比,完整代码见AllBooKCode/Chapter04/C07_standarlization_reg.py
4.2.4 特征组合与映射#
在2.3.1节中介绍线性回归时,我们通过一个预测梯形面积的示例来解释了特征组合的作用(丰富特征属性以便提高预测精度),但其实还可以从另外一个角度来理解特征组合。线性回归和逻辑回归从本质上讲都属于线性模型,因此对于基本的线性回归模型和逻辑回归模型来讲,其分别只能用于预测线性变化的实数和线性可分的类别,即对于如图4-11所示的两种任务,两个基本模型均不能够完成。
所谓特征映射是指将原来的特征属性通过某种方式,将其映射到高维空间的过程。当原有的特征被映射到高维空间后,就可能存在一个线性的超平面能够对数据进行很好拟合 [6],因此,对于图4-11中所示的两种情形都可以通过2.3节介绍的方法将其映射为多项式特征后进行建模,如将$x_1$和$x_2$映射为${{x}_{1}},{{x}_{2}},{{x}_{1}}{{x}_{2}},x_{1}^{2},x_{2}^{2}$等,但是对于上面的两个例子来讲,只需将原始特征映射至最高2次多项式就能完成相应的任务。
1. 非线性回归
对于图4-11左侧的示例来说,首先需要构造一个模拟的数据集,然后将整个特征维度映射为二次多项式,最后进行回归即可拟合。完整代码见AllBooKCode/Chapter04/C10_visualization_pol_reg.py
2. 非线性分类
对于图4-11右侧的示例来说,首先同样需要构造一个模拟的数据集,然后将整个特征维度映射为二次多项式,最后进行拟合。完整代码见AllBooKCode/Chapter04/C11_visualization_pol_cla.py
其中灰色与白色部分的交界处便是决策边界。
4.2.5 小结#
在本节中,我们先介绍了什么是等高线及梯度与等高线之间所存在的几何关系;然后介绍了为什么需要对数据进行标准化及两种常见标准化方法的原理和实现过程,并对标准化后的可视化结果进行了简单的分析;最后从另外一个新的角度来介绍了特征组合的作用,以此来解决非线性的回归与分类问题。