机器学习基础知识之交叉验证

news2024/9/22 5:31:36

文章目录

  • 交叉验证定义
    • 1、随机子抽样验证
    • 2、K折交叉验证
    • 3、留一法交叉验证
    • 4、自助采样验证

交叉验证定义

在使用某一个数据集对模型进行训练时,模型的实际训练情况会受到数据集的直接影响,且其实际训练结果是难以确定的,极有可能出现欠拟合与过拟合的情况。欠拟合一般是指模型对数据集训练不足,从而在训练数据集与测试数据集上表现都较差,过拟合是指模型单纯在对训练数据集的信息获取上表现较为优秀,但当应用与测试数据集时则会表现较差。模型是否表现出欠拟合的情况可以直接从模型在训练数据集上的表现可以看出,而是否出现过拟合的情况则需要采用测试数据集对模型进行验证,因此通常在对模型使用某个数据集进行训练后,还要将此模型应用到另一个数据结构相同的数据集上,倘若在新的数据集上此模型的应用效果表现优秀,则对此模型的训练才算成功。
由于在实际的研究过程中,使用两组数据结构相同但具体数据信息不同的数据集进行相关实验会增加实验的复杂度,因此通常会对需要进行实验的数据集进行分组,从中选出一部分数据集作为训练数据集对模型进行训练,剩下的部分数据集作为测试数据集对训练好的模型进行验证。这种验证方式被称为交叉验证(Cross Validation,简称CV),该方法方法主要用于对训练好的模型在实际数据预测或数据分类时的准确度进行估计,以此来判断此模型的泛化能力是否优秀。交叉验证可以对训练完成的模型性能进行评估,以此确定在此数据集上表现最好的模型,另外它还可以在一定程度上减小模型对数据的过拟合和欠拟合,从新的数据上获得更多的有效信息。
目前常用的交叉验证方法主要有四种,它们分别为随机子抽样验证(Hold-out Method)、K折交叉验证(K-fold Cross Validation)、留一法交叉验证(Leave-one-out Cross Validation)以及自助采样验证(Bootstrapping)。

1、随机子抽样验证

随机子抽样验证提出时间相对其他几种交叉验证方法最早,严格来说,随机子抽样验证对数据集并没有交叉使用,它涉及到的只是单纯的将原数据集随机分成两组,一组作为训练数据集对模型进行训练,一组作为测试数据集用于模型的验证过程。此方法相对来说操作简单,只涉及到数据集的随机分组,但是当使用这种方法对数据集进行分组之后,训练数据集与原始数据集或测试数据集与训练数据集的数据分布情况可能会存在很大的区别,因此容易导致训练好的模型只在训练数据集上表现优秀,而在测试数据集上表现较差,即最后测试数据集的验证结果与数据集的随机分组情况有很大的关系。由于上述问题的存在,通过此方法得到的验证结果在某些时候并不具有说服性。
在这里插入图片描述

2、K折交叉验证

K折交叉验证是在随机子抽样验证的基础上进行改进后提出的方法,与随机子抽样验证不同的是,此方法不重复抽样将原始数据集随机平均分成K组,从而获得K个子数据集,然后进行K次模型的训练与测试过程。在每次训练与测试过程中选取K个子数据集中的一个作为模型的测试数据集,其余的K-1子数据集作为模型的训练数据集,然后进行相关实验,获得验证数据集上的验证评估结果。最后将K个测试数据集上的验证评估结果进行平均计算以获得最后的验证评估结果。
使用K折交叉验证对模型性能进行验证时,原始数据集中每个样本数据既被用作于训练数据集,也被用作于测试数据集,因此在验证结果中可以避免过拟合的情况发生,较随机子抽样验证也更有说服性。但其依旧存在一个缺点,那就是对于K值的确定方式没有一个统一的方法,一般只有在数据量较小的情况下会将K值取值为2,其他时候均选取3及其以上的正整数。
在这里插入图片描述

3、留一法交叉验证

