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

文章目录

  • 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后续检验可以得知,此方法主要用于在一组数据集上对多个模型的性能进行比较,而在实际应用过程中,可以将此方法进行扩展,例如在群智能优化算法的性能进行比较时,可以使用此方法比较多种不同的算法在一组测试函数上的性能;当对一个数据集上的多种预测模型性能进行比较时,可以计算得出模型的多种性能指标结果,然后比较多种性能指标上的模型性能情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/24867.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用二极管实现不同电压的输出?

利用二极管的单向导电性可以设计出好玩、实用的电路。本文分析限幅电路和钳位电路,是如何用二极管来实现的。 限幅电路 如下图所示,当在正半周期,并且VIN大于等于0.7V,二极管正向导通。此时,VOUT会被钳位在0.7V上。 …

Linux网络服务:PXE高效批量网络装机

目录 一、理论 1.PXE批量网络装机概述 2.搭建 PXE 远程安装服务器 3.实现Kickstart无人值守安装 二、实验 1.搭建PXE远程安装服务器 2.安装Kickstart无人值守安装 3.安装图形化界面 三、问题 1.please complete all spokes before continuing 提示 一、理论 1.PXE批…

供应链|供应商库存服务水平对零售商需求的影响

作者:Nathan Craig, Nicole DeHoratius, Ananth Raman 引用:Craig N, DeHoratius N, Raman A. The impact of supplier inventory service level on retailer demand[J]. Manufacturing & Service Operations Management, 2016, 18(4): 461-474. 文…

【JavaSE】Java基础语法(八)

文章目录 🍓1. 类和对象🍹🍹1.1 类和对象的关系🍹🍹1.2 类的定义 🍓2. 对象内存图🍹🍹2.1 单个对象内存图🍹🍹2.2 多个对象内存图2.3 多个对象指向相同内存图…

服务器性能优化方法

文章目录 服务器性能优化方法什么是服务器并发处理能力?什么方法衡量服务器的并发能力?怎么提高服务器的并发处理能力?**1,提高CPU并发计算能力**(1)多进程&多线程(2)减少进程切…

【Unity】实现无缝地图

无缝地图是沙盒游戏的标配,可以极大提升玩家体验和沉浸感。 无缝地图的实现过程还是比较复杂的,在这里做一下实现笔记 1、地图分块: 将地图划分为较小的块,例如瓦片或区块。每个块可以是一个独立的游戏对象或地形块。确定每个块的大小和位置。你可以使用Unity的Tilemap工具…

二次元的登录界面

今天还是继续坚持写博客,然后今天给大家带来比较具有二次元风格的登录界面,也只是用html和css来写的,大家可以来看看! 个人名片: 😊作者简介:一名大一在校生,web前端开发专业 &…

【小程序】封装时间选择组件:用单元格van-cell和插槽slot,包括起始时间和终止时间

效果 可以选择起始时间和终止时间,并显示。 时间选择器放在van-cell的value插槽中。 用的库: https://vant-contrib.gitee.io/vant-weapp/#/home https://dayjs.fenxianglu.cn/category/ 用的组件:Cell单元格、DatetimePicker时间选择、Pop…

Linux——gdb调试器

目录 前言: 二.gdb定义及指令: 如何查看该exe文件是否为Debug版本?两种方法: 三.gdb调试: 调试指令1:l指令(小写L) run指令:运行程序,相当于VS中的直接运行不调试——可简化输入r break指令&#xff1…

解析云盘存储的优缺点:安全靠谱还是存在风险?

云盘是一种基于云计算技术的在线存储服务,用户可以通过互联网将文件上传到云端,并可以随时随地通过网络访问这些文件。 相较于传统的本地存储,云盘具有以下优势: 1.数据安全性更高:云盘使用专业的云计算技术和安全措施…

安装stable-diffusion

安装流程&#xff1a; 下载stable-diffusion源码 <https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.2.1>安装python <https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe>添加host 打开C:\Windows\System32\drivers\etc…

01Redis单线程 VS 多线程

不同版本&#xff0c;情况不同 Redis的版本很多3.x、4.x、6.x&#xff0c;版本不同架构也是不同的&#xff0c;不限定版本问是否单线程也不太严谨。 版本3.x &#xff0c;最早版本&#xff0c;也就是大家口口相传的redis是单线程 数据结构简单避免锁的开销和上下文切换可以有…

chatgpt赋能python:Python中的乘方操作

Python中的乘方操作 作为一种流行的编程语言&#xff0c;Python内置了许多强大的数学运算工具。其中&#xff0c;乘方操作是一个非常常见的数学操作&#xff0c;它可以快速地计算一个数的任意次幂。本文将介绍Python中乘方操作的用法&#xff0c;并提供了一些相关的示例代码。…

论文撰写总结与撰写心得——如何更好的产出几万字的论文

一张图开场&#xff0c;说说为什么会有本篇文章&#xff0c;因为晚上关了灯的屏幕太晃眼睛了&#xff0c;之前好几次不是哥哥我不加班帮小伙伴们搞论文&#xff0c;是当时眼睛顶不住了&#xff0c;所以这篇文章除了说一下论文的码字心得外&#xff0c;哥哥我再说一下如何在夜间…

LeetCode: 二叉树的直径(java)

二叉树的直径 leetcode 543题。原题链接题目描述解题代码二叉树专题 leetcode 543题。原题链接 543题&#xff1a;二叉树的直径 题目描述 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也…

MySQL分库分表方案及sharding-spher(1)

一、数据库瓶颈 不管是IO瓶颈&#xff0c;还是CPU瓶颈&#xff0c;最终都会导致数据库的活跃连接数增加&#xff0c;进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是&#xff0c;可用数据库连接少甚至无连接可用。接下来就可以想象了吧&#xff08;并发…

液晶显示常用概念

文章目录 数字液晶显示消隐区水平&#xff08;行&#xff09;消隐 HBlank垂直&#xff08;场&#xff09;消隐 VBlank RGB格式RGB555RGB565RGB888 VGA驱动原理时钟信号像素时钟同步信号DE信号&#xff08;有效数据选通信号&#xff09;DE信号与其他信号的关系 数字液晶显示消隐…

【LCD应用编程】绘制点、线、矩形框

之前获取LCD屏幕参数信息时了解到&#xff0c;LCD屏是 FrameBuffer 设备&#xff0c;操作 FrameBuffer 设备 其实就是在读写 /dev/fb0 文件。除此之外&#xff0c;LCD屏上包含多个像素点&#xff0c;绘制点、线、矩形框本质是在修改这些像素点的颜色。 目录 1、定义 lcd_color…

【LeetCode】12,整数转罗马数字。 难度等级:中等。易错点:使用 python 字典构建哈希表时要考虑哈希表是否有序

文章目录 一、题目二、我的解法&#xff1a;基于有序哈希表的贪心算法2.1 使用 dict 构建哈希表2.2 使用两个 list / tuple 构建有序哈希表 一、题目 二、我的解法&#xff1a;基于有序哈希表的贪心算法 2.1 使用 dict 构建哈希表 贪心法则&#xff1a;我们每次尽量使用最大的…

面试被问麻了....

前几天组了一个软件测试面试的群&#xff0c;没想到效果直接拉满&#xff0c;看来大家对面试这块的需求还是挺迫切的。昨天我就看到群友们发的一些面经&#xff0c;感觉非常有参考价值&#xff0c;于是我就问他还有没有。 结果他给我整理了一份非常硬核的面筋&#xff0c;打开…