交叉验证

交叉验证(Cross-validation)主要用于建模应用中,例如PCR、PLS回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。

思想介绍

在使用训练集对参数进行训练的时候,经常会发现人们通常会将一整个训练集分为三个部分(比如mnist手写训练集)。一般分为:训练集(train_set),评估集(valid_set),测试集(test_set)这三个部分。这其实是为了保证训练效果而特意设置的。其中测试集很好理解,其实就是完全不参与训练的数据,仅仅用来观测测试效果的数据。而训练集和评估集则牵涉到下面的知识了。

因为在实际的训练中,训练的结果对于训练集的拟合程度通常还是挺好的(初始条件敏感),但是对于训练集之外的数据的拟合程度通常就不那么令人满意了。因此我们通常并不会把所有的数据集都拿来训练,而是分出一部分来(这一部分不参加训练)对训练集生成的参数进行测试,相对客观的判断这些参数对训练集之外的数据的符合程度。这种思想就称为交叉验证(Cross Validation) [1]  。

定义

交叉验证(Cross Validation),有的时候也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法,该理论是由Seymour Geisser提出的。

在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方加和,称为PRESS(predicted Error Sum of Squares)。

基本思想

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

目的

用交叉验证的目的是为了得到可靠稳定的模型。在建立PCR 或PLS 模型时,一个很重要的因素是取多少个主成分的问题。用cross validation 校验每个主成分下的PRESS值,选择PRESS值小的主成分数。或PRESS值不再变小时的主成分数。

常用的精度测试方法主要是交叉验证,例如10折交叉验证(10-fold cross validation),将数据集分成十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10折交叉验证求均值,例如:10次10折交叉验证,以求更精确一点。

交叉验证有时也称为交叉比对,如:10折交叉比对 [2]  。

常见形式

Holdout 验证

常识来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。 随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。 一般来说,少于原本样本三分之一的数据被选做验证数据。

K-fold cross-validation

K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的 [3]  。

留一验证

正如名称所建议, 留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料, 而剩余的则留下来当做训练资料。 这个步骤一直持续到每个样本都被当做一次验证资料。 事实上,这等同于和K-fold 交叉验证是一样的,其中K为原本样本个数。 在某些情况下是存在有效率的演算法,如使用kernel regression 和Tikhonov regularization。

数据分析 | 交叉验证相关推荐

  1. 大数据分析实战-信用卡欺诈检测(二)-下采样方案和交叉验证

    第一部分已经写到这里了,看完第一部分再看这一部分:大数据分析实战-信用卡欺诈检测 文章目录 下采样方案 交叉验证 下采样方案 下采样方案的实现过程比较简单,只需要对正常样本进行采样,得到与异常样本一样 ...

  2. Python的数据分析中交叉验证

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python的数据分析中 交叉验证 ● 选择题 以下说法错误的是: A ...

  3. python交叉验证结合线性回归_Python数据分析-线性回归、逻辑回归

    一.机器学习 1.什么是机器学习? 输入:训练数据,特征,标签 机器学习算法会自动学习其中的规律 这时,如果我们输入测试数据,就会输出关于测试数据特征的结果. 输入的特征指的是:数据的属性/特点 输出 ...

  4. Python数据分析案例07——二手车估价(机器学习全流程,数据清洗、特征工程、模型选择、交叉验证、网格搜参、预测储存)

    案例背景 本次案例来自2021年matchcop大数据竞赛A题数据集.要预测二手车的价格.训练集3万条数据,测试集5千条.官方给了二手车的很多特征,有的是已知的,有的是匿名的.要求就是做模型去预测测试 ...

  5. 交叉验证 Cross-validation

    交叉验证(CrossValidation)方法思想简介 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(da ...

  6. 遭遇棘手 交接_Librosa的城市声音分类-棘手的交叉验证

    遭遇棘手 交接 大纲 (Outline) The goal of this post is two-fold: 这篇文章的目标有两个: I'll show an example of implemen ...

  7. 交叉验证和超参数调整:如何优化您的机器学习模型

    In the first two parts of this article I obtained and preprocessed Fitbit sleep data, split the data ...

  8. k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...

    作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...

  9. k折交叉验证优缺点_k折交叉验证(R语言)

    "机器学习中需要把数据分为训练集和测试集,因此如何划分训练集和测试集就成为影响模型效果的重要因素.本文介绍一种常用的划分最优训练集和测试集的方法--k折交叉验证." k折交叉验证 ...

最新文章

  1. linux下把进程绑定到特定cpu核上运行
  2. 宁夏大学数学与计算机学院,刘续-宁夏大学信息工程学院
  3. linux中mount -o remount /home,mount -o remount, rw / 很有用..
  4. 问题 E: 求1+2+...+n=?
  5. 著名的北邮ACM推荐50题
  6. C++ 类中特殊成员变量(常量、静态、引用)的初始化方法
  7. Tuxedo中间件调研
  8. jlinkV8驱动里面找不到gd32f130c8t6芯片怎么办?keil下载时候报错 dll错误,我刚才找到问题的原因了。就是jlink驱动版本太低,用6.88c就可以了 ,以下是我获得解答链接感谢
  9. android viewholder静态,Android listview viewholder
  10. springboot 操作es 之elasticsearch-rest-high-level-client
  11. Python学习笔记-基础篇
  12. android移动控件位置
  13. C/C++获取系统IP地址
  14. WOW技术---2, 骨骼动画
  15. win7电脑微信可以登录,但是网页无法访问
  16. 运动估计和最佳匹配块搜索算法
  17. 【江苏三新】电气类就业如何跳出“内卷”实现“躺平”?
  18. Android11 Wifi连接流程之IP地址分配
  19. 各大电商平台API接口调用、拼多多API接口根据ID取商品详情原数据
  20. Golang,一道春天的闪电

热门文章

  1. MPB:中科院王光华组土壤和水体环境T4型细菌病毒g23基因多样性研究
  2. PPP模式下的融资结构优化
  3. 项目管理学习笔记之中的一个.项目管理综述
  4. 【无人机——飞控不解锁问题】关于Ardupilot飞控解锁时电机发出“滴滴”声,可解锁但电机不旋转问题解决方案
  5. sqlServer 2019 开发版(Developer)下载及安装
  6. Java 加解密技术之 MD5
  7. centos安装airflow
  8. 快速近似最近邻算法_数据科学家指南,以选择最佳近似最近邻算法
  9. Web后端开发入门(3)
  10. ZZULIOJ 1089:阶乘的最高位(C语言)