机器学习之模型评估与选择

版权声明:本文为博主原创文章,转载请附上博文链接。 https://blog.csdn.net/qq_41080850/article/details/86560645

经验误差与泛化误差

    通常我们把分类错误的样本数占样本总数的比例称为“错误率”(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m;相应的,1-a/m称为“精度”,即“精度=1-错误率”。更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为“训练误差”(training error)或“经验误差”(empirical error),在新样本上的误差称为“泛化误差”(generalization error)。显然,我们希望得到泛化误差小的学习器。然而,我们事先并不知道新样本是什么样,实际能做的是努力使经验误差最小化。在很多情况下,我们可以学得一个经验误差很小,在训练集上表现很好的学习器,例如甚至对所有训练样本都分类正确,即分类错误率为零,分类精度为100%,但这是不是我们想要的学习器呢?遗憾的是,这样的学习器在多数情况下都不好。

    我们实际希望的,是在新样本上能表现得很好的学习器。为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然而,当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为“过拟合”,与“过拟合”相对的是“欠拟合”,关于“过拟合”和“欠拟合”现象,可以参考:https://blog.csdn.net/qq_41080850/article/details/86253123

    在现实任务中,我们往往有多种学习算法可供选择,甚至对于同一个学习算法,当使用不同的参数配置时,也会产生不同的模型。那么,我们应该选用哪一个学习算法、使用哪一种参数配置呢?这就是机器学习中的“模型选择”(model selection)问题。理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。然而如上面所讨论的,我们无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不适合作为标准,那么,在现实中如何进行模型的评估与选择呢?

模型评估方法

    通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择(在现实任务中往往还会考虑时间开销、存储开销、可解释性等方面的因素,这里暂且只考虑泛化误差)。为此,需使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以“测试集”上的测试误差(testing error)作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

    可是,我们只有一个包含m个样例的数据集D={(x1,y1),(x2,y2),···,(xm,ym)},既要训练,又要测试,怎样才能做到呢?答案是:通过对D进行适当的处理,从中产生出训练集S和测试集T。下面介绍几种常见的做法:

留出法

交叉验证法

自助法

    给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型。因此,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型。这个模型在训练过程中使用了m个样本,这才是我们最终提交给用户的模型。 

    另外,需要注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set)。例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

模型性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)。

注意此处的“均方误差”与统计学中的均方误差稍有不同,统计学中规定

的均方误差(MSE)是残差平方和(SSE)除以它自己的自由度。

下面再介绍几种分类任务中常用的性能度量:

错误率与精度

查准率、查全率与F1

查准率又称为准确率,查全率又称为召回率。

 

以西瓜问题说明查准率与查全率:查准率可以理解为挑出的好瓜中,

真正的好瓜占据的比例;查全率可以理解为挑出的真正好瓜在所有

真正的好瓜中占据的比例。

 

F1是基于查准率和查全率的调和平均定义的,F\beta则是加权调和平均。

ROC与AUC

关于ROC曲线与P-R曲线,还可以参考:https://www.plob.org/article/12476.html

代价敏感错误率与代价曲线

PS:以上内容绝大部分均摘自周志华老师的《机器学习》,本文权作记录以便于后续查阅复习。

猜你喜欢

转载自blog.csdn.net/qq_41080850/article/details/86560645