前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模型评估与选择

模型评估与选择

作者头像
张凝可
发布2019-08-21 22:57:05
4080
发布2019-08-21 22:57:05
举报
文章被收录于专栏:技术圈技术圈

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_27717921/article/details/54808836

在机器学习中,我们应该如何去评估我们的学习模型的学习效果,这自然就涉及到了模型评估与选择的问题。我们希望,学习模型能够从训练样本中尽可能学出使用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然后,当学习器把训练样本学的“太好”的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致学习模型的泛化性能下降,这种现象在机器学习中称为“过拟合”。相反的则是“欠拟合”,两者都指的的是对训练样本的一般性质尚未学好。 下面对目前使用的评估方法的优缺点进行分析。 –评估方法 –留出法 –交叉验证法 –自助法

评估方法

我们通过实验测试对学习器的泛化误差进行评估并进而做出选择,我们需要测试集来测试学习器对新样本判别的能力,学习模型在测试集上的“测试误差”作为学习模型泛化误差的近似。需要注意的是,测试集应该和训练集尽可能的互斥,也就是说测试样本尽量不在训练集中出现、未在训练过程中使用过。 在书籍《机器学习》中曾经举例,老师给学生平时做练习做了10道题,如果用之前做过的题目来检测学生学的效果显然是不对的,可能有的同学只会做这10道题但是同样能在考试中拿高分。老师希望学生课程学的好更多的应该是学习对知识举一反三的能力,同样的,学习模型应该从训练集中学习到一般规律,在尽可能和训练集互斥的测试集上来评估学习模型的性能好坏。

留出法

原理:“留出法”将数据集D划分为两个互斥的集合,其中一个作为训练集S,另外一个则作为测试集T。

这里写图片描述
这里写图片描述

在S上训练出模型后,用T来评估其测试误差作为泛化误差的估计。 以二分类假设,D中包含1000个样本,划分700个样本作为S,300个样本作为T,如果在T上有90样本分类错误,错误率为30%,准确率为70%。但是我们要考虑D中类别的分布情况,分布的情况影响我们划分S和T。如果D中包含500正例,500反例。那么我们为了保留数据集中类别的比例,采用“分层采样”,分层采样得到S应该包含350个正例,350个反例,T中包含150个正例,150个反例。 优点:操作简单,计算量少。 问题1: 单次使用留出法得到的估计结果往往是不够稳定的,因为不同的划分会导致不同的训练/测试集,模型评估的结果也会有差别。 解决: 在使用留出法时,一般采用若干次随机划分、重复进行实验评估取得平均值来作为留出法的评估结果。比如对D进行100次随机划分,每次都会产生一对训练集、测试集,会得到评估值,留出法返回的结果是返回这100个结果的平均值来作为评估效果的。 问题2: 一般来说,S中包含了大多数的样本,而T中则只包含了一小部分样本,S更接近于D,这样的话评估效果就不能代表大多数的样本了,毕竟只是对T来测试的,造成评估结果不准确。但是如果让T大一些,S 小一些,那么S和D的差异就打了,对用评估的学习模型是基于S训练出来的,那么我们所评估的学习模型和在D上训练得出的模型差异就打了,降低了评估结果的保真性。

交叉验证法

“交叉验证法”先将数据集D划分为K个大小相似,差不多就行,的互斥子集。每个子集要保持数据分布的一致性可以对D分层采样获得。然后每次用K-1个子集作为训练集,而剩下的那一个子集作为测试集,进行K次训练测试,返回的是这K个此事结果的均值。通常将交叉验证法称为“K折交叉验证”。 很显然K值的选择很重要,一般K=10,5,20.为了减少样本划分不同而引入的差别,K折交叉验证通常要随机使用不同的划分重复P次,最终的结果是这P次K折交叉验证结果的均值。

这里写图片描述
这里写图片描述

自助法

留出法和交叉验证法由于只保留了一部分样本用于测试,在实际评估的模型所使用的训练集比D小,引入一些因样本规模不同而导致的估计偏差。而自助法以自助采样为基础。给定包含m个样本的数据集D,我们对D进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入到D’中,然后将该样本放回到初始数据集D中,使得该样本在下次采样时仍然有机会被采到。执行这个过程m次,我们就获得了包含m个样本的数据集D’。显然D’中并不包含D中所有的样本,只是其中一部分。 样本在m次采样中始终都没有被采到的可能性为

这里写图片描述
这里写图片描述

,取得极限为

这里写图片描述
这里写图片描述

。也就是说初始数据集D中有约36.8%的样本并没有出现在D’中,我们用D’作为训练集,D-D’为测试集。这样的测试结果称为“包外估计”。 一般在数据集比较小时用自助法,在集成学习中就使用了自助法。但是自助法会改变初始数据集的分布,从而引入估计的偏差。在数据集足够大时,一般使用留出法和交叉验证法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年02月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 评估方法
  • 留出法
  • 交叉验证法
  • 自助法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档