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

机器学习基础知识之多模型性能对比评价方法

文章目录

  • 1、交叉验证t检验
  • 2、Friedman检验与Nemenyi后续检验

在进行预测或分类对比实验时,通常需要比较两个或两个以上的模型性能,因此,下面将介绍两个常用的多模型性能对比评价方法,一种是交叉验证t检验,该方法主要用于同一个数据集上两个模型的性能比较,另一种是Friedman检验与Nemenyi后续检验,这一方法主要用于同一组数据集上两个以上模型的性能比较。

1、交叉验证t检验

之前介绍过k折交叉验证方法,该方法将同一个数据集随机平均分成k份,然后让每一份依次作为测试数据集,余下数据作为训练数据集,使模型在训练数据集上训练后在测试数据集上进行测试以获得该模型在每份数据集上的误差,最后将误差值进行平均即为模型在此数据集上的最终误差值。而交叉验证t检验则是专门针对两个不同的模型在同一个数据集上进行k折交叉验证后的性能比较方法。
假设对于两个不同的模型A与模型B,在同一个数据集上进行k折交叉验证后得到的每份数据集上的误差分别如下:
在这里插入图片描述

则需要将这两个模型在k份测试数据集上的误差进行一对一的比较,而当这两个模型的性能相同时,则这两个模型在同一份测试数据集上误差应该相同,即:
在这里插入图片描述

i为1到k之间的任意正数。
其具体的比较过程为首先对两个模型在k份测试数据集上的误差进行一对一的比较,求取它们之间的差值,计算公式如下:
在这里插入图片描述

然后对求得的差值∆_1,∆_2,…,∆_k进行均值与方差的计算,计算获得的均值与方差分别为μ和σ^2,在显著度α下,倘若变量
在这里插入图片描述

小于临界值t_(α/2,k-1),则可以视作这两个模型的性能没有显著差别。若大于该临界值,则这两个模型的性能存在显著差别,其中平均误差较小的模型的性能更好。上述临界值t_(α/2,k-1)是自由度为k-1的t分布上尾部累积分布为α/2的临界值。
由于是在同一份数据集上进行交叉验证,因此当数据量较少时容易使得不同训练数据集之间容易存在一定程度的重叠,进而导致最后容易认为两个模型性能不存在显著差别。为了避免这一问题,一般采用“5×2交叉验证法”。
5×2交叉验证是指在数据量较少时,对两个模型进行5次2折交叉验证,其中在每次2折交叉验证前将数据集进行随机打乱,从而使5次验证过程中数据集的划分均不重复。
在上述2折交叉验证中分别计算获得两个不同的差值:
在这里插入图片描述

为了使误差结果更具有独立性,将第一次交叉验证中这两个不同的差值的平均值μ作为判断依据,在对方差进行求取时则是对每次交叉验证的差值结果进行计算,计算公式如下:
在这里插入图片描述

倘若变量
在这里插入图片描述

小于临界值t_(α/2,5),即服从自由度为5的t分布时,这两个模型的的性能没有显著差别,否则存在显著差别,其中平均误差较小的模型的性能更好。在此计算公式下,当α取值为0.05时,临界值t_(α/2,5)为2.5706,当α取值为0.1时,临界值t_(α/2,5)为2.015。

2、Friedman检验与Nemenyi后续检验

上述交叉验证t检验是在一个数据集上对两个不同的模型性能进行比较,而当需要在一组数据集上对多个模型的性能进行比较时,则需要使用Friedman检验。Friedman检验是一种基于模型性能排序的检验方法,它在同一个数据集上依据某些性能评价指标对多个模型的性能好坏进行排序,进而获得多个模型在一组数据集上的性能排序结果,依照此结果平均计算得到在这组数据集上的平均性能排序,倘若不同模型的性能相同时,它们的平均性能排序应该相同。
假设使用三个不同的模型A、模型B以及模型C在三个不同数据集D_1、D_2、D_3上进行预测实验,通过使用上一小节中提到的预测性能评价指标均方误差对它们的预测性能进行评价,倘若在数据集D_1上三个模型的均方误差值大小排序依次为模型A、模型B和模型C,那么将对模型A、模型B和模型C分别赋予序值1,2,3。按照此方法,对这三个模型在另外两个数据集上的均方误差值大小进行排序,可获得模型性能排序表如下所示。
在这里插入图片描述

上表中在数据集D_2上,当两个模型的均方误差值相同时,则对它们的序值进行平分,即出现模型B与模型C的序值均为2.5的情况。最后一行则是通过对这三个模型在三个不同数据集上的性能序值求平均而得到平均序值,当不同模型的平均序值相同时,可以视作这两个模型的性能相同。
为了方便判断,直接通过计算变量
在这里插入图片描述

