上QQ阅读APP看书,第一时间看更新
2.3.1 过拟合与欠拟合
简单来说,如果一个模型在测试集(testing set)上表现得与在训练集(training set)上一样好,我们就说这个模型的泛化能力很好;如果模型在训练集上表现良好,但在测试集上表现一般,就说明这个模型的泛化能力不好。
从误差的角度来说,泛化能力差就是指测试误差(testing error)比训练误差(training set)要大很多的情况,所以我们常常采用训练误差、测试误差来判断模型的拟合能力,这也是测试误差常常被称为泛化误差(generalization error)的原因。机器学习的目的就是降低泛化误差。
我们在训练模型的时候有两个目标:
1)降低训练误差,寻找针对训练集最佳的拟合曲线;
2)缩小训练误差和测试误差的差距,增强模型的泛化能力。
这两个目标对应机器学习中的两大问题: 欠拟合(underfitting)与过拟合(overfitting)。两者的定义如下。
- 欠拟合是指模型在训练集与测试集上表现都不好的情况,此时,训练误差、测试误差都很大。欠拟合也被称为高偏差(bais),即我们建立的模型拟合与预测效果较差。
- 过拟合是指模型在训练集上表现良好,但在测试集上表现不好的情况,此时,训练误差很小,测试误差很大,模型泛化能力不足。过拟合也被称为高方差(variance)。
我们随机创建20个符合的点,分别用一次多项式回归、二次多项式回归和十次多项式回归去拟合数据。拟合结果如图2-11所示(代码见本书代码资源中的underfitting_overFitting.R)。
图2-11 不同算法拟合训练数据集的效果
其中,图2-11a使用了一次多项式去拟合数据,出现了欠拟合现象;而图2-11c用了十次多项式去拟合数据,虽然函数穿过了绝大部分数据,但如果我们对新数据进行拟合时,该函数就会出现较大的误差,即发生过拟合现象。