课时7 过度拟合和正则化
7.1 过度拟合
之前学习过的线性回归和逻辑回归在机器学习问题的应用当中,都会遇到过度拟合的问题,后面学习的正则化可以改善这个问题。
如上图,我们继续用线性回归预测房价的例子。第一个图,用一次函数的模型来拟合数据,很明显直线拟合的不是很好,我们称为欠拟合,或称这个算法具有高偏差
第二个图用二次函数拟合数据,效果很好
第三个图用四次函数拟合数据,图中所示函数图像经过了每一个数据点,似乎拟合的很好。但它上下波动,我们并不认为这是一个好模型,我们称为过度拟合,或这个算法具有高方差。直观的说,我们要拟合一个高阶多项式,那么这个假设函数能拟合几乎所有的数据,但会面临可能的函数太过庞大、变量太多的问题,我们没有足够的数据来约束它,来获得一个好的假设函数,这就是过度拟合。总而言之,当你的参数过多的时候,训练出的假设可能千方百计的拟合上你的数据,使你的代价函数非常接近0,但你得到的假设函数曲线无法泛化到新的样本中。
过度拟合在逻辑回归中的例子
我们在使用一维或二维参数时,可以通过绘制假设模型曲线来将结果可视化,我们可以通过绘制模型来选择合适的多项式阶次。但在更多的时候,我们有非常多的参数,我们将更难以通过数据可视化来解决问题。具体地说,如果我们试图预测房价,有许多特征变量可能与之有关,但如果有过多的变量和较少的训练数据,就会出现过度拟合,如上图。
办法:
1.尽量减少变量的数量,通过人工选择或者模型选择算法(自动选择保留哪些特征),但也许所有的特征变量都是有用的,我们并不想舍弃。
2.正则化。
7.2 代价函数 正则化
在之前的例子中我们看到,上图的这一组训练集,用二次模型就可以拟合的比较不错,但用四次模型拟合时就会出现过度拟合的问题,这是为什么?
我们不妨在代价函数中加入惩罚项,图中用蓝色字体写出,目的是让θ3和θ4非常小可能趋近于0。当这两个参数非常小的时候,我们的四次模型相当于一个二次模型加上两个非常小的量,总的来说,这就是正则化的思想。
这种思想就是,如果我们的参数值较小,我们会得到一个更简单的假设模型。大体上说,如果将参数都加上惩罚项,我们就会得到更简单的模型。从结果来看,当参数变小时,我们会得到更平滑的曲线,这就改善了过度拟合的问题。
例如在房屋价格预测问题中,假设有100个特征变量,那么就会有101个参数,我们并不知道哪个是高阶项,不知道哪个对预测结果的影响较小。那么就需要修改线性回归的代价函数,来缩小所有的参数。我们在假设函数后面加入正则化项,用红色字体写出。正则化项让θ1-θ100进行正则化,没有θ0,这是约定俗成的,因为加不加入这一项对结果没有什么影响。
写下优化目标(也就是修改后的代价函数),也就是新的代价函数。其中正则化项中的λ被称为正则化参数。λ的作用是控制两个目标之间的取舍,第一个目标也就是代价函数中的前一项,即更好的拟合数据,第二个目标就是代价函数中的后一项,即使参数尽量小,调整λ让两者之间实现平衡。
也就是说,正则化参数并不是越大越好,当λ太大,所有的参数都会趋近于0,那么假设函数中就只剩θ0项,结果就是一条水平直线,这是欠拟合问题。
注意,这个修改后的代价函数,在视频中反复称为优化目标。
7.3 线性回归的正则化
我们将在这一节把梯度下降算法和正规方程推广到正则化线性回归中。
代价函数:在线性回归的一般目标后加上正则项,称为优化目标。
之前我们使用梯度下降算法优化参数,现在我们单独写出θ0的梯度下降更新过程,剩下的是θ1-n。这么做是由于在正则化线性回归中,惩罚对象是θ1-n,,而并没有惩罚θ0。具体地说,如果我们要用正则化项修改这个算法,就是在图中下面那一部分上加入品红色线写出的一项。实际上这就是带正则项的代价函数J(加入正则项的)对参数θ的偏导数。
我们把梯度下降算法中第二个式子中包含的θj的项全部都提出来,得到一个新的式子。就会发现θj的系数项,它是一个比1略小一点(如0.99)的数,也就是说将θ变小了一点点。而后面需要减去的项,实际上和添加正则化之前的梯度算法更新一样。也就是说当我们进行正则化线性回归时,我们要做的就是每次都将θ变小一点点,然后进行和之前一样的操作。
上面讲的是梯度下降算法,下面是正规方程在正则化线性回归问题中的公式
黑色字体写出的是不加正则化的,蓝色字体是有正则化的。
7.4 逻辑回归的正则化
对于逻辑回归问题,我们曾经谈到过两种优化算法,一种是用梯度下降来优化代价函数J(θ),还有一种是更高级的优化算法。
在上面的小节介绍过,逻辑回归也会出现过度拟合的问题。如果你的逻辑回归有很多特征,可能会有一些无关紧要的多项式,最终会导致过度拟合。
为了使逻辑回归的代价函数加入正则化,我们将在原式上做一些修改,加入一些惩罚项,使得参数尽量小。
对于正则化逻辑回归问题的梯度下降算法,与正则化线性回归问题一样,需要加入一项。并且该梯度下降算法尽管和线性回归的看起来非常相像,但是和之前的例子一样,逻辑回归问题中的假设函数h()与线性回归是不一样的,所以梯度下降算法实际上也是两回事。同样的,蓝色方框中的是新的代价函数J对θ的偏导数。
如何在更高级的优化算法中使用正则化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!