机器学习:Friedman检验与Nemenyi后续检验,Python实现

本文介绍了如何使用Python进行Friedman检验和Nemenyi后续检验,这两种方法常用于比较多个算法在不同数据集上的性能。Friedman检验通过计算平均序值和卡方分布来判断算法性能是否显著不同,而Nemenyi检验则提供了后续的可视化和显著性判断。文中还提供了相关资源和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本人大数据专业初入大三刚刚接触机器学习这一课程,教材是最典型的西瓜书,第一次作业当然就是利用本专业语言多功能python语言结合书内容尝试自己构建P-R曲线以及延伸指标曲线。当然初入一些算法和机器学习的一些库还不是很熟练掌握,有待提升自己的编程结合能力。在此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。

具体代码实现参考:Friedman检验和Nemenyi检验,测试以及python实现_catEyesL的博客-CSDN博客_nemenyi检验


提示:以下是本篇文章正文内容,下面案例可供参考

一、Friedman检验

在很多时候,我们会在一组数据集上对比多个算法的性能。当有多个算法参与比较时,常用基于算法排序的Friedman

检验。我们可以给出多个数据集如D1、D2、D3、D4.....Dn等对算法A1、A2.....An进行比较。使用评估方法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,3....;若算法的测试性能相同,则平分序值。

### Friedman 检验 Nemenyi 后续检验的关系及应用 #### 什么是 Friedman 检验Friedman 检验是一种非参数统计方法,适用于比较多个算法在同一组数据集上的表现。它主要用于检测 k 个算法在 N 个数据集上是否存在显著的性能差异[^2]。该测试的核心假设是:不同算法的表现排名没有显著差异。 当 Friedman 检验的结果表明存在显著差异时,则说明至少有一个算法其他算法之间的表现有明显区别。然而,Friedman 检验本身无法具体指出哪些算法之间存在显著差异,因此需要进一步执行后续检验(post-hoc test)[^1]。 --- #### 什么是 Nemenyi 后续检验Nemenyi 测试是对 Friedman 检验的一种补充分析工具。一旦通过 Friedman 检验确认了算法间存在总体性能差异,就可以利用 Nemenyi 测试来识别具体的两两算法组合间的显著性差异。这种方法基于平均秩差值计算临界距离(Critical Distance, CD),并以此判断两个算法是否具有统计学意义上的显著差异[^3]。 对于机器学习中的模型比较而言,这种成对比较能够帮助研究人员更精确地定位哪个特定算法优于其他算法或者在哪种情况下某些算法可能失效。 --- #### 应用场景 这两种技术广泛应用于机器学习领域内的算法评估环节。例如,在图像处理任务中可以采用离散小波变换(discrete wavelet transform)结合支持向量机(SVM)或随机森林(Random Forests)等分类器来进行特征提取预测建模;此时可以通过上述两种统计手段验证这些不同类型的方法谁更适合解决当前问题实例集合下的目标需求[^4]。 以下是 MATLAB 实现的一个简单框架: ```matlab % 假设有三个算法 A,B,C 和五个不同的数据集 D1,D2,...D5 的评价分数矩阵 scores scores = [ 0.85, 0.76, 0.90; % Algorithm A on datasets D1 to D5 0.80, 0.78, 0.88; 0.75, 0.82, 0.85 ]; [p,fri_stat,ranks] = friedman(scores); if p < alpha_level % 如果拒绝原假设则继续进行 Post-Hoc 分析 critDist = multcompare(ranks,'CType','nemenyi'); end ``` 此脚本首先调用了 `friedman` 函数完成初步的整体对比工作,随后依据返回的概率值决定是否有必要启动更加细致深入的研究过程即所谓的 “Post Hoc Analysis”。 --- #### 总结 综上所述,Friedman 检验提供了关于多种算法相对效能概览的信息,而 Nemenyi 后续检验则是为了细化这一结果提供更为详尽的支持证据链路。两者共同构成了一个完整的闭环流程体系,使得科研工作者能够在面对复杂多样的实际应用场景之时做出合理科学的选择决策方案设计思路方向指引作用不可忽视。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fanstuck

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值