📐 Friedman检验 & Nemenyi后续检验 — 公式与原理
用于比较多于两个算法在多个数据集上的性能。Friedman检验判断算法间是否存在整体差异,若显著则通过Nemenyi后续检验确定具体哪些算法对存在显著差异。
Friedman统计量
\(\chi_F^2 = \frac{12N}{k(k+1)} \left[ \sum_{j=1}^{k} R_j^2 - \frac{k(k+1)^2}{4} \right]\)Friedman的F统计量(更精确)
\(F_F = \frac{(N-1)\chi_F^2}{N(k-1) - \chi_F^2}\)📖 公式参数说明
🎛️ 交互模拟实验室
设置算法数量、数据集数量、显著性水平以及算法间的性能差异程度,点击“生成数据”即可模拟多算法在多个数据集上的排名并进行统计检验。
💡 深入理解Friedman检验与Nemenyi后续检验
标准介绍
Friedman检验是一种非参数统计检验,用于比较多个相关样本的差异。在机器学习中,当我们需要比较多个算法(k>2)在多个数据集(N个)上的性能时,每个数据集都给出了所有算法的性能度量。对于每个数据集,我们将算法按性能排序,赋予排名1到k(最佳为1,最差为k,如果并列则取平均排名)。Friedman检验基于这些排名判断所有算法的性能是否相同。原假设是“所有算法性能相同”,备择假设是“至少有一个算法与其他算法不同”。检验统计量基于各算法的平均排名与期望排名的偏差,近似服从卡方分布(或更精确地服从F分布)。如果拒绝原假设,则需要使用后续检验(如Nemenyi检验)来确定哪些算法对之间存在显著差异。Nemenyi检验通过计算一个临界差异(CD),当两个算法的平均排名之差超过CD时,认为它们之间的差异在统计上显著。
通俗介绍
想象你举办了一场厨艺比赛,邀请了多位厨师(算法)制作菜肴,并请多位评委(数据集)打分。每道菜由评委给出排名(1最好,2次之,以此类推)。你收集所有评委的排名后,想知道这些厨师的厨艺是否真的有好坏之分,还是大家都差不多。Friedman检验就像一位公正的统计员,他分析所有排名,判断厨师之间的差异是否大到不可能是随机造成的。如果他说“有差异”,你还需要进一步看看到底哪些厨师之间有显著差距。Nemenyi检验就是那位后续裁判,他给出一个“最小显著差距”的尺子(CD),如果两位厨师的排名差距超过这把尺子,就认为他们确实是水平不同。
解决了什么问题
当比较两个算法时,我们可以使用t检验、Wilcoxon符号秩检验或McNemar检验。但当算法多于两个时,直接进行所有两两比较会导致多重比较问题,增加I类错误(假阳性)。Friedman检验是整体检验,它一次性判断所有算法之间是否存在任何差异,控制了整体的I类错误。如果整体检验显著,再使用后续检验(如Nemenyi)进行成对比较,并在多重比较框架下调整临界值。这样既提高了检验功效,又保证了结果的可靠性。此外,Friedman检验基于排名而非原始性能值,因此对数据的分布假设较少,对异常值不敏感,适用于不同数据集上性能尺度不同的情况(例如一个数据集准确率在0.7左右,另一个在0.9左右,直接比较原始值可能不合适,但排名是统一的)。
为什么重要
在机器学习研究中,我们经常需要比较多种算法或模型的性能。简单地根据平均准确率排序可能具有误导性,因为性能差异可能只是由数据集的随机波动造成的。Friedman检验提供了一种严格的统计框架来评估这些差异是否显著,它已经成为机器学习社区广泛接受的标准方法。许多顶级会议和期刊的论文都要求使用Friedman检验和Nemenyi后续检验来报告多个算法的比较结果。这种方法不仅适用于分类算法的比较,也适用于回归、聚类等任务,只要能够为每个数据集上的算法赋予合理的排名即可。
应用场景
- 算法基准测试:在多个标准数据集上比较多个分类器(如SVM、随机森林、神经网络等)的性能;
- 模型选择与超参数调优:比较不同超参数配置或不同模型架构的性能;
- 特征选择方法评估:比较不同特征子集对分类器性能的影响;
- 数据预处理策略对比:比较不同的数据清洗、归一化、增强等方法;
- 领域应用研究:在医学影像分析、自然语言处理、推荐系统等领域中比较多种方法的有效性。
缺陷与局限
- 排名信息损失:只使用排名,忽略了性能值之间的实际差距大小,可能降低检验功效;
- 假设排名独立:每个数据集上的排名应独立产生,如果数据集之间存在相关性(如来自同一来源),可能影响检验准确性;
- Nemenyi检验保守性:Nemenyi检验的临界差异基于所有算法两两比较,当算法数量较多时可能过于保守,导致不易发现显著差异;
- 对并列处理敏感:当多个算法性能接近时,排名并列的处理方式会影响统计量;
- 小样本问题:当数据集数量N较小时,卡方近似可能不准确,应使用精确分布或F分布校正;
- 未考虑数据集难度差异:所有数据集权重相同,但在实际中某些数据集可能更具代表性或更难,可考虑加权排名。