关于数据集的划分是基本概念,但是有时候看其他人代码时,经常被弄得云里雾里。

特作此记录。

目录

训练集(train set)

验证集(val set)

验证集的正确打开方式

测试集(test set)


  • train(含label)——进一步分为train和val。val用于调参。train与val无交集,所以val也可以看模型效果。

训练集拿来训练模型参数的,对于所有的训练集,训练一个epoch之后,我们会用验证集来测试一下模型在上面的性能,由于训练集和验证集的不可交性,所以在验证集上面的结果是有参考意义的。

  • test ——实际中使用模型时遇到的数据(一般无label)。

训练集(train set)

用于训练模型以及确定模型权重。

验证集(val set)

用于确定网络结构以及调整模型的超参数。

使用验证集是为了快速调参,也就是用验证集选择超参数(网络层数,网络节点数,迭代次数,学习率这些)。另外用验证集还可以监控模型是否异常(过拟合什么的),然后决定是不是要提前停止训练。

验证集的关键在于选择超参数,我们手动调参是为了让模型在验证集上的表现越来越好,如果把测试集作为验证集,调参去拟合测试集,就有点像作弊了。

验证集不参与反向传播(梯度下降过程的)。

验证集的正确打开方式

验证集可以看做参与了 “人工调参” 的训练过程

一般训练几个 epoch 就跑一次验证看看效果(大部分网络自带这个功能)

这样做的第一个好处是:可以及时发现模型或者参数的问题,比如模型在验证集上发散啦、出现很奇怪的结果啦(Inf)、mAP不增长或者增长很慢啦等等情况,这时可以及时终止训练,重新调参或者调整模型,而不需要等到训练结束。

另一个好处是验证模型的泛化能力,如果在验证集上的效果比训练集上差很多,就该考虑模型是否过拟合了。同时,还可以通过验证集对比不同的模型(模型选择)。

验证集是否一定要有?

不一定要有

数据划分

数据量较小(传统机器学习)

  • 没有验证集,建议设置成训练集:测试集=7:3
  • 有验证集,训练集:验证集:测试集=6:2:2

深度学习

  • 深度学习中若是数据很大,可以将训练集、验证集、测试集比例调整为98:1:1

测试集(test set)

用于检验模型的泛化能力。既不参与参数的学习过程,也不参与参数的选择过程,仅仅用于模型评价。

划分依据:

根据吴恩达老师所说,在数据较少情况下(万为单位及以下),可以按照60%,20%,20%的比例来划分数据。大数据时代,百万级别的数据情况下,训练集的数据可以达到98%左右。

同时,建议验证集与训练集的数据来自同一分布。

文章来源:

训练集、验证集与测试集_关关在干嘛的博客-CSDN博客_验证集有反向传播

验证集和测试集的区别?_不吃饭就会放大招的博客-CSDN博客_测试集和验证集能一样吗

数据集的划分,验证集参与训练了吗?_无枒的博客-CSDN博客_验证集参与训练吗

【机器学习】训练集、验证集与测试集相关推荐

  1. 【转载】如何理解数据集中【训练集】、【验证集】和【测试集】

    转自<吴恩达深度学习笔记(28)-网络训练验证测试数据集的组成介绍> 训练,验证,测试集(Train / Dev / Test sets) 在配置训练.验证和测试数据集的过程中做出正确决策 ...

  2. 【Science】破解密码“AlphaGo”诞生,训练Gan破解27%LinkedIn测试集密码

    本文讲的是破解密码"AlphaGo"诞生,训练Gan破解27%LinkedIn测试集密码,一项新的研究旨在使用生成对抗网络(GAN) 来加快密码破解的速度.斯蒂文斯理工学院的研究人 ...

  3. 为什么训练集用fit_transform()而测试集用transform()及sklearn.feature_extraction.text.CountVectorizer API详解

    真正讲明白的 https://blog.csdn.net/yyhhlancelot/article/details/85097656 API https://scikit-learn.org/stab ...

  4. 训练集准确率上升,测试集的准确率没有变化!

    训练集准确率上升,测试集的准确率没有变化! 1.问题描述 2.解决办法 1.问题描述 最近利用ResNet18网络做分类问题时,训练集准确率一直在上升,测试集的准确率确几乎没有变化.数据集用的是flo ...

  5. 训练集山准确率高测试集上准确率很低_推荐算法改版前的AB测试

    编辑导语:所谓推荐算法就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西:如今很多软件都有这样的操作,对于此系统的设计也会进行测试:本文作者分享了关于推荐算法改版前的AB测试,我们一起 ...

  6. 训练集山准确率高测试集上准确率很低_拒绝DNN过拟合,谷歌准确预测训练集与测试集泛化差异,还开源了数据集 | ICLR 2019...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 深度神经网络(DNN)如今已经无处不在,从下围棋到打星际,DNN已经渗透到图像识别.图像分割.机器翻译等各种领域,并且总是表现惊艳. 然而, ...

  7. 【入门篇】如何正确使用机器学习中的训练集、验证集和测试集?

    [注] ·本文为转载文章,原文作者是王树义老师,原文链接为 https://zhuanlan.zhihu.com/p/71961236 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎 ...

  8. [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)

    在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...

  9. 机器学习 数据集划分 训练集 验证集 测试集

    版权声明:本文为博主原创文章,转载请注明转自 Scofield's blog[http://blog.csdn.net/scotfield_msn] https://blog.csdn.net/Sco ...

  10. 如何正确使用机器学习中的训练集、验证集和测试集?

    王树义 读完需要 19 分钟 速读仅需7分钟 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎么用?看过这篇教程后,你就能游刃有余地处理它们了. 1 问题 审稿的时候,不止一次,我遇到 ...

最新文章

  1. Javascript:charCodeAt()方法及示例
  2. Mysql元数据分析
  3. Python之初识模块之序列化模块
  4. Windows Server 2008常用优化设置
  5. LibSVM 在matlab中的使用
  6. error C1189: #error : WINDOWS.H already included. MFC apps must not #include windows.h
  7. 编译安装_Unbound编译安装
  8. python多目标优化_多目标优化算法(四)NSGA3(NSGAIII)论文复现以及matlab和python的代码...
  9. linux -对称加密、 非对称加密
  10. C++11 线程池的实现(基于muduo)
  11. 一文让你彻底搞懂主成成分分析PCA的原理及代码实现(超详细推导)
  12. sql语句练习题(mysql版)
  13. 如鹏java学习进程 模拟小球弹跳
  14. java学习的第二个代码(飞行棋比赛-----龟兔赛跑),继上一个博客,对数组和Arrays的熟悉
  15. python中的数学函数汇总
  16. czl蒻蒟的OI之路5
  17. scratch 有趣的加减法
  18. 阿联酋之迪拜酋长国·迪拜·迪拜皇室-童话里的王子公主也不过如此
  19. liferay mysql_Liferay中搭配MySQL数据库的两种措施
  20. Java EE现状及其发展趋势

热门文章

  1. Linux—shell—nohup命令使用
  2. 机器人路径规划_人工势场法
  3. Web安全之SQL注入总结
  4. 关于防止表单重复提交
  5. 《机器学习》 线性模型
  6. 如何通过父类引用“调用”子类所独有的方法(向上转型意义)
  7. 物理层技术前沿_西安交通大学:通信网络安全先进技术研讨会:密码安全专场...
  8. SLIC图像超像素分割算法解析
  9. jQuery取值和赋值的基本方法
  10. $(this)与this的区别