机器学习西瓜书复习 - 1 线性回归

本文深入探讨了线性回归、正则化项及对数几率回归的原理与应用,通过复习核心概念,如梯度下降、最大似然估计、贝叶斯思想等,解析了模型优化与防止过拟合的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 目录

A 说明

A.1
一开始是想复习一下线性回归的公式,再手写一遍线性回归的代码。复习到最小二乘法优化函数的正则项时,因为一开始对正则项一知半解的,于是又去了解了一下正则项的原理,这其中用到了贝叶斯的思想,以前学过,这次算是整合到一起了。由于在读一篇关于贝叶斯最大后验分布的博客时,其中谈到了用正则项来减少模型的复杂度,并不是很理解,但是随即想起了SVM的KKT条件有类似的情况,于是又复习了KKT的公式。这过程中出现了一个波折,两篇博客中的优化目标不一样的,于是又去复习了一遍梯度下降方法,包括凸函数的性质,杰森不等式等相关知识,原本还想看一看牛顿法,因为担心记不住,就作罢了。
A.2
因为复习的比较顺利,时间还有宽裕,顺便复习了对数几率的回归公式,这部分相对来说简单一些,主要是利用一些特殊函数的性质,在求softmax的导数时花费了一些时间。
A.3
这篇博客,没有图片和公式,只有一些文字,只为了自己温习所用,或许会有涉及引用其他博客的内容,就不注明转载了,反正也都是转来转去的,有冒犯之处,还请见谅

B 线性回归

B.1
回归,从文字上来看,是Regression,原本的意思是后退,即re(向后)+gress(走),可以理解为回归本源。那么线性回归,就是将数据回归到一根线,这根线就是这群数据的本源。
B.2
线的方程是y=wx, 其中w包含了偏置b,用线来表示模型很好理解,把一个神经网络拆开,其中就是一条一条的线,线上面挂着的参数,就是需要我们去优化的。
B.3
和神经网络一样,对单条线进行求解时,最直观的方法,就是先取一批随机的参数,再利用梯度下降的方法来对其中的参数进行更新。梯度,是一个方向,主要是针对于多元的凸函数。
B.4
凸集的定义很简单,其中集,即使一个函数和坐标轴组成的区域,这个函数成为集的边界函数。考虑集的边界函数,从其曲线上任取两点,如果两点之间的区域依然在集之中,那么这个集就是凸集。但是凸函数的定义麻烦一些,一般来说,凸集的边界函数可以认定为凸函数,但是一些资料认为凸函数是满足f(E) < E(f)的函数,也就是适合使用梯度下降的函数,这样的函数进行梯度下降时,找到的极小值即是最小值。我更倾向于另一些资料,凸集的边界函数就是凸函数,而上述的凸函数,应该是上凸函数,而对于满足f(E) > E(f)的函数,可称之为下凸函数,即满足杰森不等式的函数,其中E即期望。
B.5
对于多元凸函数,一个很形象的表示,就是一座山,山的表面就是一个凸面。站在山上的任意一个地方往下走,可以从任意方向,走出任意的长度,其中可走的各个方向,即是多元中的元,走的长度,即步长。仅仅考虑用最快的时间到达山底,那么选择最陡的路径是最快的,从直觉上来看,这个梯度本质上是一个方向,这个方向由函数在各个元的偏导得来,导数对应着斜率,即倾斜度,故最陡的地方即是梯度最大的地方。另一方面,两点之间,直线最近,从切线的方向走,肯定是最快的,这个切线亦是求导而来。
B.6
梯度下降方法,就是选定一个梯度作为方向,按照给定的步长对参数进行更新,更新的最终结果是达到一个最小的损失函数,即边界函数,其中也可以设定其他目标来提前终止更新。进行梯度更新的时候,一次只更新一个元,即一个分量,这种更新方法,第一次见到是求解SVM的SMO算法,之后还在变分推断中见到过。
B.7
梯度下降方法更新的目标是损失函数,损失函数,从字面上来看,是Loss,即失去的,因为我们使用任何模型去拟合数据集的时候,无法考虑到现实世界中的方方面面,计算出来的值与现实中实际的值,有一些偏差,即会损失一些信息。最直观的损失,即输出值跟真实值的差,|f-y|,对于线性回归最常见的损失函数,亦是如此,诸如|f-y|,或前者的平方,亦或者是前二者的线性组合。
B.8
以平方差为例,即最小二乘法, 这里实际上引入了一个先验知识,即,假设我们知道误差的分布是符合标准正态分布的。从平方差的定义来看,若误差越小,则越接近真实值,也就是说,我们的模型跟真实的数据分布是越匹配的。这明显就是最大似然的思路了,即训练出一个最贴近真实数据分布的模型,于是这里可以用最大似然分布的固定步骤来求解,比如:连乘,求对数,之后能得到一个求最大值的表达式。为了利用梯度下降的方法,对这个表达式取负数,即转变成了一个求最小值的表达式,也就是最小二乘法最终的损失函数
B.9
更新的步骤:随机初始参数w -> 以其中一个分量wj为唯一变量,对损失函数求导 -> 此参数的值减去(梯度d*步长a)完成一次更新操作 -> 继续更新直到满足停止条件