来确定模型的性能是否相同,上式中r_i表示第i个模型性能的平均序值,N为数据集的个数,k为模型的个数,抛开平均序值的考虑时,(k+1)/2为符合正太分布的r_i的均值,方差为(k^2-1)/12N。
当k与N都较大时,该变量服从自由度为k-1的χ^2分布。
上述变量的计算方式较为保守,现在通常使用变量
在这里插入图片描述

来进行判断,其中τ_F服从自由度为k-1和(k-1)(N-1)的F分布,当计算之后变量τ_F小于临界值时,可以视作这几个对比模型的性能没有显著差别,若大于该临界值,则这几个对比模型的性能显著不同。下面两张表分别是显著度为0.05与0.1时的常用临界值。
在这里插入图片描述

在这里插入图片描述

通过将变量τ_F与常用临界值的大小进行比较,从而确定不同模型之间的性能是否显著相同,当确定显著不同时,则需要使用Nemenyi后续检验来对其不同模型的性能做进一步的区分。
在进行Nemenyi后续检验时需要通过下列公式计算得出模型平均序值差别的临界值域,具体的计算公式如下:
在这里插入图片描述

其中q_α通常采用下表中的值。
在这里插入图片描述

当两个模型的平均序值之差超过了计算得出的临界值域CD,则可以确定两个模型之间存在明显差别。另外对上述结果的比较检验将通过Friedman检验图进行更为清晰的表示,在Friedman检验图中,横轴为平均序值,纵轴表示不同的模型,当代表两个模型的横线之间不存在交叠时,则说明两个模型之间存在显著差别,否则它们之间不存在显著差别,常见的Friedman检验图如下图所示。
在这里插入图片描述

在上图中,代表模型1的直线的边缘与代表模型2和模型3的直线明显存在交叠,则说明这三个模型之间不存在显著区别,但从它们的平均序值可以看到模型1的平均序值大于模型2与模型3,因此模型1的性能略优于另外两个模型。另外代表模型1的直线与代表模型4与模型5的之间之间不存在交叠,则说明模型1与另外两个模型之间存在显著区别,且其平均序值最大,即模型1的性能明显优于模型4与模型5。结合上述比较结果可以得知,模型1的性能在这五个模型中表现最好。
在对Friedman检验与Nemenyi后续检验可以得知,此方法主要用于在一组数据集上对多个模型的性能进行比较,而在实际应用过程中,可以将此方法进行扩展,例如在群智能优化算法的性能进行比较时,可以使用此方法比较多种不同的算法在一组测试函数上的性能;当对一个数据集上的多种预测模型性能进行比较时,可以计算得出模型的多种性能指标结果,然后比较多种性能指标上的模型性能情况。

相关文章:

机器学习基础知识之多模型性能对比评价方法

文章目录 1、交叉验证t检验2、Friedman检验与Nemenyi后续检验 在进行预测或分类对比实验时,通常需要比较两个或两个以上的模型性能,因此,下面将介绍两个常用的多模型性能对比评价方法,一种是交叉验证t检验,该方法主要用…...

对敏感信息脱敏,如对姓名、证件号码、手机号码、银行卡号码进行脱敏

