首先三个概念存在于 有监督学习的范畴

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.

                  --------- Pattern Recognition and Neural Networks  , Ripley, B.D

具体功能用途区别:

(1)训练集

作用:估计模型

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

(2)验证集

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

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

(3)测试集

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

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

验证集和测试集的划分

为什么需要划分?
防止  过度拟合问题

过度拟合概念:在数据挖掘中一般通过一定量打过标签的训练数据来训练模型,然后再使用训练的模型对测试数据进行预测。但是,训练数据不可能涵盖所有的样例,假设你要做的是预测房价,模型是一条曲线,如果你的这条曲线非常完美的通过了训练数据中所有的点,那么你的模型很有可能就是过拟合状态的,就是对训练数据来说过于完美而偏离了真实的曲线,从而导致预测不准。

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.

                                                --------- Pattern Recognition and Neural Networks  , Ripley, B.D

参数角度的划分:

训练集就是用来训练参数的,一般是用来梯度下降的。而验证集基本是在每个epoch完成后,用来测试一下当前模型的准确率。因为验证集跟训练集没有交集,因此这个准确率是可靠的。那么为啥还需要一个测试集呢?

对于一个模型来说,其参数可以分为普通参数超参数

(1)在不引入强化学习的前提下,那么普通参数就是可以被梯度下降所更新的,也就是训练集所更新的参数。

(2)超参数,比如网络层数、网络节点数、迭代次数、学习率等等,这些参数不在梯度下降的更新范围内。尽管现在已经有一些算法可以用来搜索模型的超参数,但多数情况下我们还是自己人工根据验证集来调。

总结:
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)
训练集与测试集的常规划分方法:

(1)留出法

1. 把数据集分成互不相交的两部分,一部分是训练集,一部分是测试集。

2. 保持数据分布大致一致,类似分层抽样

3. 训练集数据的数量应占2/3到4/5

4. 为了保证随机性,将数据集多次随机划分为训练集和测试集,然后在对多次划分结果取平均。

(2)交叉验证法

1. 将数据集随机分为互斥的k个子集,为保证随机性,P次随机划分取平均。

2. 将k个子集随机分为k-1个一组剩下一个为另一组,有k种分法。

3. 将每一种分组结果中,k-1个子集的组当做训练集,另外一个当做测试集,这样就产生了k次预测,对其取平均

4. 称为p次k折交叉验证,一般取k=10

(3)自助法

1. 适用于样本量较小,难以划分时。换句话说,样本量足够时,用自助法并不如留出法和交叉验证法,因其无法满足数据分布一致。

2. 每次随机从数据集(有m个样本)抽取一个样本,然后再放回(也就是说可能被重复抽出),m次后得到有m个样本的数据集,将其作为训练集

3. 始终不被抽取到的样本的比例:

也就是说这保证了训练集样本数(不重复)在2/3左右

注意:

将数据集划分训练集和测试集是为了选定一个相对好的模型,当模型选定以后,训练数据仍是整个数据集。

参考:https://www.cnblogs.com/crazyacking/p/6737955.html
https://www.jianshu.com/p/7e032a8aaad5
          https://zhuanlan.zhihu.com/p/28812821

ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set...相关推荐

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

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

  2. 训练集 验证集_训练与验证、测试集数据分布不同的情况

    在不同分布的数据集上进行训练与验证.测试 深度学习需要大量的数据,但是有时我们可获得的满足我们真实需求分布的数据并不是那么多,不足以对我们的模型进行训练.这时我们就会收集大量相关的数据加入到训练集中, ...

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

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

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

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

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

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

  6. 机器学习中训练集、验证集和测试集的区别

    通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集.验证集合测试集,划分比例一般为0.6:0.2:0.2.对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的.泛化能力 ...

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

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

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

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

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

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

最新文章

  1. 递归下降分析法(编译原理)
  2. brew安装_苹果mac系统必须安装python3
  3. ASP.NET MVC:会导致锁定的会话
  4. jmeter如何定位网络延时_JMeter用户定义变量和properties变量高级使用
  5. 【渝粤教育】21秋期末考试服务标准化10011k1
  6. linux(4):Linux逻辑卷详解总结
  7. 手游服务器验证,手游登录流程
  8. 【nginx】nginx 反向代理 指令说明
  9. Docker 领衔 OpenSource.com 2014十佳开源软件排行榜
  10. MATLAB Simulink 中的过零检测与代数环
  11. 中国移动彩信业务资料集合
  12. 深信服虚拟机服务器功率,深信服VDI基准测试:让服务器资源最大化使用
  13. 1068 万绿丛中一点红 (20分)测试点分析
  14. 五险一金真的那么重要吗?为什么很多人宁愿做小时工不要五险一金?
  15. Ember恶意软件数据集的使用教程
  16. 聊一聊安全且正确使用缓存的那些事 —— 关于缓存可靠性、关乎数据一致性
  17. 【山外笔记-Linux 命令】cp 命令详解
  18. 统计学习方法笔记_cbr:统计学习及监督学习概论
  19. vSphere6.7环境搭建
  20. 【Kafka】三.Kafka怎么保证高可用 学习总结

热门文章

  1. 无人驾驶急需解决:规划控制和传感器价格高两大问题(附Apollo算法)
  2. 聊一聊Java 泛型通配符 T,E,K,V,?
  3. 终于放弃了单调的 Swagger 了,选择了这款神器 Knife4j
  4. 用 Git 和 Github 提高效率的 10 个技巧!
  5. 值得深思的问题——分库分表就能无限扩容吗?
  6. JAVA中几种常用JSON库性能比较
  7. Controller类的方法上的RequestMapping一定要写在Controller类里吗?
  8. 百度研究院:招聘计算机视觉和生物计算方向实习生
  9. 为了让16岁的儿子从轮椅上站起来,这位机器人工程师父亲打造了一套外骨骼装置...
  10. Python之父:Python 4.0可能不会来了