交叉验证和验证集不是一回事!

关于训练集,验证集,测试集,交叉验证,留一法等,我专门整理了一篇文章(测试集可用作验证集;验证集绝对不能来自训练集!(交叉验证,留一法))把他们说明白,看了就会非常清楚啦。

之前一直不明白交叉验证的具体意思,以为带个验证俩字,跟验证集一定有啥关系,结果并没有!!!

最近做实验,由于数据集太小,只有40条数据,要用留一法交叉验证,翻遍了网上的帖子都说把数据分为K份(我这k=40),k-1份用于训练,剩余一份用于测试,大家都说的很清楚了,就是字面意思,我却一直还是迷迷糊糊,总觉得必须要和验证集(即训练集,验证集,测试集)扯上关系,然后想了半天,决定在39份数据里再分训练集和验证集,然后就总结了下面的经验

总之,交叉验证和验证集没有半毛钱关系,数据分为K份后,用k-1份用于训练,train,训练好了拿剩余一份用于测试,test, 然后再轮流使用k份中的每一份作为测试,其他K-1份作为训练,并且需要注意的是!!!总共训练了K个子模型,然后拿到了k个测试结果,假设其中对了m个,则最终测试精度就是m/k*100%。不是一直训练一个模型,那样绝对过拟合!亲身经历总结出来的教训,因为你一直重复训练一个模型,k次后,这个模型绝对记住了(背下来了)答案,你的验证精度会变为100%。

至于验证集,它的作用就只有一个,就是通过告诉你模型有没有过拟合,以指导你调整超参数,就只有这一个作用,但是对于小数据集,真的,没必要再分验证集,

以我的case为例,总共40条数据,一条用于测试集,剩余39条,如果你选38条用于训练集,则验证集一条数据,验证精度要么0,要么1.0,不能告诉你任何模型欠拟和还是过拟合的信息,因为验证集数据太少的话,验证精度的波动就会特别大,这个很好理解,比如你验证集4条数据,那么一旦和上次的正确条数差1个,你的验证精度波动就高达25%,但是如果对于大数据集,验证集假设有1000条数据,一旦和上次的正确条数差1个,验证精度波动只有0.1%,很简单的一个道理,全是我用实验经历排的坑,思考总结出来的经验。之后可以放个图出来看看是什么景象

从科学的角度分析,小数据集本身就不能代表真实数据的分布,它数据太少了,很难完美刻画真实分布,那训练集和验证集就更小了,更加不可能描绘数据的原始分布,也就不可能满足i.i.d,独立同分布的基本假设,所以你整个模型肯定学不好,所以对于小数据集,建议不要再分什么验证集了,没资本那么奢侈去进一步减少本来就不够的训练数据,训练数据越多越好,尽量刻画原来数据的真实分布

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值