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

在有监督(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

【ML入门系列】(一)训练集、测试集和验证集相关推荐

  1. 【AI-1000问】训练为什么要分测试集和验证集?

    往期视频(前往有三AI公众号观看) 为什么要分训练集和测试集呢? 在很多的书以及一些公开数据集中,都会将数据集分为训练集,验证集和测试集,看起来验证集和测试集并没有区别,为什么要分这两个呢? 作者/编 ...

  2. 文本分类训练集 测试集_【AI1000问】训练为什么要分测试集和验证集?

    9 往期视频 点击边框调出视频工具条 为什么要分训练集和测试集呢? 在很多的书以及一些公开数据集中,都会将数据集分为训练集,验证集和测试集,看起来验证集和测试集并没有区别,为什么要分这两个呢? 作者/ ...

  3. 神经网络训练集和验证集的原理理解

    今天在学习<python深度学习>的时候,看到了这么一段话: 评估模型的重点是将数据划分为三个集合:训练集.验证集和测试集.在训练数据上训练模型,在验证数据上评估模型.一旦找到了最佳参数, ...

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

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

  5. [机器学习]三行代码快速划分交叉训练中训练集和验证集

    使用numpy.random.choice()和set()快速划分交叉训练数据集 之前在划分训练集和验证集时,都是手工随机生成index,很笨. 学到的新方法如下: import numpy as n ...

  6. csv数据,已区分训练集和验证集,需要用r语言建立随机森林回归模型,计算模型精度,包括训练集和验证集的r方、mae、rmse

    csv数据,已区分训练集和验证集,需要用r语言建立随机森林回归模型,计算模型精度,包括训练集和验证集的r方.mae.rmse #读取训练集 train <- read.csv("tra ...

  7. 训练集(train set) 验证集(validation set) 测试集(test set)

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

  8. 在Caffe的训练过程中打印验证集的预测结果

    起因:Caffe里的GoogLeNet Inception V1只能输出对应于三个loss的accuracy,我想计算precision,recall和F1-measure.但是调用caffe的Pyt ...

  9. 训练集损失值loss、测试集val_loss、验证集loss相关问题总结

    loss是训练集的损失值,val_loss是测试集的损失值 如何判断模型是否可以继续训练?(或者说好坏) 以下是loss与val_loss的变化反映出训练走向的规律总结: train loss 不断下 ...

  10. 【12】Caffe学习系列:训练和测试自己的图片

    一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载imagenet图片来训练.验证码始终出不来需要翻墙(是g ...

最新文章

  1. 几种和边框相关的CSS样式修改
  2. RibbitMQ 大数据分布式下的消息队列思
  3. 树莓派-格式化硬盘(U盘)为ext4格式并挂载
  4. 神经网络贷款风险评估(base on keras and python )
  5. SQLServer 维护脚本分享(08)临时数据库(tempdb)
  6. (转)shiro权限框架详解02-权限理论介绍
  7. Hive篇--搭建Hive集群
  8. 云平台中节点异常如何考虑迁移因素
  9. 让女生觉得坏透了的聊天方式有哪些?
  10. 车机没有carlife可以自己下载吗_视频实测:苹果CarPlay和百度CarLife到底哪个更好用...
  11. PDF怎么拆分?有哪些免费的PDF拆分软件
  12. 微信开发者账号APPID过久不用被冻结解决方案
  13. Elasticsearch X-Pack许可证过期解决办法
  14. 苹果新贵 Swift 之前世今生
  15. 47 《清单革命》 -豆瓣评分7.0
  16. CICD -- pipeline 流水线
  17. 用频谱仪测量晶体频率的方法
  18. 免费的数据同步备份软件FileYee
  19. vue和js中如何实现模糊查询
  20. SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020

热门文章

  1. 简单的方法完成项目上传到github
  2. 类似c语言sizeof,sizeof()与strlen()在C语言中有什么不同
  3. matlab差分方程实验报告,实验二微分方程与差分方程模型matlab求解.doc
  4. Mysql5.7+ 出现Field * doesn‘t have a default value解决办法
  5. linux扫描后台地址,Linux如何查看和控制进程
  6. 上报的关于JDK dpi/resolution错误的BUG已正式确认
  7. 文字处理技术:研究下划线,得到一个奇怪的数字4.55
  8. JAVA格式化输出字串
  9. 麒麟MIPS:用光盘安装提示Out Of Memory,用U盘安装成功
  10. 昨天跟朋友聊天谈技术工作,竟然吹了4个小时