交叉验证--说不清道不明的故事

2023-11-10 03:59

本文主要是介绍交叉验证--说不清道不明的故事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“你以为你懂了,可是别人分分钟说的你哑口无言;你以为你没懂,其实你也不知道自己懂没懂。”

一、一文看懂 AI 数据集:训练集、验证集、测试集
这里对验证集的作用总结是对的,但是交叉验证的讲解我觉得是不对的,所以交叉验证的内容别看这里

二、交叉验证的种类及其优缺点

首先,讲一个注意点:
做训练的时候,数据的训练数据和验证数据集在理想情况下数据分布应该一致。
交叉验证的种类有哪些?这是一个很容易犯错的问题。其实,并不是只有常用的K折交叉验证属于这个类别,其余几类也属于这一范畴。链接一的这一部分内容整理的非常好
(1)留出法
在机器学习任务中,拿到数据后,我们首先会将原始数据集分为三部分:训练集、验证集和测试集。
训练集用于训练模型,验证集用于模型的参数选择配置,测试集对于模型来说是未知数据,用于评估模型的泛化能力。
缺点是:只做一次分割,当原始数据集比较小时,分割后数据的分布是否和原始数据集的分布相同等因素比较敏感,不同的划分会得到不同的最优模型,而且分成三个集合后,用于训练的数据更少了。
(2)K折交叉验证,其内容来源于链接一和链接三
假设有n个观测值,我们将其均分为K组。用其中K-1组来训练模型,然后用训练得到的模型对剩下的一组进行预测,并在该组上计算预测误差。因为从K组中选择K-1组有K种选择,也可以理解为这K个组都有可能成为剩下的那一个预测组。所以便会计算K次的预测误差,对这K次的预测误差平均便得到一个交叉验证误差。以上过程便称为K-fold交叉验证。
其实,“交叉验证”中的“交叉”2字的意思就是:固定数据在不同K折中的地位不一样,可能是验证集,也可能是训练集。
优点:k 折交叉验证通过对 k 个不同分组训练的结果进行平均来减少方差,因此模型的性能对数据的划分就不那么敏感。
K折交叉验证的极致是“留一法”
(3)提靴法
缺点:这样产生的训练集的数据分布和原数据集的不一样了,会引入估计偏差。
此种方法不是很常用,除非数据量真的很少。

三、交叉验证的意义

1.作用一总结:来源于链接一
多用于数据很少的场合,防止过拟合。一般做深度学习跑标准数据集的时候用不到。
(1)将所有数据多喂入模型,可以让模型从有限的数据中获取尽可能多的有效信息。
(2)做训练中,每一份数据都有机会做验证集,可以根据验证集表现发现出数据分布不一致的情况,更好的考察模型对各种新数据的表现,防止过拟和。
2. 作用二总结:来源于链接一和链接三
作用:找到合适的模型参数
在模型选择时,假设模型序列有个tuning parameter,不同的tuning parameter便确定一个模型,计算其交叉验证误差,最后选择使得交叉验证误差最小的那一个tuning parameter。这便是模型选择过程。
在这里插入图片描述

这篇关于交叉验证--说不清道不明的故事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/380282

相关文章

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

easyui 验证下拉菜单select

validatebox.js中添加以下方法: selectRequired: {validator: function (value) {if (value == "" || value.indexOf('请选择') >= 0 || value.indexOf('全部') >= 0) {return false;}else {return true;}},message: '该下拉框为必选项'}