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