交叉验证

交叉验证是一种用来评价一个训练出的模型是否可以推广到另一个数据结构相同的数据集上的方法。主要用于PCR 、PLS 回归建模等建模应用中。

交叉验证有时也称为交叉比对,如:10折交叉比对。主要用于估计一个预测模型在实际数据应用中的准确度。它是一种统计学上将数据样本切割成较小子集的实用方法。首先在一个子集上做训练, 而其它子集则用来做后续对此分析的确认及验证。

一个交叉验证将样本数据集分成两个互补的子集,一个子集用于训练分类器或模型,被称为训练集(training set);另一个子集用于验证训练出的分类器或模型是否有效,被称为测试集(testing set)。测试结果作为分类器或模型的性能指标。而我们的目的是得到高度预测精确度和低的预测误差。为了保证交叉验证结果的稳定性,对一个样本数据集需要多次不同的划分,得到不同的互补子集,进行多次交叉验证。取多次验证的平均值作为验证结果。

几种交叉验证方法

1、随机子抽样验证(Hold-Out Method)
介绍:常识来说,Hold-Out 验证并非一种交叉验证,因为数据并没有交叉使用。该方法将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为分类器的性能指标。相对K-CV又被称为2-CV。

**优点:**处理简单,只需随机把原始数据分为两组即可。

**缺点:**有些样本可能从未做过训练或测试数据,而有些样本不止一次选为训练或测试数据。另外训练集样本数太少,通常不足以代表母体样本的分布,导致 test 阶段辨识率容易出现明显落差。

2、K折交叉验证(K-fold Cross Validation)
**介绍:**作为2-CV的演进,将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2。而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。

优点: K-CV使得每一个样本数据都既被用作训练数据,也被用作测试数据,可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性。

缺点: K值的选择

3、留一法交叉验证(Leave-One-Out Cross Validation)
**介绍:**如果设原始数据有N个样本,那么每个样本单独作为验证集,其余的N-1个样本作为训练集,所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。

优点:
a.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠;
b. 实验没有随机因素,整个过程是可重复的。

缺点: 计算成本高,当N非常大时,计算耗时。除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需的时间。

在模式识别与机器学习的相关研究中,经常会将数据集分为训练集与测试集这两个子集,前者用以建立模式,后者则用来评估该模式对未知样本进行预测时的精确度,即泛化能力(generalization ability)。

交叉验证核心原则

Cross-validation 是为了有效的估测 generalization error 所设计的实验方法,只有训练集才可以用在模式的训练过程中,测试集则必须在模式完成之后才被用来评估模式优劣的依据。

数据集分割原则

原始数据集分割为训练集与测试集,必须遵守两个要点:
1、训练集中样本数量必须够多,一般至少大于总样本数的 50%;
2、两组子集必须从完整集合中均匀取样。均匀取样的目的是希望尽量减少训练集/测试集与完整集合之间的偏差。一般的作法是随机取样,当样本数量足够时,便可达到均匀取样的效果。

