训练集,验证集,测试集分别是什么
一、前言
训练集、验证集和测试集这三个名词在机器学习领域极其常见,但很多人并不是特别清楚,尤其是后两个经常被人混用。
在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set),验证集(validation set),测试集(test set)。
二、训练集、验证集、测试集
如果给定的样本数据充足,我们通常使用均匀随机抽样的方式将数据集划分成3个部分——训练集、验证集和测试集,这三个集合不能有交集,常见的比例是8:1:1。需要注意的是,通常都会给定训练集和测试集,而不会给验证集。这时候验证集该从哪里得到呢?一般的做法是,从训练集中均匀随机抽样一部分样本作为验证集。
训练集
训练集用来训练模型,即确定模型的权重和偏置这些参数,通常我们称这些参数为学习参数。
验证集
而验证集用于模型的选择,更具体地来说,验证集并不参与学习参数的确定,也就是验证集并没有参与梯度下降的过程。验证集只是为了选择超参数,比如网络层数、网络节点数、迭代次数、学习率这些都叫超参数。比如在k-NN算法中,k值就是一个超参数。所以可以使用验证集来求出误差率最小的k。
测试集
测试集只使用一次,即在训练完成后评价最终的模型时使用。它既不参与学习参数过程,也不参数超参数选择过程,而仅仅使用于模型的评价。
值得注意的是,千万不能在训练过程中使用测试集,而后再用相同的测试集去测试模型。这样做其实是一个cheat,使得模型测试时准确率很高。
三、为何需要划分
简而言之,为了防止过度拟合。如果我们把所有数据都用来训练模型的话,建立的模型自然是最契合这些数据的,测试表现也好。但换了其它数据集测试这个模型效果可能就没那么好了。就好像你给班上同学做校服,大家穿着都合适你就觉得按这样做就对了,那给别的班同学穿呢?不合适的概率会高吧。总而言之训练集和测试集相同的话,模型评估结果可能比实际要好。
四、交叉验证
之所以出现交叉验证,主要是因为训练集较小。无法直接像前面那样只分出训练集,验证集,测试就可以了(简单交叉验证)。
需要说明的是,在实际情况下,人们不是很喜欢用交叉验证,主要是因为它会耗费较多的计算资源。一般直接把训练集按照50%-90%的比例分成训练集和验证集。但这也是根据具体情况来定的:如果超参数数量多,你可能就想用更大的验证集,而验证集的数量不够,那么最好还是用交叉验证吧。至于分成几份比较好,一般都是分成3、5和10份。
交叉验证的实现
首先我们给出下面的图
图上面的部分表示我们拥有的数据,而后我们对数据进行了再次分割,主要是对训练集,假设将训练集分成5份(该数目被称为折数,5-fold交叉验证),每次都用其中4份来训练模型,粉红色的那份用来验证4份训练出来的模型的准确率,记下准确率。然后再次在这5份中取另外4份做训练集,1份做验证集,再次得到一个模型的准确率
。(五选四的话,只用做五遍就ok了) 直到所有5份都做过1次验证集,也即验证集名额循环了一圈,交叉验证的过程就结束。算得这5次准确率的均值。留下准确率最高的模型,即该模型的超参数是什么样的最终模型的超参数就是这个样的。
好像Keras就是用的交叉验证或者固定超参数(知乎链接)
参考链接:
1、
https://blog.csdn.net/cczx139/article/details/80266101
2、https://blog.csdn.net/jmh1996/article/details/79838917tdsourcetag=s_pctim_aiomsg
转载自https://www.cnblogs.com/lfri/p/10546147.html
训练集,验证集,测试集分别是什么相关推荐
- 【小白学PyTorch】 2.浅谈训练集验证集和测试集
文章目录: 经验误差与过拟合 评估方法 经验误差与过拟合 关键词:错误率(error rate),精度(accuracy). 错误率好理解,就是m个样本中,a个样本分类错误,则错误率E = a/m . ...
- 训练集 验证集_训练与验证、测试集数据分布不同的情况
在不同分布的数据集上进行训练与验证.测试 深度学习需要大量的数据,但是有时我们可获得的满足我们真实需求分布的数据并不是那么多,不足以对我们的模型进行训练.这时我们就会收集大量相关的数据加入到训练集中, ...
- 【入门篇】如何正确使用机器学习中的训练集、验证集和测试集?
[注] ·本文为转载文章,原文作者是王树义老师,原文链接为 https://zhuanlan.zhihu.com/p/71961236 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎 ...
- 如何正确使用机器学习中的训练集、验证集和测试集?
王树义 读完需要 19 分钟 速读仅需7分钟 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎么用?看过这篇教程后,你就能游刃有余地处理它们了. 1 问题 审稿的时候,不止一次,我遇到 ...
- python 训练集 测试集 验证集划分_将自己的图片数据集分成训练集、验证集和测试集并用 Tensorflow2.0 导入...
文章目录项目介绍 划分数据集1.在 dataset 目录下创建三个文件夹 2.将原来 dataset 文件夹中的子文件夹分别复制到这三个文件夹中 3.在 python 中指定所有路径 4.将这三个文件 ...
- 机器学习典型步骤以及训练集、验证集和测试集概念
1. 机器学习典型步骤 数据采集和标记 数据清洗 特征选择 如房子的面积.地理位置.朝向.价格等. 模型选择 有监督还是无监督,问题领域.数据量大小.训练时长.模型准确度等多方面有关. 模型训练和测试 ...
- 训练集(train set) 验证集(validation set) 测试集(test set)
在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set) 验证集(validation set) 测试集(test set). http://blog.si ...
- 机器学习中训练集、验证集和测试集的区别
通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集.验证集合测试集,划分比例一般为0.6:0.2:0.2.对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的.泛化能力 ...
- [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)
在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...
- 训练集、验证集和测试集的意义
原文 在有监督的机器学习中,经常会说到训练集(train).验证集(validation)和测试集(test),这三个集合的区分可能会让人糊涂,特别是,有些读者搞不清楚验证集和测试集有什么区别. I. ...
最新文章
- 自动打包Shell脚本
- 深度讲解spring的循环依赖以及三级缓存
- Linux Shell脚本_设置最大打开文件数
- boost库下的deadline_timer和steady_timer 区别
- SpringMVC框架----ModelAttribute注解
- JS面向对象,__proto__和prototype详解
- 物联网大数据如何改善农业运营
- (转)Django ==== 实战学习篇二 需求分析及设计,创建第一个模型---购物车的应用...
- VC中ComboBox控件用法详解
- 第1章 Spark SQL概述
- 2021-06-24相对定位
- ML Case Studies(0)
- 电商数字化色彩系统的探索
- matlab突然打不开的解决办法
- JavaScript节点操作、删除节点
- Python中不为人知的四个特性
- 浅谈2019互联网新技术
- 群体遗传 | haplotype block | HaploBlocker参数介绍
- python实现四则运算_四则运算 Python实现(杨浩政,张兆敏)
- 图床程序 php,开源免费PHP图床程序–Qchan
热门文章
- ThinkCMF框架修复漏洞 名称:ThinkPHP5 远程代码执行高危漏洞(CNNVD-201812-617)
- java嵌入浏览器_Java嵌入浏览器Chrome内核
- Kali下TheFatRat工具的安装教程
- 手动保存刷新微星主板BIOS图解教程
- 纯前端实现pdf分页下载,完美支持横屏竖屏
- Unable to open debugger port (127.0.0.1:**): java.net.BindException Address already in use: JVM_Bind
- Python对象转json【包括嵌套对象转json,django的model转json】
- 客户端的云桌面平台配置与开启(附,登录“云电脑”与切换登录账号)
- 用sokit发送http请求和响应
- 如何用计算机计算社会,五险一金计算器到底该怎么用