![机器学习数学基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/482/43738482/b_43738482.jpg)
1.5.3 范数和正则化
了解距离之后,探讨范数,会发现它不过是一种特殊情况。内积空间中两个向量的距离为,如果其中一个向量是零向量,设
,则
,即:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_567.jpg?sign=1739215009-ugcf3cmnzE68gVpGtDmi5j8o4stLq8nb-0-47ebdb0e04d05cac5c83132a6227d0ce)
其实,这个式子表示了一个向量的终点和起点之间的距离,因此,它被称为向量的长度、大小或范数(norm)。在欧几里得空间,根据点积的定义,范数的具体计算方法为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_568.jpg?sign=1739215009-1RgdW3hWpfZmhCsZXtHbfSTNZBHYG04o-0-e88ca076a944342e9b9af6bd8ab16b09)
由于它是欧几里得空间中的计算方式,所以被称为欧几里得范数,又因为要对每个坐标的平方后求和,所以还被称为范数(注意,
是字母
的小写,为了与数字
区分,也可以用大写字母表示,特别是手写的时候)。
除范数之外,与1.5.1中的曼哈顿距离类似,也有曼哈顿范数,又被称为
范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_575.jpg?sign=1739215009-qkTmc0VQ1oiIE31X1JLhd71mqmAoZx7E-0-4ac511985f81cb672089d4eaf3f049b1)
继续比照1.5.1中的闵可夫斯基距离的定义,延续前面的思路,就可以定义其他范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_576.jpg?sign=1739215009-87vRHv5fTp0y3UBspPpEXPPwLfjanxrF-0-cca7f435cc30c36e297ff613667d3a0f)
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_577.jpg?sign=1739215009-2OCci0MlWuViYdC17h7hwsOSKPwrE6Gt-0-3e44fff7b002cc405dc11a8ed24b3e4c)
只不过,在机器学习中,和
范数是常用的。
对于范数,还可以使用NumPy中的函数np.linalg.norm(),通过设置参数ord的值计算不同类型的范数类型。例如计算范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_581.jpg?sign=1739215009-XpQKtk045brpEEcbYopVuTgIjS2dKuqi-0-d03a5616d9832723c4e9c51f9518f9d7)
如果不设置参数ord的值,则默认为None,对于向量而言,就是计算范数。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_583.jpg?sign=1739215009-U1bHhcCD15jBjfGATjolLUcPzdU3rc3l-0-bdd8ba3ff31daeb2f569713b5eaa943e)
在机器学习中,用训练集得到的模型,我们希望它对验证集也能有良好的表现,即预测准确率能够让人满意。但是,如果所使用模型参数过多、或过于复杂,常常会出现一种被称为过拟合(Overfitting)的现象(在统计学中,同样有这个问题),如图1-5-8所示。假设对于训练集而言,从上帝视角看,其模型就是比较简单的那条曲线所示;但是人把问题搞复杂了,弄出来的模型是比较复杂的那条曲线,这条复杂的曲线相对“上帝真相”就是过拟合。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_584.jpg?sign=1739215009-oUrrQRyWu99f7DQJOoWiGLyXDCtEid20-0-5d5d52db537a466a8d5d5e02f9602241)
图1-5-8
如何解决过拟合问题?一种比较简单的思路,就是引入一个正则项。注意,这里并没有从最根本的理论上证明正则项的必要性和可行性,只是说明以范数作为正则项的结果。
假设有一个机器学习模型,记作。并且还有一个数据集(dataset)
,其中的
是由观测活动得到的数据,作为模型自变量的值;
是每个样本的观测标签,作为模型响应变量的值。如果将
输入给模型
,所得就是用这个模型进行预测的结果,记作
(预测值):
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_593.jpg?sign=1739215009-ZikVV1G2Df7HqjbHGRF68V7rXSn9CgCh-0-8faebd34f183d85efbf450be463a2891)
这里的表示模型中的参数。要想衡量模型
,显然就可以考查预测值和观测值之间的差异—注意,不一定就是“差”(
)。在机器学习中,常定义一个损失函数(Loss Function,在第4章4.4.3节对损失函数有专门介绍)度量这个差异,比如一种常用的损失函数定义是:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_597.jpg?sign=1739215009-mK5guVnRu7vuOnpZccnupQA55JKPYPIA-0-2fa649128af9818acccd3c7a7f08d9b7)
我们当然希望模型作用于数据集
后的平均损失函数越小越好,即:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_600.jpg?sign=1739215009-YulGq57YWS26svI70t0L3cfjfEsGnSP4-0-fa76d5d322480bbee3c8aef884bd21fc)
(1.5.1)
为了让(1.5.1)式能够取到最小值,必须选择适合的参数,实现的方法为著名的最小二乘法,此处不对这个方法进行详细介绍,有兴趣的可以参阅第3章3.6节。
正如图1-5-8所示那样,为了追求(1.5.1)式——损失函数最小化,就会不断提升模型复杂度—显然对已知数据而言,图1-5-8中的“人”所训练出的模型要比“上帝真相”模型更接近(1.5.1)式的目标,这就导致了“过拟合”。
在实际业务中,避免过拟合的方法比较多,比如增加数据量、进行交叉验证等。在这里我们把上面讨论的模型具体化为一种比较简单的模型:线性回归模型,即:
(在3.4.5节表示为
形式,其中
表示
组成的矩阵),再参考点积的定义,于是(1.5.1)式可以写成:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_607.jpg?sign=1739215009-5IEjzZ8AmpeblUk2uPlGRK0arq1LcfIp-0-4fdc561be67310fe3bb8e9a67413f032)
(1.5.2)
正则化(Regularization)是针这种模型最常用的避免过拟合的方法。如(1.5.3)式所示,对(1.5.2)式增加惩罚项:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_609.jpg?sign=1739215009-JbL0KtI0lXwgmSLQncfMYRwK0zoXS5lg-0-4019efdcfba9da60c51de33c7e7de4f8)
(1.5.3)
中的
是一个系数,用以平衡惩罚项的权重;
表示模型的复杂度。对于函数
,也会有不同的形式,一般地,可以选择:
● 使用
的
范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_617.jpg?sign=1739215009-UeN4Nyx5D8sUii0Kah21Sy3dWQVNfzcS-0-a94154301e83393584c31b5415031c7b)
惩罚项使用范数的线性回归称为LASSO回归。
● 使用
的
范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_622.jpg?sign=1739215009-4eM1rsQwF26FlMAyEa7vfX1SnqzofhhE-0-5dc1f7ea5e09efdfab8e1fcc1046336b)
惩罚项使用范数的线性回归称为岭回归(Ridge回归)。
除此之外,还有其他实现正则化的方法,比如弹性网络(Elastic Net),就是通过平衡范数和
实现了正则化。在Sklearn库的sklearn.linear_model模块中,有专门针对正则化的线性模型,不妨参考。