如何解决过拟合问题
考虑从 预测 y 的问题。下面最左边的图显示了将
拟合到数据集的结果。我们看到这些数据并不是直线的,所以这个数据并不是很好。
相反,如果我们添加了一个额外的特征 x2,并且拟合 ,那么我们获得的数据稍微更适合,如上图。
但是并不是添加的多项式越多越好。但是,添加太多特征也是一个危险:最右边的数字是拟合五阶多项式 的结果。我们看到即使拟合曲线完美地传递了数据,我们也不会认为这是一个很好的预测,上图最右边的图就是过度拟合的例子。
过拟合:过多的变量,假设函数可能很好的拟合这些数据,J()
0,但是不能“泛化”地适用于新的样本。
上图最右边的图也称有高方差。如果我们拟合一个高阶多项式,有过度的特征,并且这个假设函数能拟合几乎所有的数据,这就面临可能的函数太过于庞大,变量太多的问题。我们没有足够的数据去约束它,来获得一个好的假设函数,这就是过度拟合。
欠拟合或高偏差是当我们的假设函数h的形式很难与数据的趋势作图时。它通常是由一个功能太简单或功能太少造成的。另一方面,过度拟合或高度方差是由适合现有数据的假设函数引起的,但不能很好地预测新数据。它通常是由一个复杂的函数造成的,它会产生大量与数据无关的不必要的曲线和角度。
这个术语适用于线性和逻辑回归。解决过拟合问题有两个主要选项:
1. 减少特征的数量:
- 手动选择要保留的特征,哪些变量更为重要,哪些变量应该保留,哪些应该舍弃。
- 使用模型选择算法(稍后在课程中学习),算法会自动选择哪些特征变量保留,哪些舍弃。
缺点是舍弃了一些特征以后,也就舍弃了一些问题的关键信息。
2. 正则化
- 保留所有的特征,但减少参数
的大小或者减少量级。
- 当有很多个特征的时候,并且每个特征都会对最终预测值产生影响,正则化可以保证运作良好。
正则化目的是尽量去简化这个假设模型。因为这些参数都接近0的时候,越简单的模型也被证明越不容易出现过拟合的问题。
减少一些数量级的特征,加一些“惩罚”项(为了使代价函数最小,乘以 1000 就是惩罚)。
代价函数:
是正则化项,它缩小每个参数的值。
是正则化参数,
控制两个不同目标之间的取舍,即更好的去拟合训练集的目标 和 将参数控制的更小的目标,从而保持假设模型的相对简单,避免出现过拟合的情况。
但是如果选择的 太大,可能会过多地消除特征,导致
都约等于 0 了,最终预测函数变成了水平直线了。这就变成了欠拟合的例子了(偏见性太强,偏差过高)。
线性回归的正则化
1. 线性回归梯度下降正则化
将上面的式子化简得:
在上面的式子中 恒小于 1,约等于 1(0.999) 。于是梯度下降的过程就是每次更新都把参数乘以 0.999,缩小一点点,然后再向最小点的方向移动一下。也就是在梯度下降的基础下,先对
缩小,然后再进行正常的梯度下降。
注意:上述的的j 的值为大于等于1的整数,不包括0.也就是
更新式子不变,仍然是
2. 线性回归正规方程正则化
之前推导过的正规方程结论:
正则化以后,上述式子变成了:
在之前的讨论中,有一个前提条件是 是非奇异(非退化)矩阵, 即
在上述正则化的式子里面,只要 ,就不存在不可逆的问题了。因为
这一项一定是可逆的,因为它一定不是奇异矩阵。所以正则化还能解决不可逆的情况。
逻辑回归的正则化
之前讨论过的代价函数是:
正则化以后:
逻辑回归梯度下降正则化
式子等同于线性回归正则化
虽然式子和线性回归的一模一样,不过这里的 代表的意义不同,逻辑回归中:
注意:
1. 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的ℎ ? (?)不同所以还是有很大差别。
2. 不参与其中的任何一个正则化。