机器学习中,测试集的误差反而比训练集的误差要低,这个该怎么解释?

默认排序

论智

论智

调调参,论论AI 【公众号:论智 (jqr_AI) 】

30 人赞同了该回答

这种现象乍一看不怎么符合常理,其实并不算罕见,主要问题在于训练集和测试集的分布差异可能比较大。

用生活中的例子来类比,平时做卷子的平均得分比正式考试时的的得分要低。这种现象其实很常见,最可能的解释是老师在不能准确估计正式考试难度的情况下,或者考虑到正式考试时因为紧张等原因可能不如平时发挥得好的情况下,平时给学生做的卷子难度偏高。

所以机器学习中常用的做法是从同一个数据集中随机选取一定比例的样本作为测试集,剩下的作为训练集。这就是为了避免训练集和测试集分布不同的问题。

如果我们假设平时出的卷子和正式考试的卷子都是从一个题库里随机抽题编制而成的,仍然出现了平时做卷子的平均得分比正式考试时的的得分要低的现象。那么,可能的一个解释是,因为正式考试仅仅是一张试卷,有可能碰巧抽到学生擅长的题目,而平时的卷子因为量很大,所以减少了运气因素的影响。

类比机器学习,就是测试集占的比例太低,或者原始数据集本来样本就不怎么多,按一定比例划分后,训练集的样本还勉强充足,测试集的样本就很少,然后碰巧出现对模型来说测试集比训练集总体来说要“容易”的情况。

再回到卷子的例子上来。如果一个学生主要依靠背题“学习”的话,即使正式考试的题目比平时容易,但因为和做过的题目不一样,这个学生得分还是会比平时练习要低。

在机器学习而言,就是模型本身不能过拟合,概括性要好。一般而言,越是简单的模型越不容易过拟合。

所以,总的来说,训练集和测试集不是取自同一数据分布,测试集样本较少,模型比较简单,就有可能出现测试集误差反而低于训练集的现象。

相应的解决方案就是,尽量从同一数据集划分训练集和测试集,保证测试集样本充足(比如增加数据)。不太建议单纯因为训练集误差高于测试集误差就换用复杂模型,这么做可能沦为强行过拟合、治标不治本。

编辑于 2018-11-29

​赞同 30​​2 条评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

于菲

于菲

研发工程师

2 人赞同了该回答

做的什么任务,有啥特征有多少维,label是啥有多少,训练集测试集咋分,训练样本有多少测试样本有多少,用的啥算法。出现你说的情况时测试误差训练误差各位多少,训练误差是否符合预期。换算法还是不是出现类似情况。参数咋调的,调整不同参数是不是还会出现类似情况。

先补充清楚这些点吧。

编辑于 2017-04-11

​赞同 2​​3 条评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

知乎用户

知乎用户

7 人赞同了该回答

这个问题 我也碰到过。 虽然test结果更好,但是你要很小心,要排除这不是有问题在里面。
1 确定是随机分的 样本
2 确定 variable 没问题 test和 train的distribution
3在 test里面有没有leakage,或者test leak 更多
4比较一下test和 train里variable 的 information有差距么
总之有很多,要小心不是你自己认为导致的就好了。查完这些,你应该大体知道一些原因了。如果还不知道,你就需要拿一些新数据再验证一下



手机扣字真累

发布于 2017-04-22

​赞同 7​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

logoMeterSphere

广告​

不感兴趣知乎广告介绍

MeterSphere 开源持续测试平台

MeterSphere开源持续测试平台涵盖测试跟踪、接口测试、性能测试、团队协作四大功能,兼容JMeter等开源标准,致力于帮助企业的开发和测试团队展开自动化和高质量的软件测试工作。查看详情

StefanChou

StefanChou

8 人赞同了该回答

数据泄露的可能性多点。假设有这样的情况,测试样本里有与训练集一模一样或者类似的样本,而且比例还很大。就好像一个学生还没背完题库,但是考试里却老是出那种跟他背过的一样的题目,而且数量还不少,那他岂不是开心坏了。

发布于 2017-08-15

​赞同 8​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

新牧

新牧

计算神经科学

5 人赞同了该回答

dropout特别高的时候应该会出现这种现象吧

编辑于 2017-08-23

​赞同 5​​4 条评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

杨珣

杨珣

专注于ML&CV,博士在读,熬论文中……

3 人赞同了该回答

在训练imagenet的时候,如果用一些轻量的模型有时也会出现这个现象。
我的解释是,训练集的噪声大于验证集导致的……

编辑于 2017-08-23

​赞同 3​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

Onefless

Onefless

不服

1 人赞同了该回答

我在做kaggle的时候经常遇到这个情况,kaggle测试的分数比训练集的要低。感觉应该是测试集的数据的outlier少很多,或者说outlier的占比低好多。自己分训练测试集的时候没遇到过类似问题

发布于 2018-12-01

​赞同 1​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

王华

王华

控制科学与工程硕士

1 人赞同了该回答

描述要详细啊,你如果测试集就一个样本,那。。。。。

你到底测试集、验证集、训练集都是多少啊

发布于 2018-12-07

​赞同 1​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

空山闻啼鸟

空山闻啼鸟

心有猛虎,细嗅蔷薇

1 人赞同了该回答

1 测试集数据量太小了
2 误差计算算法有问题

编辑于 2017-08-24

​赞同 1​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

Chan Waitsing

Chan Waitsing

数据挖掘工程师

1 人赞同了该回答

这个问题太范了,能否具体点。比如训练集误差是多少?测试集误差是多少?建议你用学习曲线看下到底是过拟合还是范化能力低。

发布于 2016-11-23

​赞同 1​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

王芊

王芊

1 人赞同了该回答

1说明model的拟合能力太弱了 2数据量太少了

发布于 2014-07-06

​赞同 1​​1 条评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

刘潜一

刘潜一

普通研究僧

2 人赞同了该回答

最近经历了一次。

训练集上使用了样本均衡,对不同种类对样本会做上下采样,达到每个种类差不多数量。分类任务做样本均衡很常见嘛。所以我觉得可能是主要原因。

测试集就没必要做了。

所以训练集和测试集分布不同。误差也就不一样了。

发布于 2019-02-19

​赞同 2​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

logoMeterSphere

广告​

不感兴趣知乎广告介绍

MeterSphere 开源持续测试平台

MeterSphere开源持续测试平台涵盖测试跟踪、接口测试、性能测试、团队协作四大功能,兼容JMeter等开源标准,致力于帮助企业的开发和测试团队展开自动化和高质量的软件测试工作。查看详情

铸剑非攻

铸剑非攻

提供一下一种可能性:误差忘记除以样本数平均了,所以训练集误差累加就会比较大……

我今天也是遇到测试集误差比训练集误差小的情况,搞了半天猛然发现没除样本数……

发布于 2019-03-21

​赞同​​2 条评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

BINGO Hong

BINGO Hong

生命在于折腾。

数据不匹配,导致验证集数据较训练集中数据更容易辨别。

建议可以进行手动误差分析,同时看看两个数据集的分布差异,或者分割数据集采用

  • train set
  • train-dev set
  • dev set
  • test set

对比4种数据集的metrics。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值