上一篇 ※※※※※※※※ 【回到目录】 ※※※※※※※※ 下一篇
8.1 过拟合问题
我们首先来解释一下什么叫欠拟合和过拟合。
左边的图:该模型是一个线性模型,不能很好地拟合出训练集,有较大的偏差,这就是欠拟合;ps:当然,对于数据集较为简单的情况,我们也可以采取取对数等预处理方式,从而使得线性模型能较好的拟合出数据,但不太常用。
中间的图:增加了一个特征?之后,该模型可以较好的拟合出训练集;
右边的模型:增加过多的特征?,虽然模型非常好的拟合了,但是由于过于强调去拟合训练集的数据,丢失了算法的本质:预测新数据。当我们拿该模型去预测其他的测试集数据时,效果会较差,存在高方差问题,这就是过拟合。
除了回归问题,分类问题中也存在这样的情况:(从左到右依次为欠拟合、拟合恰当、过拟合)
过拟合问题出现的根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。 过度的拟合了训练数据,而没有考虑到泛化能力。
因此,解决过拟合问题的方式有:
1、降低特征维度:丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA);
2、正则化: 保留所有的特征,但是减少这些特征的大小(白话说叫让多余的特征没有存在感)。
3、增加训练数据:使用较大的训练数据也可以减少过拟合问题,但是一般收集数据集比较麻烦。
8.2 代价函数
在上面的回归问题中,出现过拟合问题的模型为:ℎ?(?) = ?0 + ?1?1 + ?2?22 + ?3?33 + ?4?44 。从前面的三个例子中我们知道,正是因为高阶项导致了过拟合的产生,如果我们能使这些高阶项的系数(如?3、?4)变为0的话,那么就可以较好的拟合了。
因此,一定程度上减小这些参数 ? 的值,就是正则化的基本方法。因此我们将所有的特征带入惩罚过程,并让代价函数的最优化程序来决定惩罚的程度。
修改后的代价函数:
其中,? 称为正则化系数。注意:j 是从1开始的,我们不对 ?0 进行惩罚。
增加正则化项可以使 ? 减小的原因在于:优化过程中,为了使代价函数尽可能的小,在? 的值较大的情况下,所有的 ? 都得在一定程度上减小。
正则化后的模型与原模型对比如下:
如果 ? 取得过大,那么所有的参数都最小化了,使得模型变成了 ℎ?(?) = ?0 ,变成了欠拟合。所以对于正则化,我们需要选取一个合理的 ? 。
8.3 线性回归的正则化
对于线性回归问题,我们之前介绍过两种学习算法:梯度下降和正规方程。接下来介绍将正则化加入到两种学习算法中的细节。
1、梯度下降
因为未对?0 进行正则化,因此梯度下降算法被分开处理(?0 为一部分,其他的?为一部分):
整理第二个式子:
对于未增加正则化项的式子:
可以看出:正则化线性回归的梯度下降,其变化主要在于:每次在原有的更新规则基础上令 ? 值减少了一个额外的值。
2、正规方程
我们同样也可以利用正规方程来求解正则化线性回归模型:
公式中矩阵的维度为:(n+1,n+1)。
8.4 Logistic回归的正则化
在第七章中,我们学习了多种优化算法:基础的为梯度下降,以及一些高级优化算法(见7.6)。
在这些高级优化算法中,你需要做的是设计好代价函数 J(?) ,然后调用高级优化算法去最小化 J(?) 。
与线性回归一样,我们也需要修改代价函数,即在代价函数中添加正则化项:
1、梯度下降
这看起来和线性回归的梯度下降过程一样,然而我们需要注意的是:在逻辑回归中,h?(x) = g(?TX),与线性回归完全不同。
2、高级优化算法
我们依旧可以用 fminuc 函数等高级优化算法来求解代价函数最小化的参数,值得注意的是参数?0的更新规则与其他情况不同。
如果这篇文章帮助到了你,或者你有任何问题,欢迎扫码关注微信公众号:一刻AI 在后台留言即可,让我们一起学习一起进步!
以上,就是吴恩达机器学习课程第八章的主要内容。