![机器学习数学基础](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=1739923040-ehgh6jFL6CHHcy0xN6YzDjFdk5o8ngtN-0-30d5e3170fb34cfdcde4815dedc15756)
其实,这个式子表示了一个向量的终点和起点之间的距离,因此,它被称为向量的长度、大小或范数(norm)。在欧几里得空间,根据点积的定义,范数的具体计算方法为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_568.jpg?sign=1739923040-ut5IKHQY29y6TdqJOFu9SaMmxWUu9O9r-0-de827707acd5ff8e44c3d9d0c4823148)
由于它是欧几里得空间中的计算方式,所以被称为欧几里得范数,又因为要对每个坐标的平方后求和,所以还被称为范数(注意,
是字母
的小写,为了与数字
区分,也可以用大写字母表示,特别是手写的时候)。
除范数之外,与1.5.1中的曼哈顿距离类似,也有曼哈顿范数,又被称为
范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_575.jpg?sign=1739923040-MRsXWeK3dPSRLc8SQlXuN4NkNaGfkBMw-0-9ea193718fe31487a63bec648474b0f0)
继续比照1.5.1中的闵可夫斯基距离的定义,延续前面的思路,就可以定义其他范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_576.jpg?sign=1739923040-HbCS2MhBbBih9ziqSea6J0PhdDRkR50P-0-de5fc823e7357a848649399c23469dbc)
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_577.jpg?sign=1739923040-ZenoBuSuBNBUtUMjagPHMaE3hJmbpQxM-0-aec0f67259c77790bfd1041ffed83946)
只不过,在机器学习中,和
范数是常用的。
对于范数,还可以使用NumPy中的函数np.linalg.norm(),通过设置参数ord的值计算不同类型的范数类型。例如计算范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_581.jpg?sign=1739923040-YdaxI4FVEH7fDUDW59YS9OOcTGj7CGyS-0-2d97d32c3813102cd5b93335fc327dd9)
如果不设置参数ord的值,则默认为None,对于向量而言,就是计算范数。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_583.jpg?sign=1739923040-yIKtzmio6Z4FxP3YuB4hmS94pJZ8gNer-0-25eed87aa193568d0dcbf9c8da3eebdf)
在机器学习中,用训练集得到的模型,我们希望它对验证集也能有良好的表现,即预测准确率能够让人满意。但是,如果所使用模型参数过多、或过于复杂,常常会出现一种被称为过拟合(Overfitting)的现象(在统计学中,同样有这个问题),如图1-5-8所示。假设对于训练集而言,从上帝视角看,其模型就是比较简单的那条曲线所示;但是人把问题搞复杂了,弄出来的模型是比较复杂的那条曲线,这条复杂的曲线相对“上帝真相”就是过拟合。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_584.jpg?sign=1739923040-QYtyaoZzHu2RkEUnVSfPl8b1alugIDVa-0-29c3dd31fcead05f96900a6f21559500)
图1-5-8
如何解决过拟合问题?一种比较简单的思路,就是引入一个正则项。注意,这里并没有从最根本的理论上证明正则项的必要性和可行性,只是说明以范数作为正则项的结果。
假设有一个机器学习模型,记作。并且还有一个数据集(dataset)
,其中的
是由观测活动得到的数据,作为模型自变量的值;
是每个样本的观测标签,作为模型响应变量的值。如果将
输入给模型
,所得就是用这个模型进行预测的结果,记作
(预测值):
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_593.jpg?sign=1739923040-AVFfiVAyr6NSniB9QoiIODG3uctJv4Ji-0-c01ca15e09e7b8b1117e193cde528b0c)
这里的表示模型中的参数。要想衡量模型
,显然就可以考查预测值和观测值之间的差异—注意,不一定就是“差”(
)。在机器学习中,常定义一个损失函数(Loss Function,在第4章4.4.3节对损失函数有专门介绍)度量这个差异,比如一种常用的损失函数定义是:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_597.jpg?sign=1739923040-tLCP9qYsvOKHfxe5bTCBEIfkY2dpErb3-0-a1100be14f6648608db9ac5a56a01528)
我们当然希望模型作用于数据集
后的平均损失函数越小越好,即:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_600.jpg?sign=1739923040-G8qb244WhhmTsoMHxdmMjX47mVMkg23b-0-a9366fe4b08be395fc8b0d83738b726d)
(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=1739923040-DlWi5udz1cC531YVF1MfSoJopdT0TD7i-0-95cf8a1ce8403045afb66087069f9e9e)
(1.5.2)
正则化(Regularization)是针这种模型最常用的避免过拟合的方法。如(1.5.3)式所示,对(1.5.2)式增加惩罚项:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_609.jpg?sign=1739923040-uAwLk2jyMFTh9rBcDsIS32rfEkcV23sI-0-72c316586371eb497a2865680dc8ce7a)
(1.5.3)
中的
是一个系数,用以平衡惩罚项的权重;
表示模型的复杂度。对于函数
,也会有不同的形式,一般地,可以选择:
● 使用
的
范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_617.jpg?sign=1739923040-N2MWAoqrXjddzrauv75gwLPma8FrRWqh-0-67336faedf2a8443950d1fafc7c9abd7)
惩罚项使用范数的线性回归称为LASSO回归。
● 使用
的
范数:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_622.jpg?sign=1739923040-4emUwryydn0dl1lxTQd28kbTJKZz7Vik-0-0c9f7bfdc3979d0caa3aa2365cb36d1c)
惩罚项使用范数的线性回归称为岭回归(Ridge回归)。
除此之外,还有其他实现正则化的方法,比如弹性网络(Elastic Net),就是通过平衡范数和
实现了正则化。在Sklearn库的sklearn.linear_model模块中,有专门针对正则化的线性模型,不妨参考。