AI技术百科
什么是欠拟合与过拟合?
我们希望通过机器学习学得的模型的泛化能力比较强,直白来说就是使得学得的模型不仅仅在在训练样本中工作得很好,更应该在新的样本中工作很好。
通常我们把分类错误的样本数占总样本数的比例称为错误率(error rate),而准确度(accuracy)= 1 - 错误率。举例来说,如果在 m 个样本有 a 个样本分类错误,那么错误率为 a/m,准确度为 1 - a/m。
更一般地,我们将模型在训练集上的误差称为训练误差(train error),在测试集上的误差称为测试误差(test error),在假设测试数据与真实数据独立同分布的前提下,测试误差可以作为泛化误差(generalization error)的近似。我们当然是希望能够得到泛化误差小的模型,但是由于我们事先不知道测试集是什么样子,所以我们在使用机器学习算法时,不会提前固定参数,而是调整参数去降低训练误差。在整个过程中,泛化误差的期望会大于等于训练误差的期望。
想要保证模型效果好,也就是泛化误差比较小,可以通过以下两个因素来实现:
1、降低训练误差。
2、缩小训练误差和泛化误差的差距。
这两个因素分别对应机器学习的两个主要挑战:欠拟合(underfitting)和过拟合(overfitting)。欠拟合是指模型不能再训练集上获得足够低的误差,而过拟合是指训练误差和泛化误差之间的差距太大。
欠拟合相对容易理解点,过拟合可能不太容易理解,这里给出一个形象的比喻。上学考试的时候,有的人采取题海战术,把每个题目都背下来。但是题目稍微一变,他就不会做了。因为他非常复杂的记住了每道题的做法,而没有抽象出通用的规则。直观理解,这种情况就属于过拟合。
我们再来通过一张图片来直观地理解下欠拟合与过拟合的区别。有一组数据集包含了特征X和标签Y,简单起见,我们只考虑一个特征,现在我们通过三个假设函数来拟合这批相同的数据,得到结果如下:
解释下图片的内容:(左) 用一个线性函数拟合数据得到的模型导致欠拟合——它无法捕捉数据中的曲率信息。(中) 用二次函数拟合数据得到的模型在未观察到的点上泛化得很好。这并不会导致明显的欠拟合或者过拟合。 (右) 用一个高阶的多项式拟合数据得到的模型会导致过拟合。
相比于欠拟合,过拟合在实际工作中更为常见,出现过拟合的原因常见的有以下几种:
1、训练集和测试集分布不一致。
2、训练集的数量级和模型的复杂度不匹配。训练集的数量级小于模型的复杂度。
3、样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系。
链接:https://www.jianshu.com/p/7f4920d4d7b5