
第2章 模型评估与选择
2.1 经验误差与过拟合
习题2.1 教材2.1节介绍了“经验误差”(empirical error)与“泛化误差”(generalization error)的概念,以及机器学习中的“过拟合”(overfitting)现象.请回答以下问题:
1.图2.1中的黑色圆点表示训练数据,使用曲线拟合.针对图中的3种情况,请说明模型是否发生“欠拟合”(underfitting)或“过拟合”.

图2.1 针对回归任务构建模型
2.将经验误差或泛化误差作为纵轴,将模型复杂度作为横轴,绘制曲线图(如图2.2a所示),请判断两条曲线哪条更可能对应经验误差,哪条更可能对应泛化误差.

图2.2 模型误差随模型复杂度以及训练样例数量的变化
3.考虑训练样例数量m对模型的影响.针对给定的训练数据训练模型,并使用未见数据计算模型的泛化误差.图2.2b展示了经验误差和泛化误差随着训练样例数量的变化趋势,请判断两条曲线哪条更可能对应经验误差,哪条更可能对应泛化误差.
4.模型的训练过程一般通过迭代方式进行.随着模型趋于收敛(converge),每一次优化迭代后,利用中间模型计算其经验误差和泛化误差,得到如图2.3所示的两种情况.请说明图2.3a和图2.3b中的模型是否发生“欠拟合”或“过拟合”.

图2.3 模型误差随模型迭代过程的变化
解答
训练误差(training error)或经验误差指模型在训练集上的误差.泛化误差指模型在测试集上的误差.一般地,将模型的实际预测输出与示例的真实标记之间的差异称为“误差”(error).当模型把训练示例学得“太好”时,很可能已经把训练示例自身的一些特点当作了所有潜在示例都会具有的一般性质,这样就会导致泛化性能下降,这一现象称为“过拟合”.与过拟合相对的情况是欠拟合,一般指模型对训练示例的一般性质尚未学好.本题中的几个小题可依此进行判断.
对模型欠拟合和过拟合的判定一般需要同时观察经验误差和泛化误差的关系.对于同一个问题(如某个分类问题),有的模型会造成欠拟合,而有的模型会造成过拟合[1].
1.图2.1展现了使用不同复杂程度下的曲线拟合数据(圆点)的情况.可以看出,曲线越平滑,则模型越简单,参数越少;曲线越陡峭,则模型越复杂,参数越多.图2.1a中使用直线拟合数据,而数据分布本身呈弯曲趋势,直线无法覆盖大多数数据,模型未能刻画好数据的特性,发生“欠拟合”;图2.1b中的模型较好地穿过了大部分数据,且和数据本身的曲线分布情况一致,此时模型能够较好地反映数据特性,未发生“欠拟合”或“过拟合”;图2.1c中的模型最为复杂,几乎穿过了每一个数据点,且展现出局部抖动特性,但这些突变可能是由于数据收集中的噪声造成的,并不能反映数据本身的性质,模型针对给定的训练数据拟合较好,但不一定能泛化到新数据上,发生“过拟合”.
本小题关于过拟合的讨论可联系习题1.4中关于线性分类器权重大小如何影响模型的讨论.一般而言,图2.1c中的线性模型权重取值较大.
2.根据图2.1的讨论,模型开始时过于简单,能力较弱,无法刻画数据的特性,发生“欠拟合”,而当模型过于复杂时,充分刻画了训练数据,但过度关注某些细节,导致无法对新样例进行准确预测,发生“过拟合”.在图2.2a中,曲线1对应“泛化误差”,曲线2对应“经验误差”.经验误差随着复杂度增加逐渐降低,而泛化误差会先降低后增加,因此,在构建机器学习模型的过程中,不能一味地以经验误差为标准,需要防止过拟合现象.
3.图2.2b的纵轴仍表示误差,但横轴表示训练样例的数量.此时曲线2代表了经验误差.一般而言,样例较少时模型更容易将所有样例预测正确,而当有更多的样例时对同一个模型的要求更高.对于同一个模型,训练样例数量增加时经验误差会随之增加,而当经验误差涨幅逐渐缩小时,分类器的泛化性能良好.曲线1对应泛化误差.这是由于随着训练样例数量增加,更容易让模型从数据中发现规律,提升泛化性能,从而降低泛化误差.
4.图2.3中横轴为训练过程,纵轴为误差.在迭代训练模型的过程中,模型逐步拟合数据,挖掘数据中的规律信息.在图2.3a中训练误差和测试误差都在下降,说明模型在逐步拟合数据,而训练误差在图中仍有下降趋势,说明模型对数据仍未完全拟合,因此发生“欠拟合”.而在图2.3b中,两条曲线的趋势和图2.2a类似,训练误差逐渐降低,而测试误差先降后升,说明随着模型的训练,模型过度描述数据的性质,发生“过拟合”.从本题的分析能够看出,欠拟合比较容易克服,可以进一步训练模型或增加模型复杂度,例如在决策树学习中扩展分支,在神经网络学习中增加训练轮数等.而要克服过拟合相对困难.
习题注释 本题主要考查对过拟合的理解,并通过对模型训练过程不同角度的描述探究模型是否发生过拟合.在实际训练模型时,需要根据经验误差和泛化误差的变化情况进行判断与调试,从而确定是否停止训练或者修改模型复杂度.
如何克服“过拟合”是机器学习中的一项长期难题.不同的机器学习模型都通过各自的模型设计或归纳偏好对过拟合进行预防.而对于过拟合现象本身,近年来也有新的发现[2].
习题2.2 假设在训练集上训练模型直到其收敛,并在与其互斥的测试集上对模型进行测试评估.观察评估结果发现模型的泛化误差很高,然而模型的经验误差却接近于0.下面哪些操作可以帮助缓解模型面临的问题.选出可行的方案,并进行解释.
A.增加训练集样例数量.
B.减少训练集样例数量.
C.增加模型复杂度(例如,当前分类器是支持向量机时,使用一个更加复杂的核函数;或者当前分类器是决策时,增加树的深度).
D.降低模型复杂度.
E.同时使用训练集和测试集样例训练分类器,并在测试集上测试.
解答
A和D是可行的方案.当前情况称为过拟合.常见的过拟合的原因有:①训练集样例未能准确反映数据分布,例如在样例数量过少、样例有噪声、采样错误等情况下;②模型参数过多,使得模型复杂度过高,能够完美地拟合训练集上的样例,但拟合了数据特殊的性质,在未见过的测试集样例上无法很好地预测;③假设条件不存在或者错误.对于选项C,当模型复杂度增加时,会出现过拟合的情况,此时经验误差会下降,然而测试误差会先下降后上升.若模型发生欠拟合,则增加模型复杂度一般能够提升拟合效果.对于选项E,需要注意模型在训练阶段不应该使用任何测试集上的样例,否则无法准确评估模型的泛化能力.
习题注释 本题主要考查对过拟合的理解,题目中提供的只是一般意义上的解决方案,在具体场景下需要具体分析.当样例数量较少时,模型很难从这些样例中学到可泛化的规律.针对这类小样本学习问题,目前有基于度量学习(metric learning)[3-4]或基于元学习(meta learning)[5-7]等方法.