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