Fork me on GitHub

模型评估方法-2

评估方法

在实际中,通常需要通过实现对学习器的泛化误差进行评估并进而做出选择。需要使用一个测试集来测试学习器对新样本的判别能力,然后以测试误差近似作为“泛化误差”。常用的几种评估方法:

  • 留出法
  • 留一法
  • 交叉验证法
  • 自助法

留出法

留出法hold-out,直接将数据集合分成两个互斥的集合,其中一个当作训练集合S,另一个当作测试集合T。

在S上进行训练模型,在T上进行测试和评估误差,作为对泛化误差的估计。注意点:

  1. 训练/测试集合的划分应该尽量保持数据分布的一致性,避免因为数据划分过程而引入额外的偏差。

数据集D上是1000个样本,其中500个正例,500个反例;那么划分的训练和测试集合应该也是1:1的比例。比如S中350个正例,350个反例;T中150个正例,150个反例

  1. 即使确定了划分比例之后,不同的划分方法仍然对模型的评估造成缺别。解决方法:单次使用留出法得到的结果往往不是稳定的,多次使用取平均值。
  2. 通常在留出法中采用的比例是$\frac23-\frac45$用于训练,剩下的用于测试。

交叉验证法

现将数据集合D划分成k个大小相似的互斥子集$D_1,D_2,…,D_k$。每个子集尽量保持数据分布的一致性,即从D中分层采样得到。

常规做法:用k-1个子样本作为训练集,剩下的作为测试集,从而获得k组训练/测试集合。交叉验证法评估结果的稳定性和保真性在很大程度上是取决于k值,其最常用的是10,称之为10折交叉验证法

MkVvcV.png

交叉验证也需要随机使用不同的划分重复p次,最终的评估结果是p次k折验证的平均值。

留一法

留一法是留出法的特例。如果数据集D中有m个样本,若令$k=m$,则留一法不再受随机采样的影响。m个样本只有唯一的方式划分为m个子集,每个子集中包含一个样本。每个子集只比原来的数据集D少了一个样本,因此通过留一法得到的评估结果和原数据D得到的很相似。

缺点:当数据集很大量的时候,计算开销大。

自助法

自助法是通过自助采样法bootstrapping为基础。通过数据集$D$,如何生成一个数据集$D^`$:

  1. 每次从数据集$D$中取出一个样本,放入$D^`$中,并且将该样本返回原数据中
  2. 重复上述步骤$m$次,得到$m$个样本的数据集$D^`$,这就是自助采样的结果。
  3. 总有一部分数据不会出现在$D`$中,概率是$(1-\frac{1}{m})m$,取极限之后结果是$\frac1e$,大约是0.3684.
  4. 通过自助采用的方式,数据集$D`$中总有36.8%的样本不会出现;因此,可以将$D`$作为训练集合,剩下的作为测试集合,这个得到的测试结果称为包外估计out-of-bag estimate

本文标题:模型评估方法-2

发布时间:2019年11月07日 - 17:11

原始链接:http://www.renpeter.cn/2019/11/07/%E6%A8%A1%E5%9E%8B%E8%AF%84%E4%BC%B0%E6%96%B9%E6%B3%95.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea