模型性能评估之 Friedman 检验与 Nemenyi 后续检验

前言

当我们提出一种算法,需要知道我们的算法和现在已有的算法相比,性能是否更优的时候,就需要用到模型性能评估的方法。本篇博客介绍一种模型性能评估的方法:Friedman 检验与 Nemenyi 后续检验

该方法的特点是:可以进行多个算法的比较。下面看看具体的使用:

具体使用

1. 计算序值

假定我们用 D 1 D_1 D1 D 2 D_2 D2 D 3 D_3 D3 D 4 D_4 D4 四个数据集对算法 A A A B B B C C C 进行比较。首先需要得到每个算法在每个数据集上的测试结果,可以是准确率,也可以是均方误差,然后在每个数据上根据测试性能的好坏进行排序,并赋予序值 1,2,…。如果算法的测试性能相同,则评分排名。比如,在 D 1 D_1 D1 D 3 D_3 D3 上, A A A 最好、 B B B 次之, C C C 最差,而在 D 2 D_2 D2 A A A 最好、 B B B C C C 性能相同,…,则可以列出如下表所示的序值表,对每一列的序值进行求平均,得到平均序值。
模型性能评估之 Friedman 检验与 Nemenyi 后续检验_第1张图片

2. Friedman 检验

然后,使用 Friedman 检验来判断这些算法是否性能相同。如果相同,则他们的平均序值应该相等。

假定我们在 N N N 个数据集上比较 k k k 个算法,令 r i r_i ri 表示第 i i i 个算法的平均序值。为简化讨论,暂时不考虑平分序值的情况,则 r i r_i ri 服从正态分布,其均值和方差分别为 ( k + 1 ) / 2 (k+1)/2 (k+1)/2 ( k 2 − 1 ) / 12 (k^2-1)/12 (k21)/12。变量
τ χ 2 = k − 1 k ⋅ 12 N k 2 − 1 ∑ i = 1 k ( r i − k + 1 2 ) 2 = 12 N k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) \tau_{\chi^2} = \frac{k-1}{k}\cdot\frac{12N}{k^2-1}\sum_{i=1}^k{(r_i - \frac{k+1}{2}})^2 = \frac{12N}{k(k+1)}(\sum_{i=1}^k r_i^2 - \frac{k(k+1)^2}{4}) τχ2=kk1k2112Ni=1k(ri2k+1)2=k(k+1)12N(i=1kri24k(k+1)2)
k k k N N N 都较大时,服从自由度为 k − 1 k-1 k1 χ 2 \chi^2 χ2 分布。

然后,上述的这样的 “原始 Friedman 检验” 过于保守,现在通常使用变量
τ F = ( N − 1 ) τ χ 2 N ( k − 1 ) − τ χ 2 \tau_F = \frac{(N-1)\tau_\chi^2}{N(k-1)-\tau_\chi^2} τF=N(k1)τχ2(N1)τχ2
其中, τ F \tau_F τF 服从自由度为 k − 1 k-1 k1 ( k − 1 ) ( N − 1 ) (k-1)(N-1) (k1)(N1) F F F 分布。常用的临界值可以见下表。
模型性能评估之 Friedman 检验与 Nemenyi 后续检验_第2张图片
另外也可以通过 R 语言计算得到 F 检验的临界值:

> qf(1- alpha, k-1, (k-1)(N-1))

若 “所有算法的性能相同” 这个假设被拒绝,则说明算法的性能显著不同。

3. Nemenyi 后续检验

这个时候就需要使用 “后续检验”(post-hoc test)来进一步区分算法。常用的算法是 Nemenyi 后续检验。
Nemenyi 检验计算出平均序值差别的临界值域
C D = q α k ( k + 1 ) 6 N CD = q_\alpha \sqrt{\frac{k(k+1)}{6N}} CD=qα6Nk(k+1)
下表给出了 α = 0.05 \alpha = 0.05 α=0.05 0.1 0.1 0.1 时常用的 q α q_\alpha qα 值。

若两个算法的平均序值之差超出了临界值域 C D CD CD ,则以相应的置信度拒绝 “两个算法性能相同” 这一假设。

模型性能评估之 Friedman 检验与 Nemenyi 后续检验_第3张图片
若表中没有自己想要的数值,可以用 R 语言计算:

qtukey(1- alpha, k, Inf)/sqrt(2)
# 比如:
qtukey(1-0.01,13,Inf)/sqrt(2)

4. Friedman 检验图

上述检验比较可以直观地用 Friedman 检验图显示。如下图所示,横轴是平均序值,纵轴是每个算法、对于每一个算法,用一个圆点显示其平均序值,以圆点为中心的横线段表示临界值域的大小。

观察图,若两个算法的横线段有交叠,说明两个算法没有显著的差别。
模型性能评估之 Friedman 检验与 Nemenyi 后续检验_第4张图片
下图是之前自己做的一个 Friedman 检验图,可以看出 CNN-FCL, XGB 是显著优于 DTC, LOG, ELM, ABC, QDA 等算法的。
模型性能评估之 Friedman 检验与 Nemenyi 后续检验_第5张图片

你可能感兴趣的:(机器学习,机器学习,算法)