C 正则化项

C.1
讨论一下正则化项的目的,其中之一是为了减少模型的复杂度,防止过拟合。这里记录一下自己的理解,将来应该会有更新的想法。直观上来说,一个模型越复杂,那么模型能够拟合的数据范围更大,举个例子,对于一个现实中的问题,一个完全拟合所有数据样本的模型,意味着模型将一些异常样本也囊括在其中,因此,模型能拟合的数据范围越大,反言之,从这个模型中抽样得到的数据分布也拥有更广的范围,进一步说,模型的方差也会越大。
C.2
如果一个模型拟合了太多的数据,导致过拟合,那么一个比较直接的方法就是限制其拟合数据的能力,从贝叶斯的角度来说,即引入先验分布。假设损失函数符合一定的先验分布,比如最小二乘法中的标准正态分布,那么相当于为模型引入了一条限制规则。这个规则,可以用KKT的条件来对比理解,因为KKT条件本身,便是一个目标函数f,再加上一些限制规则h。从KKT条件的定义来说,对于一个目标函数,要求解其最小值,应该朝着负梯度的方向移动。因为有限制规则的存在,当走到边界处,无法继续行走,故达到了限制的效果,从另一个角度来说,一些异常值,被排除在外了。其实这个时候,停留的位置,h和f的梯度是同向或者反向的,这里由于h=0等价于-h=0,故存在梯度反向的情况
C.3
从贝叶斯定理的角度来说,Pw|y = (Py|w*Pw)/Py,取对数时,可消去一部分与w无关的表达式,得到
Pw|y = Py|w + Pw,其中Pw即w的先验分布,而Py|w,很明显,是给定w参数的模型,对此模型进行最大似然的求解,便等价于最小化误差。依然以最小二乘法为例,对左边的表达式进行优化时,因为w的分布已约定,其实是求Py|w的最大值,和求损失函数是一个原理。而多出来的那部分Pw,即等同于正则化项,比如假设w的先验分布为标准正态分布,那么得到的正则化项,即是L2正则
C.4
由于正则化项引入了先验分布,对损失函数提出了一些合理的限制,故能减轻模型的复杂程度,对于神经网络而言,亦可以用更少的网络层来达到同样的效果,这样也减少了模型的参数。

D 对数几率回归

D.1
和线性一样,从回归的本源开始,对于对数几率回归,是需要我们找到一根什么样的线来拟合数据。一个一个字来拆解,先是几率odds,说明我们要拟合的一个概率,因为概率的取值范围是[0,1],所以需要用对这个范围拉长,来充分施展我们无所不能的线。因为对数几率回归的本质是作为一个二分类,以类T为例,如果我们要确定一个样本是T类,并不需要概率是1,一般只需要样本属于T的概率y大于0.5就可以了,由于y>0.5 -> y>1-y -> (y/1-y) > 1, 这样这个概率表达式的取值范围被拉大了。至于为何要用对数,先做个记号,这次写的很累了,下次复习的时候再来思考,猜测一下原因可能是用对数来将这样一个复杂的非线性除法变成线性组合,总之。这样一个取值作为线的目标,其余的部分就跟标准的线性回归一样了。
D.2
如果直接从公式来看的话,就清晰多了,相当于用一个sigmoid的函数将一个线性回归封装起来了,用凸集的定义来看,如果一个函数被另一个函数所封装,那么它肯定是逃不出前者的凸集,其取值范围被限制在了一个非常适合用来做二分类的sigmoid激活函数中。无论用以封装的函数如何复杂,总归是一根线,繁杂如神经网络,也是一根根线组成,而定义这线的,即使参数w。
D.3
所以,直接一点,利用最大似然的方法找出需要优化的函数,将其转变为求最小值的形式,其余的,按照标准线性回归的梯度下降方法求解即可。需要注意的是,sigmoid函数拥有非常良好的求导性质,因此计算梯度时,是很方便的
D.4
既然提到了二分类,自然想再看一下多分类。无论多分类任务的类别之间是否互斥,softmax都是一个很好的分类器。softmax的形式和sigmoid有点像,但是公式更加优美,没有了突兀的0,1,全都可以用一个漂亮的指数函数来表达。可以想象得到,和sigmoid函数一样,softmax必定也有着非常平滑并且利于分类的函数图像。再者,将softmax和交叉熵结合起来,计算梯度的过程非常简单 Dy|x = (y-1)*x
D.5 这次到此为止,交叉熵跟KL散度的关系太密切了,今后再写,接下来的任务原本是用代码实现两个回归公式,但是考虑到时间原因,已经改变了注意。去了解一下scikit-learn上相关的资料,并且用其API来实现上述两个公式。还有,要记得画几个softmax的图像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值