AI数据集的切分及交叉验证

【机器学习】训练集/验证集/测试集释疑 数据集的划分,训练集、验证集、测试集,关于数据集的一些疑问 阅读详情

转载自:easyAI-人工智能知识库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

前言

数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集、验证集、测试集。
同时还会介绍如何更合理的讲数据划分为3种数据集。最后给大家介绍一种充分利用有限数据的方式:交叉验证法。

什么是训练集

训练集(Training Dataset)是用来训练模型使用的。
在《一文看懂机器学习》里我们介绍了机器学习的7个步骤,训练集(Training Dataset)主要在训练阶段使用。
在这里插入图片描述

什么是验证集

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

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

说明:

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

什么是测试集

当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。
在这里插入图片描述
通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。

如何合理的划分数据集

在这里插入图片描述
下面的数据集划分方式主要针对「留出法」的验证方式,除此之外还有其他的交叉验证法,详情见下文 — — 交叉验证法。
数据划分的方法并没有明确的规定,不过可以参考3个原则:

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

交叉验证法

为什么要用交叉验证法

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

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

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

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

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

3种主流的交叉验证法

在这里插入图片描述

留出法(Holdout cross validation)

上文提到的,按照固定比例将数据集静态的划分为训练集、验证集、测试集。的方式就是留出法。

留一法(Leave one out cross validation)

每次的测试集都只有一个样本,要进行 m 次训练和预测。 这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。 一般在数据缺乏时使用。

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

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

  • 将数据集分为训练集和测试集,将测试集放在一边
  • 训练集分为 k 份
  • 每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
  • 通过 k 次训练后,我们得到了 k 个不同的模型。
  • 评估 k 个模型的效果,从中挑选效果最好的超参数
  • 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。
    在这里插入图片描述
    k 一般取 10 数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。 数据量大的时候,k 可以设小一点。

微信关注博主:挑灯看剑王知事
在这里插入图片描述

五折交叉验证/K折交叉验证, python代码到底怎么写 五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练。实验5次求平均值。如上图,第一次实验拿第一份做测试集,其余作为训练集。第二次实验拿第二份做测试集,其余做训练集。依此类推~ 但是,道理都挺简单的,但是代码我就不会写,比如我怎么把数据平均分成5份?我怎么保证每次实验的时候,数据都是这么划分的?本来一般的训练时,把数据按6:2:2分成训练集、验证集和测试集,在训练集上训练图像,验证集上保存最佳模型,测试集用来最后的测试。现在交叉验证没有验证集了,怎么保存模型?以下为大家一一解答。 .. 阅读详情

相关推荐

pytorch - K折交叉验证过程说明及实现

代码主要核心思想来自:https://www.cnblogs.com/JadenFK3326/p/12164519.html K折交叉交叉验证的过程如下: 以200条数据,十折交叉验证为例子,十折也就是将数据分成10组,进行10组训练,每组用于测试的数据为:数据总条数/组数,即每组20条用于valid,180条用于train,每次valid的都是不同的。 (1)将200条数据,分成按照 数据...

越努力 越幸运 4万+

验证集的作用

使用验证集是为了 快速调参,也就是用验证集选择超参数(网络层数,网络节点数,迭代次数,学习率这些)。另外用验证集还可以监控模型是否异常(过拟合啦什么的),然后决定是不是要提前停止训练。 验证集的关键在于 选择超参数,我们手动调参是为了让模型在验证集上的表现越来越好,如果把测试集作为验证集,调参去拟合测试集,就有点像作弊了。 而测试集既 不参与参数的学习过程,也 不参与参数的选择过程,仅仅用于模型评价。 ...

weixin_62064959的博客 2864

交叉验证(Cross-Validation)

今天我们就来详细了解一下 "交叉验证" 这个概念! 首先来看一下,什么是交叉验证? 交叉验证,是我们在学习机器学习建模中经常能遇到的一种方法。顾名思义,它就是通过"交叉" (将原始数据拆分成多种不同数据组合)的方式对模型对象进行 "验证" (精确度评估:损失函数,方差,偏差)的处理工具。 交叉验证(Cross-validation)主要用于建模应用中,例如PCR 、PLS 回归建模中。在给...

weixin_42077402的博客 1万+

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

在机器学习中,数据集的合理划分会提高我们的训练效率。机器学习中这三种数据集合非常容易弄混,特别是验证集和测试集,这篇笔记写下我对它们三个的理解以及在实践中是如何进行划分的。 数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集、验证集、测试集。 同时还会介绍如何更合理的讲数据划分为3种数据集。最后给大家介绍一种充分利用有限数据的方式:交叉验证法。 先用一个不恰当的比喻来说明3种数据集之间的关系: 训练集相当于上课学知识 验证集相当于课后的的练习题,用来纠正和强化学到..

