当我们使用前面博客所讲述的线性回归和逻辑回归时,经常会出现一种过拟合(over-fitting)问题。下面对过拟合下一个定义:
过拟合(over-fitting):
所谓的过拟合就是:如果我们有非常多的特征时,通过使用这些特征学习得到的假设可能非常好地适应训练集(代价函数很小,几乎为零),但是可能这种假设不能推广到新的数据(对于新的数据预测的结果不好,也就是我们所说的泛化能力不强)。
下面我们从例子中理解什么是过拟合、欠拟合等概念:
上面三组都是对于房价的预测,对于第一组来说采用的是线性模型,明显可以看出拟合的效果不是很好,误差还是很大,这种现象叫做欠拟合(有时候也称为高偏差);第三组模型采用的是四次方模型,对于训练样本来说,拟合的效果很好,损失几乎为零,但是这种拟合过于注重拟合训练数据,而忘记了训练模型的意义,即对新的数据的预测,这种模型对于新的数据预测的效果不好,这种现象称为过拟合(高方差)。显然,中间的二次方模型可以很好的拟合训练数据(虽然损失相对第三个模型较大,但是它能够很好的表征数据的特性,同时对于数据有很好的鲁棒性,但数据受到某种因素影响导致其中的少数数据偏离原始数据,该模型仍然能够很好的拟合)。
上述从回归问题中讨论了过拟合和欠拟合的现象,对于分类问题同样适用。
解决过拟合的方法:
- 去除一些不能帮助我们正确预测的特征。一般当特征数目比较多,训练样本比较少时,容易出现过拟合。所以可以手动选择一些相关的特征,去除一些不相关的特征,同时我们也可以使用一些算法来进行选择,如PCA等(后续讲解)。
- 正则化。该方法保留所有的特征,只是减少参数的大小。正则化的方法对于特征比较多时,性能也会很好,每个特征都能够对预测结果产生一点影响。
下面我们从一个例子中来理解什么是正则化的思想:
还是从上面的例子出发,我们看第三幅图像,该拟合明显出存在过拟合现象,它的假设为:
hθ(x)=θ0+θ1(x1)+θ2x22+θ3x33+θ4x44