搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多人工智能、机器学习干货
第七章 正则化
7.1 过拟合问题
7.1.1 什么是过拟合
让我们继续使用用线性回归来预测房价的例子来了解什么是过拟合(over-fitting)。下图通过建立以住房为面积为自变量的函数来预测房价。
第一个模型用一次函数来拟合数据集,它是一个线性模型,欠拟合(under-fitting),另一个说法是这个算法具有高偏差(high-bias),其不能很好地拟合训练数据。第二个模型用二次函数来拟合数据集,其拟合效果很好。第三个模型用四次多项式进行拟合,那么我们就有五个参数,这样我们的曲线就能通过全部的五个训练样本。这看起来似乎很好的你喝了训练集,但因为它通过了所有的数据点,是一条扭曲的曲线,实际上我们不认为它是一个好的模型。这个问题我们称之为过拟合(over-fitting),另一种说法是这个算法具有高方差(high-variance)。
总结来说,过拟合(over-fitting)问题将会在变量过多的时候出现,这时训练出的假设能很好地拟合训练集(代价函数可能非常接近于0),它千方百计地拟合训练集,导致无法泛化(generalized)到新的样本中以至于无法预测因样本的价格。这里的**泛化(generalize)**指的是一个假设模型应用到新样本的能力。新样本数据是指没有出现在训练集的房子。
同样的过拟合问题也可能在逻辑回归中出现。
第一个模型用一条直线来分开正负样本,它不能很好地拟合数据,所以它是一个欠拟合的例子,或者说具有高偏差的假设模型。第二个模型在第一个模型的基础上加入了一些二次项,这使得我们的判定边界很好地拟合了数据。第三种情况用高阶多项式来拟合数据,那么逻辑回归的判定边界可能会变得扭曲,这不是一个用于预测的好的假设模型。这是一个过拟合例子,或者说是一个有高方差的假设模型,它无法做到很好地泛化到新样本。
7.1.2 如何解决过拟合问题
在之前的例子中,当我们使用一维或二维数据时,我们可以通过绘制出假设模型的图像,然后选择合适的多项式阶数。例如之前房价预测的例子,我们可以用上述方法,但是我们的学习问题可能需要很多变量,并且这不仅仅是选择多项式阶次的问题。过多的特征会增加绘图的难度,如果训练数据很少,那我们就会出现过拟合的问题。为了解决过拟合问题,我们有以下两个方法来解决:
- 尽量减少选取变量的数量
- 人工检查变量清单,并以此决定哪些变量更为重要,哪些特征需要保留,哪些应该舍弃。
- 模型选择算法,它可以对需要保留和舍弃的变量进行自动选择。
- 正则化(regularization)
- 尽量保留所有的特征变量,但是减少量级或参数 θ j \theta_j θj的大小。
- 正则化在我们有许多特征,并且每个特征都对预测值 y y y有一定贡献时非常有用。
7.2 代价函数
7.2.1 惩罚项
在之前的例子中,我们发现如果使用一个二次函数来拟合这些数据,会得到一个不错的结果,而用阶数过高的多项式去拟合数据,虽然看上去拟合效果很好,曲线通过了每一个数据点,但实际上这个函数过拟合了,泛化的不好。
现在,让我们在这个高阶函数中加入惩罚项(penalize),使得参数 θ 3 , θ 4 \theta_3,\theta_4 θ3,θ4非常小,即我们要最小化其均方误差代价函数:
m i n θ 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y i ) 2 + 1000 θ 3 2 + 1000 θ 4 2 min_\theta \frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x ^{(i)})-y^{i})^2+1000\theta_3^2+1000\theta_4^2 minθ2m1i=1∑m(hθ(x(i))−yi)2+1000θ32+1000θ4