机器学习笔记(1)——模型选择与评估

2018-02-09  本文已影响0人  _Yee

我们知道,模型是由算法基于训练集学习得到的,然而,机器学习算法有很多,不同的算法会学到不同的模型,即使是同一种算法,根据设置的参数不同也会学到不同的模型。本文要讲的内容就是如何对这些模型评估,以选择一个性能最好的。

训练误差和泛化误差

以分类问题为例,通常,我们把模型分错类的样本数占训练集总样本数的比例称为错误率(error rate),比如训练集大小为N,分错类的样本数为m,则错误率为

相应的,准确率(accuracy) 显然,准确率+错误率=1

更一般地,我们将模型的预测值与样本的真实值之间的差异称为误差(error),训练集上的误差称为训练误差(training error),新样本上的误差称为泛化误差(generalization error)测试误差(test error)
训练误差和泛化误差分别反映了模型在训练集和新样本上的预测能力,理想模型的是既有较低的训练误差,同时也有较低的泛化误差。但是,我们现在手里只有训练集,并不知道新样本长什么样子,所以实际能做的就是让训练误差最小化。
那么,是不是说训练误差越小,甚至训练误差为0的模型,就是最好的模型呢?答案是否定的。

过拟合与欠拟合

每种事物都有自身的普遍性质特殊性质
拿猫来打个比方,一条尾巴,四条腿,发出“喵喵”叫,这属于猫的普遍性,但每只猫的毛色是不尽一样,有的是纯色,有的是渐层,有的是三花等等,这属于猫的特殊性。
我们希望能从训练集中学到出所有样本(包括未知的样本)的普遍性质,这样才能对未知样本做出好的预测。然而,如果一个模型学习能力太强的话,可能会把训练样本中的一些特殊性质当成所有样本的普遍性质,这样会造成模型对训练集预测得很好,但对未知样本预测得很差的现象,这种现象称为过拟合(over-fitting)。与此相对的是,模型的学习能力太弱,对训练样本的普遍性质都学不到,就会造成欠拟合(under-fitting)

我们通过上图来直观的理解过拟合和欠拟合。假设,我们通过左边两只毛色为纯色的猫作为训练样本得到了一个模型,用这个模型来预测新样本是否是猫。当这个模型过拟合时,可能会认为猫的毛色必须纯色的,所以当有一只毛色不纯的猫作为新样本时,模型会错误地预测它不是猫。当这个模型欠拟合时,可能会认为凡有四条腿的动物就是猫,所以模型会错误地把狗也预测成猫。

避免欠拟合比较简单,由于欠拟合是模型过于简单造成的,我们可以增加模型的复杂度,例如在线性模型中增加多项式的次数、在决策树中增加叶节点数、在神经网络中增加训练轮数等。但是,当模型的复杂多过大时,就会发送过拟合的现象,模型复杂度与误差的关系如下图所示: 引用自《统计学习方法》

可以看到,当模型很简单时,即复杂度小时,训练误差和测试误差都很高,这时对应的是欠拟合,随着复杂度的增加,训练误差会越来越小并趋向于0,而测试误差会先减小达到一个最小值,然后又继续增大,这时对应的是过拟合。我们的最终目标是要选择一个复杂度适当的模型,避免发送过拟合,使得其测试误差最小。那么该如何选择模型并评估其的好坏呢?

模型选择

我们根据模型的泛化能力来评估模型的好坏,但由于没有新样本,无法知道模型的泛化能力,为此,可以从训练集中划分一部分出来作为测试集,然后以模型在测试集上的测试误差作为泛化误差的近似。下面是几种常用的划分方法。

正则化(regularization)

模型选择除了上面提到的几种方法,还有一种方法是正则化。
假设在一个回归问题中,给定数据集:

学习到的模型为: 定义模型h在数据集上的训练误差为: 上式也叫做模型的损失函数(loss function),我们的目的是最小化损失函数来得到最好的模型。正则化就是在训练误差上加一个正则化项,也可以称为惩罚项。正则化项一般与模型复杂度成正比关系,通常以模型参数的Lp范数作为正则化项。例如,若以参数的L2范数作为正则化项,则上面的损失函数变为: 上式第一项为训练误差,第二项为正则化项,其中,λ≥0是用来权衡两者关系的系数。可以看出,若模型越复杂,则第一项训练误差会越小,然而第二项模型复杂度会越大;若模型太简单,则训练误差会比较大。正则化的作用就是选择训练误差与模型复杂同时较小的模型,同时又因为正则化能抑制模型过于复杂,因此它也是一种有效的防止过拟合的方法。

另外

需要注意的是,我们通常把模型在实际中遇到的新样本称为测试数据,为了加以区分,一般把模型选择时使用的测试集称为验证集(validation set)。这样,机器学习中使用的数据主要分为以下三种:

参考

上一篇 下一篇

猜你喜欢

热点阅读