留一交叉验证法与K折交叉验证的中心思想是相同的,均让数据集中的每个样本数据既作为训练数据,也作为测试数据。其不同点在于K折交叉验证选用的每个测试数据均为数据集,而留一交叉验证法所选用的为单个的样本数据。
假设原始数据集中有N个样本数据,那么将对模型进行N次训练与测试过程,每次训练与测试过程中,原始数据集中的每个样本数据将被依次选择作为测试过程的测试数据,其余N-1个样本数据将被作为训练过程的训练数据集,最后针对N个验证评估结果进行平均计算以获得最后的验证评估结果。
此方法最大的优点在于交叉验证的过程中所有样本都用于模型训练,因此训练数据集样本的分布特点最接近于原本样本数据集,在此基础上评估得到的结果更可靠。但是由于每个样本数据依次作为测试数据,若当原始数据集的样本总量N为一个较大值,则由此带来的模型计算量以及模型训练时间则会相对较大,因此计算成本相对较高。
在这里插入图片描述

4、自助采样验证

自助采样验证是一种使用较少的特殊交叉验证方法,它一般应用于数据量较少的数据集。这种方法最大的特点在于通过有放回的随机采样方式从原始数据集中选出训练数据集,未被选中的数据作为测试数据集,在数据集较小时,这种方法可以有效帮助进行训练数据集与测试数据集的划分。
假设原始数据集中有N个样本数据,那么将对该原始数据集进行N次有放回的随机抽取,然后将N个被抽取出来的样本数据作为训练数据集,原始数据集中未被抽取过的样本数据作为测试数据集,一般来说,当N值趋近于无穷大时,约有36.8%的样本数据作为测试数据集。
使用此方法最后获得的训练数据集与原始数据集大小完全相同,而测试数据集约占训练数据集的1/3,因此训练数据集与测试数据集的划分比例较为合理,但是一旦数据过大时,训练数据集的数据分布情况则会与原始数据集之间存在较大的出入,对模型的验证结果会有比较大的影响。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/480444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实验报告】实验四、彩色图像处理

一、实验目的 使用MatLab软件对图像进行彩色处理,熟悉使用MatLab软件进行图像彩 色处理的有关方法,并体会到图像彩色处理技术以及对图像处理的效果。 二、实验原理 (一)一幅RGB图像就是彩色像素的一个M x N x 3数组&#xff0…

视频搬砖项目【一个技术员是如何轻松利用视频搬运项目做到日入2000+】

无门槛人人可做副业项目,视频搬砖收益,实测一天2000! 今天给大家分享一个微信看一看 的项目,操作非常简单,小白也很容易上手,不需要像某音一样去卖货,只要发布作品就能够有收益。 第一个、项目…

vue项目无法运行报错 error:0308010C:digital envelope routines::unsupported