Vermont_的博客 1万+

K折交叉验证法原理及python实现

在训练数据的过程或者参加数据比赛的时候,常常会遇到数据量不够大的情况,在一次比赛过程我学到一个小技巧—K折交叉验证法(k-fold CrossValidation),下面和大家分享一下。1 变形前的K折在遇到K折交叉验证之前,往往使用的是简单交叉验证(hold -out cross validation),也就是从全部的训练数据 D中随机选择 d的样例作为训练集 train,剩余的作为测试集 tes

weixin_39183369的博客 6万+

交叉验证

交叉验证就是重复的利用数据集,把样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。 常见的交叉验证方式有以下三种: 第一种是简单交叉验证。首先,随机的将样本数据分为两部分(比如: 80%的样本作为训练集,20%的样本作为测试集),然后用训练集来训练模型,在测试集上验证模型及参数。然后,再把样本进行随机排序后,重新选择训练集(80%)和测试集(20%),...

weixin_44766179的博客 5271

AI正在预支你的数据!未来信息泄露:AI时代的致命暗流

1.时间因果的破坏​在时间序列任务(如容量预测、故障预警)中,数据必须严格按时间顺序划分:​过去→现在→未来。若训练时使用了未来时间点的数据(即使间接使用),模型会“预知”未来模式,导致评估指标虚高,但实际预测能力低下。2.泄露途径分类​泄露类型​典型案例后果​数据预处理泄露在标准化(如归一化)时使用全数据集均值,而非仅用训练集均值测试集统计特征被训练集“偷看”特征工程泄露计算特征(如移动平均)时未限制时间窗口,将未来值纳入当前计算模型学习到未来趋势​数据集划分泄露。

qq_36972930的博客 473

Python实现K折交叉验证

在K折交叉验证中,我们将数据集分成K个子集,然后依次选取其中一个子集作为验证集,其余的K-1个子集作为训练集,重复K次。在本文中,我们将使用Python实现K折交叉验证的过程。对象和相应的迭代过程,我们可以方便地进行K折交叉验证,并评估模型的性能。在每次迭代中,我们训练一个逻辑回归模型,并使用验证集进行预测和评估。对于每一次迭代,我们将获取训练集和验证集的索引,并使用这些索引从原始数据集中获取相应的数据。首先,我们需要引入必要的库和模块。在上述代码中,我们将K的值设置为5,表示将数据集分成5个子集。

syntax_api860的博客 584

keras实现交叉验证以及K折交叉验证

原文来自https://www.cnblogs.com/bymo/p/9026198.html 记下来,以便以后忘记了可以找到 目录 一.自动切分 二.手动切分 三.K折交叉验证(k-fold cross validation) 在训练深度学习模型的时候,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 ...

webmater2320的博客 2万+

Python实现K折交叉验证(K-Fold Cross-Validation)

K折交叉验证可以有效地评估机器学习算法的性能,并减少测试结果的方差。它特别适用于数据集较小的情况,因为它允许我们在不浪费过多数据的情况下进行多次测试。

优快云 精品推荐 1748

小智AI语音控制实战:从工具注册到音量调节的MCP交互全流程

本文详细拆解了基于小智AI与MCP协议实现本地智能语音控制的完整交互流程。以ESP32平台为例,从开发环境搭建、MCP服务器初始化、工具注册,到用户语音指令的接收、解析、硬件执行与结果反馈,提供了全链路实战代码。重点阐述了如何通过MCP协议将AI的意图理解与设备功能执行在本地高效耦合,实现毫秒级响应的音量调节等控制,为嵌入式AI开发者提供了清晰的实现路径。

weixin_29165725的博客 346

交叉验证——对数据集的划分

写在前面: 为什么划分数据集? 以我们的比赛为例,赛方提供有标签的训练数据和无标签的测试数据,要求我们提交测试数据的预测标签值,如果我们不划分数据集,直接用所有的数据进行训练,最后直接对无标签的测试数据预测,我们很难预测我们模型的好坏。以我的理解来看,对于数据集划分形成的验证集,相当于是平时学习中的小考,而测试数据可以看成是期末考或者高考,我们想通过数据集的划分,在验证集上达到评估我们学习能...

Emily 1万+

STM32F103跑LVGL,用DMA加速刷屏,800*480大屏也能丝滑

