在监督学习中,例如回归和分类,通常有两种情况下生成的模型不能很好地拟合数据:过拟合(overfitting)和欠拟合(underfitting)。
1. 简介
1.1定义
- 要很好的理解过拟合和欠拟合,就必须先理解什么是拟合和泛化能力:
拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小。
泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。 - 了解了拟合和泛化后我们再来看过拟合和欠拟合的定义:
过拟合:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。
或者更通俗的话来说:过拟合模型是与训练数据拟合较好的模型,即误差很小或没有误差,但不能很好地推广到不可见数据。
欠拟合:模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
过拟合和欠拟合模型的泛化能力都不强。
1.2 举例
1.2.1 回归算法中
下面举了一个关于回归算法的拟合问题:
下图中显示了房子面积与价格的关系,红叉是已知数据:
第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集:
第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据
我们可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;而中间的模型似乎最合适。
1.2.2 分类问题中
分类(逻辑回归)问题中过拟合和欠拟合与回归(线性回归)类似,下图举了一个简单的例子,蓝色圆圈与红叉代表两种不同的类别:
图中第一个模型欠拟合,无法学习到数据的有效特征,第三个模型过拟合,模型学习到较多的特征导致所有的训练数据都被完美的拟合上,而第二个模型的泛化能力较好。
2. 解决方法
2.1 原因
我们先总结一下导致过拟合与欠拟合的原因:
过拟合 | 解释 |
---|---|
训练样本抽取错误 | 如样本数量太少,选样方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则 |
参数太多,模型复杂度过高 | 例如房价的第三个模型 |
样本噪音干扰过大 | 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则 |
权值学习迭代次数过多 | 权值学习迭代次数过多,拟合了训练数据中的噪声和训练样例中没有代表性的特征 |
欠拟合 | 解释 |
---|---|
特征量过少 | 可能还存在其它特征对模型产生较大的影响,但并未考虑 |
参数太少,模型复杂度过低 | 例如房价的第一个模型 |
2.2 解决方法
过拟合 | 解决方案 |
---|---|
训练样本抽取错误 | 数据增强(data augmentation):对图像旋转,缩放,剪切,添加噪声等 |
参数太多,模型复杂度过高 | 调小模型复杂度,使其适合自己训练集的数量级(缩小宽度和减小深度)、通过正则化引入额外新信息带来惩罚度 |
样本噪音干扰过大 | 有噪音时,更复杂的模型会尽量去覆盖噪音点,可以通过降低模型复杂度,或者选取与测试样本类型相同的训练样本 |
权值学习迭代次数过多 | 使用早停(early stopping):即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合 |
欠拟合 | 解释 |
---|---|
特征量过少 | 增加新的有效影响特征或多项式特征 |
参数太少,模型复杂度过低 | 使用复杂度更高的非线性模型,比如核SVM 、决策树、深度学习等模型 |