文章目录 问题原因解决方法方法一方法二 问题 运行vue项目,报错 error:0308010C:digital envelope routines::unsupported 原因 网上查了一下,大体原因就是node版本不对,node版本太高 也有说我没有使用 Node JS 的 LTS(长期支…

ROS2交叉编译操作

ROS2移植过程 在移植ROS2之前,先确认需要移植的版本以及其对应的依赖,这些信息可以在 ROS 2 Releases and Target Platforms 中有介绍,可依据自身需要使用的平台,参考该链接进行选择,下面以ROS2 Humble为例进行介绍ROS2移植操作。 ROS Humble依赖如下: 而ROS2的构建依赖…

sed进阶之保留空间和排除命令

shell脚本编程系列 保留空间 模式空间(pattern space)是一块活跃的缓冲区,在sed编辑器执行命令时保存着待检查的文本,但它并不是sed编辑器保存文本的唯一空间。sed编辑器还有另一块称作保留空间(hold space&#xff0…

【深度学习】BERT是什么?怎么玩的?

RNN 也是一种Seq2Seq网络 这种RNN就不能并行运算,且对于长句子会造成损失遗忘或者梯度爆炸 Transfomer Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建&…

美国大学特别重视的批判性思维,是如何培养出来的?

美国大学非常注重培养学生的批判性思维,爱因斯坦有一句名言:“大学教育的价值,不在于学习很多事实,而在于训练大脑会思考。” 批判性思维有两个典型特征:(1)批判性思维善于对通常被接受的结论提…

SpringMVC学习总结

SpringMVC简介 我们首先要了解MVC是什么 MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean&#xf…

oracle 19创建用户时出现“ORA-65096: invalid common user or role name”的错误

ORACLE 19命令 版本:Version 19.3.0.0.0 一、ORACLE 19创建用户命令 1、切换到oracle用户 [rootoracledb ~]# su - oracle Last login: Tue Jun 1 01:48:10 PDT 2021 on pts/5 2、以dba身份进入sql语句 [oracleoracledb ~]$ sqlplus "/as sysdba" …

2.rabbitMQ之交换机

1.交换机的作用 1.默认交换机会自动指定队列 2.之前一个信息必须被消费1次,现在的是一个消息可以被消费多次(发送到不同队列的前提下,正常情况下一个队列只能消费一次) 3.消息先发给交换机,然后交换机发给多个队列,可以达到多次消费的效果 如图mq3 2.交换机的类型 默认交换机…

【模块系列】DY-SV17F语音播放模块

前言 本文针对官方给的应用手册进行补充和加上个人理解。在官方的资料中已经介绍的很详细了,我就节选部分出来,基本认识模块就行了吧。本来还行自己介绍呢,没想到官方写这么详细了,也不知道介绍啥了,现在单纯的写为个人…

网络安全:钟馗之眼ZOOMEYE搜索引擎使用

网络安全:钟馗之眼ZOOMEYE搜索引擎 地址: 首页 - 网络空间测绘,网络安全,漏洞分析,动态测绘,钟馗之眼,时空测绘,赛博测绘 - ZoomEye("钟馗之眼")网络空间搜索引擎 zoomeye是针对互联网空间的搜索引擎,收录了互联网空间中的设备、…

103-Linux_I/O复用方法之epoll

I/O复用方法之epoll 一.epoll介绍二.epoll相关的函数1.epoll_create2.epoll_ctl3.epoll_wait 三.LT和ET模式1.LT模式2.ET模式 四.epoll实现TCP服务器1.代码(1)服务器端(2)客户端代码 2.运行结果截图 一.epoll介绍 epoll 是 Linux 特有的 I/O 复用函数。它在实现和使用上与 sel…

小程序swiper控件的使用

swiper实现左右滑动,以及tab点击,并且给swiper绑定下拉刷新事件 <view class"swiper-tab"><view class"start swiper-tab-list {{currentTab0 ? on : }}" data-current"0" catchtap"swichNav">私教课</view><vi…

sed进阶之创建sed实用工具

shell脚本编程系列 加倍行间距 sed $!G data2.txt保留空间的默认值是一个空行&#xff0c;通过G命令可以将保留空间内的内容附加到模式空间内容之后&#xff0c;但是最后一行不需要附加&#xff0c;所以通过排除命令!进行排除 对可能含有空行的文件加倍行间距 sed /^$/d;$!G …

c++11上篇

c11 1.C11简介2.列表初始化2.1 &#xff5b;&#xff5d;初始化2.2 std::initializer_list 3.变量类型推导3.1 auto3.2 decltype3.3 nullptr 4.范围for循环5.final与override6.智能指针7.新增加容器---静态数组array、forward_list以及unordered系列8.默认成员函数控制9.右值引…

C++——类和对象[中]

0.关注博主有更多知识 C知识合集 目录 1.类的默认成员函数 2.构造函数和析构函数基础 3.构造函数进阶 4.析构函数进阶 5.拷贝构造函数 6.运算符重载 7.日期类 7.1输入&输出&友元函数 8.赋值运算符重载 9.const成员函数 9.1日期类完整代码 10.取地址重载 …

pandas简介

pandas的两个主要数据结构是&#xff1a;Series&#xff08;一维数据&#xff09;、DataFrame&#xff08;二维数据&#xff09;。 Series Series是一种类似于NumPy中一维数组的对象&#xff0c;它由一组任意类型的数据以及一组与之相关的数据标签组成。 import pandas as pd…

( 数组和矩阵) 240. 搜索二维矩阵 II ——【Leetcode每日一题】

❓240. 搜索二维矩阵 II 难度&#xff1a;中等 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,1…

排序(快速排序 归并排序)

目录 一、快速排序 思路 动画演示 模板 注意点 二、归并排序 思路 动画演示 模板 注意点 三、习题 1.第k个数 2.数组中的逆序对* 一、快速排序 时间复杂度&#xff1a; 平均情况O(nlog2n) 最坏情况O(n^2) 思路 1. 确定分界点x (可取为q[l]、q[r]或 q[(l r) / 2])…