在机器学习中,数据集的合理划分会提高我们的训练效率。 机器学习中这三种数据集合非常容易弄混,特别是验证集和测试集,这篇笔记写下我对它们三个的理解以及在实践中是如何进行划分的。

数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集、验证集、测试集。

同时还会介绍如何更合理的讲数据划分为3种数据集。最后给大家介绍一种充分利用有限数据的方式:交叉验证法。

先用一个不恰当的比喻来说明3种数据集之间的关系:

  • 训练集相当于上课学知识
  • 验证集相当于课后的的练习题,用来纠正和强化学到的知识
  • 测试集相当于期末考试,用来最终评估学习效果

什么是训练集?

训练集(Training Dataset)是用来训练模型使用的。

什么是验证集?

当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态

验证集有2个主要的作用:

  1. 评估模型效果,为了调整超参数而服务
  2. 调整超参数,使得模型在验证集上的效果最好

说明:

  1. 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
  2. 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。

什么是测试集?

当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。

通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。

如何合理的划分数据集?

下面的数据集划分方式主要针对「留出法」的验证方式,除此之外还有其他的交叉验证法,详情见下文 — — 交叉验证法。

数据划分的方法并没有明确的规定,不过可以参考3个原则:

  1. 对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
  2. 对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。
  3. 超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。

为什么要用交叉验证法?

假如我们教小朋友学加法:1个苹果+1个苹果=2个苹果

当我们再测试的时候,会问:1个香蕉+1个香蕉=几个香蕉?

如果小朋友知道「2个香蕉」,并且换成其他东西也没有问题,那么我们认为小朋友学习会了「1+1=2」这个知识点。

如果小朋友只知道「1个苹果+1个苹果=2个苹果」,但是换成其他东西就不会了,那么我们就不能说小朋友学会了「1+1=2」这个知识点。

评估模型是否学会了「某项技能」时,也需要用新的数据来评估,而不是用训练集里的数据来评估。这种「训练集」和「测试集」完全不同的验证方法就是交叉验证法。

3 种主流的交叉验证法

k 折交叉验证(k-fold cross validation)

静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:

  1. 将数据集分为训练集和测试集,将测试集放在一边
  2. 将训练集分为 k 份
  3. 每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
  4. 通过 k 次训练后,我们得到了 k 个不同的模型。
  5. 评估 k 个模型的效果,从中挑选效果最好的超参数
  6. 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。

k 一般取 10 数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。 数据量大的时候,k 可以设小一点。

参考资料:https://medium.com/@pkqiang49/%E4%B8%80%E6%96%87%E7%9C%8B%E6%87%82-ai-%E6%95%B0%E6%8D%AE%E9%9B%86-%E8%AE%AD%E7%BB%83%E9%9B%86-%E9%AA%8C%E8%AF%81%E9%9B%86-%E6%B5%8B%E8%AF%95%E9%9B%86-%E9%99%84-%E5%88%86%E5%89%B2%E6%96%B9%E6%B3%95-%E4%BA%A4%E5%8F%89%E9%AA%8C%E8%AF%81-9b3afd37fd58

机器学习:AI数据集划分(训练集、验证集、测试集)相关推荐

  1. 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用

    训练集测试集划分,划分函数,估计器的使用 参考文章 训练集.验证集和测试集的划分及交叉验证的讲解 划分训练集和测试集的函数学习 sklearn数据集,数据集划分,估计器详细讲解 参考文章 训练集.验证 ...

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

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

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

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

  4. 机器学习 数据挖掘 数据集划分 训练集 验证集 测试集

    机器学习数据挖掘之数据集划分: 训练集 验证集 测试集 Q:将数据集划分为测试数据集和训练数据集的常用套路是什么呢? A:three ways shown as follow: 1.像sklearn一 ...

  5. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  6. 数据集划分——训练集、测试集、验证集按照7:1:2

    数据集划分--训练集.测试集.验证集按照7:1:2 前面我对乳腺超声图像数据库进行数据增强,得到: 然后对数据集进行划分,按照训练集.测试集.验证集7:1:2的比例. 代码: import os im ...

  7. YOLOv5将自己数据集划分为训练集、验证集和测试集

    在用自己数据集跑YOLOv5代码时候,需要将自己的VOC标签格式数据集转为yolo格式. 首先是要获取自己的数据集,然后再对数据集进行标注,保存为VOC(xml格式).然后再把标注完的数据集划分为训练 ...

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

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

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

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

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

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

最新文章

  1. javascript 死循环
  2. Decision Tree
  3. 浏览器与服务器通信技术——Ajax详解
  4. 利用ngnix解决跨域问题
  5. 如何在php中写内容,请问如何在内容模板中写标题和内容呢
  6. 不用任何插件实现 WordPress 的彩色标签云
  7. solr analyzer_查看您的Solr缓存大小:Eclipse Memory Analyzer
  8. LPTSTR、LPCSTR、LPCTSTR、LPSTR的区别
  9. 各层电子数排布规则_一文读懂PCB多层板各层含义与设计原则
  10. 面试题(9)之 leetcode-189
  11. MySQL表设计(表的关联关系)
  12. ArcMap表格操作
  13. JavaWeb - 常用的HTTP请求头与响应头
  14. 一文读懂物联网的关键技术有什么?
  15. azure mysql on vnet_管理 VNet 终结点 - Azure CLI - Azure Database for MySQL | Microsoft Docs
  16. 常用证件照照片规格(英寸) (厘米) (像素)
  17. 淘宝客网站SEO及赚钱与揭密
  18. 如何在Total Commander中使用命令行
  19. 将GIF转成视频MP4、MOV
  20. 英伟达Q3财报解读:营收连续四季度下滑 下一个增长拐点何时来?

热门文章

  1. 为什么电脑屏幕会横过来_电脑屏幕横过来了怎么办
  2. 计算机网络分层结构概述
  3. 神经网络的相关函数以及误差类型
  4. codeforces 794D Labelling Cities
  5. 云计算业务发展迅速 或成资本角逐新战场
  6. 统计学三大相关系数之斯皮尔曼(spearman)相关系数
  7. 使用Java生成思维导图
  8. oracle所有分区表分区,Oracle分区表及分区目录
  9. java timezone_详解Java中的时区类TimeZone的用法
  10. 2020年第4季度OKR个人总结