当前位置: 首页 > news >正文

机器篇——决策树(六) 细说 评估指标的交叉验证

本小节,细说 评估指标的交叉验证。
 

三. 评估指标
3. 交叉验证(cross validation)
     (1). 概念
       交叉验证(cross validation, cv) 主要用于模型训练或建模应用中,如分类预测、PCR、PLS 回归建模等。在给定的样本空间中,拿出大部分样本的模型进行预测,并求这小部分样本的预测误差或预测精度,同时记录它们的加和平均值。这个过程迭代 k

 次,即 k

 折交叉。其中,把每个样本的预测误差平凡加和,称为 PRESS(Predicted Error Sum Of Squares)。

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

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

       ③. 交叉验证有时也称为交叉比对,如:10 折交叉比对。

     (3). 常见的交叉验证方式
       ①. Holdout 验证(留出法验证)

        a. 方法:

           将原始数据随机分为两组,一组作为训练集,一组作为验证集(比如:80% 为训练集,20% 为验证集)。利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此 Holdout Method 下分类器的性能指标。

           一般来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。一般来说,少于原来样本 13
1
3
 的数据被选做验证数据(如:20% 为验证数据)

        b. 优点:

           处理简单,只需要随机把原数据分为两组即可。

        c. 缺点:

           严格意义来说 Holdout Method 并不算是 cv,因为这种方法没有达到交叉的思想,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大关系,所以这种方法得到的结果其实并不具有说服性(主要原因是,训练集样本数太少,通常不足以代表母体样本的分布,导致 val 阶段辨识容易出现明显落差)。

       ②. k 折交叉验证 (k-fold cross validation, k-cv)

        a. 方法

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

        b. 优点

           k-cv 可以有效地避免过拟合以及以及欠拟合状态的发生,最后得到的结果也比较具有说服性。

        c. 缺点

           k 值选取上。

       ③. 留一验证(Leave One Out Validation, LOO-CV)

        a. 方法

           留一验证(LOO-CV),意指只使用原样本中的一项来做验证资料,而剩余的则留下来当做训练资料。这个步骤一直持续到每个样本都被当做一次验证资料。事实上,这等同于 k-cv 是一样的,其中 k 为原样本个数。在某些情况下是存在有效率的演算法。如使用 Kernel Regression 和 Tikhonov Regularization。

        b. 优点

         (a). 每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。

         (b). 实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。

        c. 缺点

           计算成本高,因为需要建立的模型数量与原始数据样本数量相同,当原始数据样本数相当多时,LOO-CV 在实际操作上便有困难,几乎就是实现不了,除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需要的时间。

     (4). 深入
       ①. 使用交叉验证方法的目的主要有 3 个:

        a. 从有限的学习数据中获取尽可能多的有效信息

        b. 交叉验证从多个方向开始学习样本,可有效的避免陷入局部最小值

        c. 可以在一定程度上避免过拟合问题

       ②. 采用交叉验证方法时需要将学习数据样本划分为两部分:训练数据样本 和 验证数据样本。并且为了得到更好的学习效果,无论训练样本还是验证样本,都要尽可能参与学习。一般选取 10 折交叉验证即可达到较好的学习效果。
 

相关文章:

  • 阿里云服务器(vgn7i-vws) anaconda(py39)+pytorch1.12.0(cu113)
  • YOLOv3老矣尚能战否?基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统,我们来与YOLOv5进行全方位对比评测
  • SpringCloud Alibaba集成 Gateway(自定义负载均衡器)、Nacos(配置中心、注册中心)、loadbalancer
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景
  • MobaXterm连接节点一段时间后超时Session stopped
  • Towhee介绍
  • 【转载】如何在Macbook上把Ubuntu安装到移动硬盘里
  • CSM32RV003:国产高精度16位ADC低功耗RISC-V内核MCU
  • 配电室智慧运维监控系统
  • 数据治理技术之数据清洗
  • ElementUI table+dialog实现一个简单的可编辑的表格
  • mysql的alter怎么使用?
  • MATLAB | 绘图复刻(十三) | 带NaN图例的地图绘制
  • Pytorch从零开始实战10
  • Doris中的物化视图(十八)
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 3.7、@ResponseBody 和 @RestController
  • CSS实用技巧
  • HTML中设置input等文本框为不可操作
  • If…else
  • iOS编译提示和导航提示
  • JavaScript的使用你知道几种?(上)
  • leetcode讲解--894. All Possible Full Binary Trees
  • Nodejs和JavaWeb协助开发
  • Ruby 2.x 源代码分析:扩展 概述
  • ViewService——一种保证客户端与服务端同步的方法
  • vue 配置sass、scss全局变量
  • Web设计流程优化:网页效果图设计新思路
  • 从输入URL到页面加载发生了什么
  • 京东美团研发面经
  • 前嗅ForeSpider中数据浏览界面介绍
  • 新书推荐|Windows黑客编程技术详解
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​2021半年盘点,不想你错过的重磅新书
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (Git) gitignore基础使用
  • (pojstep1.3.1)1017(构造法模拟)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (翻译)terry crowley: 写给程序员
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .cn根服务器被攻击之后
  • .gitignore文件设置了忽略但不生效
  • .NET 8.0 中有哪些新的变化?
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 读取 JSON格式的数据
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .php文件都打不开,打不开php文件怎么办
  • @JoinTable会自动删除关联表的数据
  • @Service注解让spring找到你的Service bean
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [AR]Vumark(下一代条形码)