几种交叉验证法(超详细)相关推荐

  1. 交叉验证的缘由、原理以及四种交叉验证法(留出法,K-Fold,留一法,Bootstrap)

    [机器学习]Cross-Validation(交叉验证)详解 普通情况下,就是将数据集分为训练集和测试集. 这个简单的划分方法存在两个弊端. 1.最终模型与参数的选取将极大程度依赖于你对训练集和测试集 ...

  2. python实现留一法_数据分割:留出法train_test_split、留一法LeaveOneOut、GridSearchCV(交叉验证法+网格搜索)、自助法...

    1.10 交叉验证,网格搜索 学习目标 目标 知道交叉验证.网格搜索的概念 会使用交叉验证.网格搜索优化训练模型 1 什么是交叉验证(cross validation) 交叉验证:将拿到的训练数据,分 ...

  3. 【机器学习】图解机器学习中的 12 种交叉验证技术

    今天我给大家盘点下机器学习中所使用的交叉验证器都有哪些,用最直观的图解方式来帮助大家理解他们是如何工作的. 数据集说明 数据集来源于kaggle M5 Forecasting - Accuracy[1 ...

  4. R语言第八讲 评估模型之交叉验证法分析案例

    题目 评估Auto数据集上拟合多个线性模型所产生的测试错误率.Auto数据集是存在与ISLR程序包中的一个摩托车相关数据的数据集,读者可自行下载ISLR程序包,并将Auto数据集加载. 相关资料 交叉 ...

  5. 机器学习基础|K折交叉验证与超参数搜索

    文章目录 交叉验证 交叉验证的概念 K的取值 为什么要用K折交叉验证 Sklearn交叉验证API 超参数搜索 超参数的概念 超参数搜索的概念 超参数搜索的原理 Sklearn超参数搜索API 实例 ...

  6. 评估方法(交叉验证法、自助法、留出法)

    文章目录 留出法 hold-out 交叉验证法 cross validation k折交叉验证 留一法 leave-one-out cross validation 自助法 bootstrapping ...

  7. 真香啊,机器学习中这3种交叉验证方法要掌握

    交叉验证是机器学习中常用的一种策略,其核心是对数据集进行划分,本文介绍sklearn中的3种交叉验证时划分数据集的方法: KFold StratifiedKFold GroupKFold 这里来举例说 ...

  8. python交叉验证法_详解python实现交叉验证法与留出法

    在机器学习中,我们经常在训练集上训练模型,在测试集上测试模型.最终的目标是希望我们的模型在测试集上有最好的表现. 但是,我们往往只有一个包含m个观测的数据集D,我们既要用它进行训练,又要对它进行测试. ...

  9. python 模型交叉验证法_使用交叉验证法(Cross Validation)进行模型评估

    scikit-learn中默认使用的交叉验证法是K折叠交叉验证法(K-fold cross validation):它将数据集拆分成k个部分,再用k个数据集对模型进行训练和评分. 1.K折叠交叉验证法 ...

最新文章

  1. 又居家办公了,要签合同怎么办?
  2. PhiSpy:在细菌基因组中识别噬菌体
  3. 大神打造生态链,从F2全网通开始
  4. linux7 开ftp,linux centos 7 开启 ftp
  5. java工程师有什么要求_什么是java,java工程师应该具备哪些能力?
  6. 在pytorch中自定义dataset读取数据2021-1-8学习笔记
  7. [蓝桥杯][2014年第五届真题]兰顿蚂蚁(模拟)
  8. 力扣35. 搜索插入位置
  9. BFS HDOJ 1242 Rescue
  10. 嗖嗖移动 开发过程 9203 javaoop book2 Boss
  11. fpga挂一片ddr2_FPGA片外存储器之DDR2控制器2
  12. 虚继承 - C++快速入门29
  13. 在Mac OS X 通过抓包、“第三方下载工具”加速下载、安装APP或系统
  14. 传染病模型中作图与计算(matlab,数学模型)
  15. 帝国cms 自定义页面 php,帝国CMS增加自定义页面模板修改教程
  16. 曲速未来 揭示:Lisk(LSK)有什么价值?
  17. linux中数据库的管理
  18. 水山蹇:自救者天救;雷水解:拯焚救溺
  19. 读书有益——》祝你今天愉快
  20. Angular中的指令(Directives)

热门文章

  1. linux wifi 数据流,linux下wifi配置
  2. 组合数学9-线性常系数奇次递推关系
  3. 电脑使用手机共享上网省流量的方法
  4. SAP库存库龄逻辑分析
  5. uniapp真机运行app失败IOS端
  6. 【二叉树】最小高度树
  7. The 6 inspectors in XCode
  8. vivado下载步骤
  9. python列表和元组
  10. 云服务器Ubuntu绑定域名