一、姓名脱敏 1、脱敏规则一:显示姓名中的第一个字,其它用*号代替。 显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。其它用*号代替。 ① 举例 张* 王** A**** ② 实现方法 hideName(name) {if (!n…...

创建型——单例模式C++实现

单例模式即保证一个类只有一个实例&#xff0c;并提供一个访问该单例的接口。 实例 1.懒汉式 用的时候才创建单例&#xff0c;“懒”。 Singleton.h #ifndef SINGLETON_H_ #define SINGLETON_H_#include <iostream> #include <string> #include <mutex>…...

【华为OD统一考试B卷 | 100分】执行时长(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述ACM输入输出模式用例机考代码查重C++javascriptjavapython题目描述 为了充分发挥GPU[算力],需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。 假设GPU最多一次执行n个任务,…...

操作系统原理 —— 内存管理的概念(十八)

为什么要有内存管理 为什么要对内存进行管理&#xff0c;需要解决什么问题&#xff1f; 要回答这个问题&#xff0c;首先我们需要明白&#xff1a;进程运行时&#xff0c;需放在内存才能运行。比如在执行一个程序时&#xff0c;需将该程序的相关数据与指令装入内存才能运行。…...

GPT-4国内怎么用

GPT-4是OpenAI推出的最新的生成式AI模型&#xff0c;作为ChatGPT的进化版&#xff0c;它在回答准确性、识图能力、生成歌词和创意文本等方面有了显著的提升。然而&#xff0c;由于网络限制&#xff0c;国内用户无法直接访问官方网站。那么&#xff0c;GPT-4在国内如何使用呢&am…...

搭建LightPicture开源免费图床系统「公网远程控制」

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云的文章&#xff1a;【搭建私人图床】使用LightPicture开源…...

shell编程lesson06

流控制 while 和 until 循环 #!/bin/bash# while-count:display a series of numbersi1 while [ $i -le 5 ];doecho $ii$((i1)) done echo "Finished!"while命令的语法结构如下&#xff1a; while commands;do commands;done 我们可以使用while循环改进上一节中的…...

国内免费可用的ChatGPT网页版

ChatGPT 一、ChatGPT是个啥&#xff1f;二、16个国内免费的ChatGPT网站。三、ChatGPT使用方式 一、ChatGPT是个啥&#xff1f; chat&#xff1a;表示“聊天”。 GPT&#xff1a;则是Generative、Pre-trained、Transformer的缩写&#xff0c;表示“预训练语言模型”&#xff0…...

用同样的关键词测试不同的人工智能

测试词汇&#xff1a;用“电商、接口、店群”写一篇关于API接口的推广软文 返回结果&#xff1a; 人工智能1&#xff1a; 电商行业已经进入了全面数字化转型的时代&#xff0c;而API接口技术正是数字化转型的重要组成部分。随着移动端、小程序等终端越来越普及&#xff0c;A…...

shell变量类型含义 长方形面积计算 截取相应字段方法

1.总结变量的类型及含义&#xff1f; 2.实现课堂案例计算长方形面积&#xff1f;&#xff08;6种方式&#xff09; 3.定义变量urlhttps://blog.csdn.net/weixin_45029822/article/details/103568815&#xff08;通过多种方法实现&#xff09; 1&#xff09;截取网站访问的协议 …...

Java:从单线程计数器到多线程数据同步synchronized和原子类Atomic

目录 使用单线程使用多线程使用多线程 synchronized使用多线程 原子类AtomicLong 使用单线程 单线程修改计数器的值&#xff0c;没有发生问题&#xff0c;每次运行结果都是10000&#xff0c;不过程序耗时较长 package com.example;/*** 计数器*/ class Counter {private st…...

提前进入行业顶尖阵营:高性能计算实习的竞争优势

如今就业越来越内卷&#xff0c;尤其是计算机行业更是如此。加上GPT以及大模型的加持&#xff0c;各大企业纷纷降本增效&#xff0c;普通程序员逐渐失去竞争力。想要在竞争激烈的就业市场中脱颖而出&#xff0c;提前进入行业顶尖阵营是一个明智的选择。而高性能计算实习将为您提…...

Java程序设计入门教程--标识符和关键字

目录 标识符 标识符的约定 标识符 1. 定义 用来标识类名&#xff0c;变量名&#xff0c;方法名&#xff0c;类型名&#xff0c;数组名&#xff0c;文件名的有效序列称为标识符。简单地说&#xff0c;标识符就是一个名字。 2. 标识符命名规则 &#xff08;1&#xff09;大小…...

国产IC芯片自动化测试系统ATECLOUD,助力芯片测试自动化

IC芯片测试成本是影响制造和加工成本的重要因素。在某些情况下&#xff0c;测试成本可能占到器件总成本的40%左右。为了降低测试成本&#xff0c;可以优化测试程序并研发多工位测试。同时&#xff0c;必须平衡良品率和测试时间&#xff0c;以实现最佳的成本控制。本篇文章纳米软…...

BeanFactory和ApplicationContext有什么区别?

BeanFactory和ApplicationContext有什么区别&#xff1f; BeanFactory和ApplicationContext有什么区别&#xff1f; BeanFactory和ApplicationContext有什么区别&#xff1f; BeanFactory (轻量级) 和ApplicationContext(高级特性和框架)是Spring的两大核心接口&#xff0c;都…...

js的BOM对象中的window、location使用

说明&#xff1a;BOM的全称是Browser Object Model&#xff0c;浏览器对象模型&#xff0c;有Window&#xff08;浏览器窗口&#xff09;、Navigator&#xff08;浏览器&#xff09;、Screen&#xff08;屏幕&#xff09;、History&#xff08;历史记录&#xff09;和Location&…...

DAY 68 redis高可用的主从复制、哨兵、cluster集群

Redis 高可用 什么是高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证提供正常服…...

leetcode 1209 学会删除字符串

删除字符串的经典kotlin操作&#xff1a; val mTemp (temp.text).replace(Regex("℃"),"") 以下是题目&#xff01; 1209. 删除字符串中的所有相邻重复项 II 提示 中等 174 相关企业 给你一个字符串 s&#xff0c;「k 倍重复项删除操作」将会从 s…...

JavaScript6

一、概念 ES6是JavaScript语言的标准。 新特性&#xff1a;let和const命令、变量的解构赋值、字符串函数对象数组等扩展。 环境准备&#xff1a;需要安装NodeJs。 二、新特性 1、let let命令用来声明变量。他的用法类似var&#xff0c;但所声明的变量&#xff0c;只在let命令…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...