在人工智能机器学习中,很容易将“验证集”与“测试集”,“交叉验证”混淆。

一、三者的区别

  • 训练集(train set) —— 用于模型拟合的数据样本。
  • 验证集(validation set)—— 是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),以决定是否停止继续训练。

在神经网络中, 我们用验证数据集去寻找最优的网络深度(number of hidden layers),或者决定反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量;

               在普通的机器学习中常用的交叉验证(Cross Validation) 就是把训练数据集本身再细分成不同的验证数据集去训练模型。

  • 测试集 —— 用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
类别 验证集 测试集
是否被训练到
作用

1)调超参数;

2)监控模型是否发生过拟合(以决定是否停止训练)

为了评估最终模型泛化能力
使用次数 多次使用,以不断调参 仅仅一次使用
缺陷 模型在一次次重新手动调参并继续训练后所逼近的验证集,可能只代表一部分非训练集,导致最终训练好的模型泛化性能不够

一个形象的比喻:

训练集-----------学生的课本;学生 根据课本里的内容来掌握知识。

验证集------------作业,通过作业可以知道 不同学生学习情况、进步的速度快慢。

测试集-----------考试,考的题是平常都没有见过,考察学生举一反三的能力。

传统上,一般三者切分的比例是:6:2:2,验证集并不是必须的。

二、为什么要测试集

a)训练集直接参与了模型调参的过程,显然不能用来反映模型真实的能力(防止课本死记硬背的学生拥有最好的成绩,即防止过拟合)

b)验证集参与了人工调参(超参数)的过程,也不能用来最终评判一个模型(刷题库的学生不能算是学习好的学生)。

c) 所以要通过最终的考试(测试集)来考察一个学(模)生(型)真正的能力(期末考试)

但是仅凭一次考试就对模型的好坏进行评判显然是不合理的,所以接下来就要介绍交叉验证法

三、交叉验证法(模型选择)

 a) 目的

交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。(就像通过多次考试,才通知哪些学生是比较比较牛B的)

交叉验证的做法就是将数据集粗略地分为比较均等不相交的k份,即

然后取其中的一份进行测试,另外的k-1份进行训练,然后求得error的平均值作为最终的评价,具体算法流程如下:

举个例子:假设建立一个BP神经网络,对于隐含层的节点数目,我们并没有很好的方法去确定。此时,一般将节点数设定为某一具体的值,通过训练集训练出相应的参数后,再由交叉验证集去检测该模型的误差;

然后再改变节点数,重复上述过程,直到交叉验证误差最小。

b) 交叉验证算法的具体步骤如下

1.      随机将训练数据等分成k份,S1, S2, …, Sk。

2.      对于每一个模型Mi,算法执行k次,每次选择一个Sj作为验证集,而其它作为训练集来训练模型Mi,把训练得到的模型在Sj上进行测试,这样一来,每次都会得到一个误差E,最后对k次得到的误差求平均,就可以得到模型Mi的泛化误差。

3.      算法选择具有最小泛化误差的模型作为最终模型,并且在整个训练集上再次训练该模型,从而得到最终的模型。

K折交叉验证,其主要 的目的是为了选择不同的模型类型(比如一次线性模型、非线性模型、),而不是为了选择具体模型的具体参数。比如在BP神经网络中,其目的主要为了选择模型的层数、神经元的激活函数、每层模型的神经元个数(即所谓的超参数)。每一层网络神经元连接的最终权重是在模型选择(即K折交叉验证)之后,由全部的训练数据重新训练。

目的在模型选择,而非模型训练调整参数。

c) K值的选择

      K值的选取是一个偏差与方差的权衡:

  K=1时,所有数据用于训练,容易过拟合;

 K=N时,相当于留一法LOOCV  (Leave-one-out cross-validation ).; 

通常建议K=10.,2017年的一项研究给出了另一种经验式的选择方法[3],作者建议  且保证 

训练集、验证集、测试集以及交验验证的理解相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. GSG灰猩猩插件合集包
  2. [转] GMT、UTC与24时区 等时间概念
  3. 电脑卡顿不流畅怎么解决_使命召唤17画面卡顿怎么办-使命召唤17画面卡顿解决方法...
  4. html src加载外部静态资源,前端性能优化2:静态资源加载与优化
  5. fetch整个仓库 github_git fetch 的简单用法:更新远程代码到本地仓库
  6. python--迭代器的实现
  7. 一致性算法(paxos,raft,ZAB)——paxos算法(大概)
  8. AWS自动化合规slide
  9. 北斗导航 | 卫星导航基础知识(坐标系)
  10. 九章算法 | 骑士的最短路线-BFS
  11. Kuzzle,一种内部部署的文档后端
  12. EasyUI+MVC+EF简单用户管理Demo(问题及解决)
  13. priority_queue的优先级设置
  14. 技嘉H81M-DS2 主板安装 XP方法,及网卡驱动安装
  15. python DEA: by-product NDDF DEA模型
  16. Pycharm中Python包的下载与使用
  17. 分享打造爆款书的方法,同时聊聊出版图书中的哪些事和哪些坑
  18. macbook更新系统服务器,mac系统怎么更新_苹果笔记本系统如何更新-win7之家
  19. SAP那些事-职业篇-25-顾问的价值
  20. 如何定义和使用一个 Lambda 表达式

热门文章

  1. pycharm 拼音检查
  2. YOLOV5-打标签建立自己的数据集
  3. 光谱分辨率单位_遥感图像的空间分辨率,光谱分辨率,辐射分辨率,时间分辨率...
  4. 解决win10系统alt+tab切换程序不显示程序缩略图问题
  5. 计算机系统文件夹图标不见了,为何我的电脑文件夹的图标都没有了
  6. 1.1 认识Word 2010操作界面
  7. Win10扬声器未插入怎么解决?
  8. 【JAVA】根据汉字拼音首字母排序 不同类型处理
  9. C语言 一元二次方程求解
  10. android手机分辨率整理