模型评估与选择

1. 评估方法

  通常,我们可通过实验测试来对学习器的泛化误差(在新样本上的误差)进行评估并进而做出选择,为此,需使用一个“测试集”来测试学习器对新样本的判断能力,然后以测试集上的“测试误差”作为泛化误差的近似。主要有以下几种测试方法:

1.1 留出法

  直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。一般要采用若干次随机划分,重复进行实验评估取平均值作为留出法的评估结果。

  常见的做法是将大约2/3到4/5的样本作为训练集,剩下的作为测试集。

1.2 交叉验证法

  先将数据集D划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的那个作为测试集。这样可以获得k组训练/测试集,从而进行k次训练和测试。最终取平均值。

  k常见的是取10,此时称为10折交叉验证。

  当数据集D包含m个样本,而k=m时,称为留一法,这种方法得到的评估结果一般比较精确,但是训练集只比所有样本少一个,训练成本较高。

1.3 自助法

  对于给定样本数为m的数据集D,我们对其进行采样产生数据集D':每次随机从D中选一个样本,将其放入D',然后将其放回去,再进行随机挑选,以此类推。这个过程执行m次后,我们得到包含m个样本的D'。

  容易得到,一个样本不被选中的概率为(1-1/m)m,取极限,约为1/e = 0.368,即有36.8%的数据D'中不存在的。

  于是将这36.8%的数据作为测试集,D'的数据作为训练集,这种方法对数据集较小,难以有效划分训练/测试集的时候很有用。

2. 性能度量

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

2.1 错误率与精度

  这是分类任务中最常见的两种性能度量。

  错误率就是样本中出错的比例,而精度则是(1-错误率)

2.2 查准率(精确率)和查全率(召回率)

  精确率指的是模型判为正的所有样本中有多少是真正的正样本;召回率指的是所有正样本有多少被模型判为正样本,即召回。

  先介绍下4个概念:真正例、假正例、真反例、假反例

真实情况 预测结果
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

  查准率P为TP/(TP +FP),查全率R为TP/(TP + FN)

一般而言,查准率高的时候,查全率会较低,反之亦然。

2.3 F1度量

  F1 = (1+b2)*P*R/(b2*P + R)

  b大于1时查全率有更大影响,b小于1时查准率更有影响

2.4 ROC与AUC

  ROC全称为“受试者工作特征”,先介绍2个概念:

  真正例率TPR=TP/(TP+FN)
  假正例率FPR=FP/(TN+FP)

  ROC曲线,如下:

image_1bl5ud1vo1c7sb79cmeuqd5og9.png-111.3kB

  AUC则是其面积(曲线与右下两条线的闭合形状),一般而言,面积越大的学习器性能越好。

posted @ 2017-07-16 22:59  va_chester  阅读(257)  评论(0编辑  收藏  举报