本文详细介绍了如何在STM32F103芯片上通过DMA加速和内存优化,实现800*480大屏的LVGL流畅运行。通过FSMC+DMA硬件架构优化、双缓冲机制和LVGL参数调优,显著提升了界面刷新率和响应速度,适用于嵌入式GUI开发中的高性能需求场景。

weixin_30357231的博客 375

基于sklearn和keras的数据切分与交叉验证

目录 一.自动切分 二.手动切分 三.K折交叉验证(k-fold cross validation) 在训练深度学习模型的时候,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 回到顶部 一.自动切分 在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能. 具体地,调用model.fit()训练模型时,可通过validation_split参数来指定从...

haoji007的博客 530

PythonWeb开发框架—Django之工程创建和models的定义和增删改查

文章介绍了Django工程的创建、models的定义和增删改查

weixin_42476668的博客 990

ThingsBoard入门实战(七):公共发布和 UI 细节修改

公共发布和 UI 细节修改7.细节修改和公共发布一、公共发布二、UI优化下载运行修改三、下一步还可以做什么?更好的UI更丰富的系统模块 7.细节修改和公共发布 GET到新技能了,想给兄弟们演示,需要给他们每个人一个账号么? 答案肯定是:不需要! ThingsBoard 用 公共发布 解决了这个问题。 一、公共发布 首先我们来看一下路灯设备现在在谁名下? 如下图,路灯都是customerA的, 目前只有它和它的租户可以看到,其他人需要看就需要设为公有。 如图操作: 对于设备详情仪表盘,我们也需要设为公有

AIGC搞起 9116

【MLP数据训练】基于sklearn和keras的模型MLP数据切分与交叉验证

目录 自动切分 手动切分 K折交叉验证(k-fold cross validation) 在训练深度学习模型的时候,通常将数据集切分为训练集和验证集。Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 1、自动切分 在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能。 具体地,调用model.fit...

小苏打的学习博客 3332

M系列芯片MacBook上UTM虚拟机部署达梦DM8的避坑指南

本文详细介绍了在M系列芯片MacBook上使用UTM虚拟机部署达梦数据库DM8的完整流程与避坑指南。针对ARM架构环境,重点解决了虚拟机选择、麒麟系统安装、系统调优及DM8命令行安装中的常见问题,为开发者提供了稳定可靠的国产数据库本地测试方案。

weixin_28455801的博客 451

数据集划分train_test_split\交叉验证Cross-validation

交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。

小麦粒的Python 2万+

Python爬虫实战:使用最新技术抓取百度贴吧帖子内容

本文详细介绍了使用Python最新技术抓取百度贴吧帖子的完整流程。通过库,我们实现了高效的异步爬虫,具备JavaScript渲染、智能反爬应对、数据持久化等高级功能。这个爬虫框架具有良好的扩展性,可以根据具体需求进行功能增强。

2201_76125261的博客 777

MySQL 一一 MySQL基本使用

1、数据库 简单来说,所谓的数据库就是存储数据的容器,而且是永久存储的。 2、为什么需要数据库 3、为什么要学习MySQL数据库 最早MySQL数据,瑞典AB公司开发的一款开源型的关系型数据库。 随着时间的推移,瑞典AB公司把MySQL数据库转让给Sun公司(Java语言的创始公司) 后来,Sun公司经营不善,又把MySQL数据库转让给甲骨文公司(Oracle数据库) 4、数

Guizy 7万+

3种交叉验证与参数选择方式

在训练深度学习模型时,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 一.自动切分 在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能.具体地,调用model.fit()训练模型时,可通过validation_split参数来指定从数据集中切分出验证集的比例. from keras.models import Sequential from keras.layers..

yscoder的博客 4894

手把手教你学simulink(90.1)--直流电动机实例:基于Simulink的基本模型的直流电动机(DC Motor)建模

直流电动机(DC Motor)因其结构简单、控制方便和良好的调速性能,广泛应用于各种工业自动化、机器人技术、家用电器以及航空航天等领域。为了更好地理解和应用直流电动机的工作原理及其控制系统,本项目旨在通过Simulink对直流电动机进行基本模型的建模与仿真。

MHD0815的博客 438

Keras验证集切分

转自:https://www.cnblogs.com/bymo/p/9026198.html 在训练深度学习模型的时候,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 一.自动切分 在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能. 具体地,调用model....

不二的博客 2869

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 两个list的对应元素操作
下一篇: lightgbm调参
Manduner_TJU
博客等级 码龄9年 157粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值