训练集验证集测试集这三个名词在机器学习领域极其常见,但很多人并不是特别清楚,尤其是后两个经常被人混用。

在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set),验证集(validation set),测试集(test set)。

Ripley, B.D(1996)在他的经典专著Pattern Recognition and Neural Networks中给出了这三个词的定义。

  • Training set: A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier.
  • Validation set: A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network.
  • Test set: A set of examples used only to assess the performance [generalization] of a fully specified classifier.

训练集

作用:估计模型

学习样本数据集,通过匹配一些参数来建立一个分类器。建立一种分类的方式,主要是用来训练模型的。

验证集

作用:确定网络结构或者控制模型复杂程度的参数

对学习出来的模型,调整分类器的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。

测试集

作用:检验最终选择最优的模型的性能如何

主要是测试训练好的模型的分辨能力(识别率等)

为何需要划分

Ripley也谈到了这个问题:Why separate test and validation sets?

  • 1. The error rate estimate of the final model on validation data will be biased (smaller than the true error rate) since the validation set is used to select the final model.
  • 2. After assessing the final model with the test set, YOU MUST NOT tune the model any further.

简而言之,为了防止过度拟合。如果我们把所有数据都用来训练模型的话,建立的模型自然是最契合这些数据的,测试表现也好。但换了其它数据集测试这个模型效果可能就没那么好了。就好像你给班上同学做校服,大家穿着都合适你就觉得按这样做就对了,那给别的班同学穿呢?不合适的概率会高吧。总而言之训练集和测试集相同的话,模型评估结果可能比实际要好。

总结

显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。

一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。

样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。

附上一段伪代码:

for each epochfor each training data instancepropagate error through the networkadjust the weightscalculate the accuracy over training datafor each validation data instancecalculate the accuracy over the validation dataif the threshold validation accuracy is metexit trainingelsecontinue training

(内容from 北岛知寒 - 开源爱好者  https://www.cnblogs.com/crazyacking/p/6737955.html#_label00)

训练集、验证集和测试集这三个名词的区别相关推荐

  1. 【小白学PyTorch】 2.浅谈训练集验证集和测试集

    文章目录: 经验误差与过拟合 评估方法 经验误差与过拟合 关键词:错误率(error rate),精度(accuracy). 错误率好理解,就是m个样本中,a个样本分类错误,则错误率E = a/m . ...

  2. 机器学习典型步骤以及训练集、验证集和测试集概念

    1. 机器学习典型步骤 数据采集和标记 数据清洗 特征选择 如房子的面积.地理位置.朝向.价格等. 模型选择 有监督还是无监督,问题领域.数据量大小.训练时长.模型准确度等多方面有关. 模型训练和测试 ...

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

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

  4. 训练集、验证集和测试集的意义

    原文 在有监督的机器学习中,经常会说到训练集(train).验证集(validation)和测试集(test),这三个集合的区分可能会让人糊涂,特别是,有些读者搞不清楚验证集和测试集有什么区别. I. ...

  5. Recbole自定义训练集、验证集和测试集推荐

    文章目录 Recbole简介 Recbole使用 自定义训练集.验证集和测试集 Recbole简介 Recbole(中文名称:伯乐)是一款使用Python开发的开源推荐框架,里面集成了大量的推荐模型, ...

  6. 训练集、验证集和测试集的概念及划分原则

    深度学习中,常将可得的数据集划分为训练集(training set),验证集(development set/validation set)和测试集(test set).下文主要回答以下几个问题:一是 ...

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

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

  8. 什么是训练集、验证集和测试集?

    在机器学习中,训练集.验证集和测试集是数据集的三个重要部分,用于训练.评估和测试机器学习模型的性能.它们的定义和作用如下: 什么是训练集.验证集和测试集? 训练集:训练集是机器学习模型用于训练和学习的 ...

  9. python 训练集 测试集 验证集划分_将自己的图片数据集分成训练集、验证集和测试集并用 Tensorflow2.0 导入...

    文章目录项目介绍 划分数据集1.在 dataset 目录下创建三个文件夹 2.将原来 dataset 文件夹中的子文件夹分别复制到这三个文件夹中 3.在 python 中指定所有路径 4.将这三个文件 ...

最新文章

  1. redmine 插件开发非官方指南
  2. html文件怎么用Python做后端,利用python实现后端写网页(flask框架).pdf
  3. Android中配置JDK和SDK的环境变量
  4. AS3 调用外部SWF中元件库中的元件 【转】
  5. Lucene分词初探---LetterTokenizer
  6. linux系统中怎么设置网络,vmware中linux怎么设置网络
  7. Typinator for mac(打字员)附注册码支持m1
  8. CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识
  9. 1.3.2 Barn Repair 修理牛棚
  10. pinpoint集群的安装配置
  11. 致前行者 | 他们,只用了两公里地铁的钱,就实现了中国探月
  12. [IDEA]JavaWeb项目切换时Tomcat配置更换问题
  13. 2022建筑架子工(建筑特殊工种)考试练习题及在线模拟考试
  14. Pycharm ssh远程调试报错: cannot connect to X server的解决方法
  15. Python采集淘宝1585个商家车厘子数据,看看到底有多贵
  16. 【开发经验】java服务生产环境CPU使用过高解决思路
  17. opencv图像识别训练实例
  18. 清除90天苹果充值记录_苹果内购退款2020千万要知道的技巧,不得不看!
  19. Java Import
  20. iphone怎么打c语言的分号,iPhone特殊符号怎么打 输入特殊符号技巧

热门文章

  1. 单体测试使用Assert.assertThat(expected,Matcher matcher)来对比结果和预期
  2. pcs增加mysql资源_PCS --- 常用命令及配置
  3. iOS 监听耳机插入和拔出[检索]
  4. 批量升级320k百度音乐(java版本)
  5. Word如何自动更新域
  6. 集合框架·List集合简介
  7. 读取rinex的观测时间
  8. 安装ATOM并使用apm
  9. 判断是否为直角三角形
  10. 利用Hander的日志优化性能