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

前言

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

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

具体使用

1. 计算序值

假定我们用

D1D_1

D1?、

D2D_2

D2? 、

D3D_3

D3? 和

D4D_4

D4? 四个数据集对算法

AA

A、

BB

B、

CC

C 进行比较。首先需要得到每个算法在每个数据集上的测试结果,可以是准确率,也可以是均方误差,然后在每个数据上根据测试性能的好坏进行排序,并赋予序值 1,2,…。如果算法的测试性能相同,则评分排名。比如,在

D1D_1

D1? 和

D3D_3

D3? 上,

AA

A 最好、

BB

B 次之,

CC

C 最差,而在

D2D_2

D2? 上

AA

A 最好、

BB

B 和

CC

C 性能相同,…,则可以列出如下表所示的序值表,对每一列的序值进行求平均,得到平均序值。
1

2. Friedman 检验

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

假定我们在

NN

N 个数据集上比较

kk

k 个算法,令

rir_i

ri? 表示第

ii

i 个算法的平均序值。为简化讨论,暂时不考虑平分序值的情况,则

rir_i

ri? 服从正态分布,其均值和方差分别为

(k+1)/2(k+1)/2

(k+1)/2 和

(k2?1)/12(k^2-1)/12

(k2?1)/12。变量

τχ2=k?1k?12Nk2?1i=1k(ri?k+12)2=12Nk(k+1)(i=1kri2?k(k+1)24)
\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?=kk?1??k2?112N?i=1∑k?(ri??2k+1?)2=k(k+1)12N?(i=1∑k?ri2??4k(k+1)2?)

kk

k 和

NN

N 都较大时,服从自由度为

k?1k-1

k?1 的

χ2\chi^2

χ2 分布。

然后,上述的这样的 “原始 Friedman 检验” 过于保守,现在通常使用变量

τF=(N?1)τχ2N(k?1)?τχ2
\tau_F = \frac{(N-1)\tau_\chi^2}{N(k-1)-\tau_\chi^2}

τF?=N(k?1)?τχ2?(N?1)τχ2??
其中,

τF\tau_F

τF? 服从自由度为

k?1k-1

k?1 和

(k?1)(N?1)(k-1)(N-1)

(k?1)(N?1) 的

FF

F 分布。常用的临界值可以见下表。
22
另外也可以通过 R 语言计算得到 F 检验的临界值:

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

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

3. Nemenyi 后续检验

这个时候就需要使用 “后续检验”(post-hoc test)来进一步区分算法。常用的算法是 Nemenyi 后续检验。
Nemenyi 检验计算出平均序值差别的临界值域

CD=qαk(k+1)6N
CD = q_\alpha \sqrt{\frac{k(k+1)}{6N}}

CD=qα?6Nk(k+1)??
下表给出了

α=0.05\alpha = 0.05

α=0.05 和

0.10.1

0.1 时常用的

qαq_\alpha

qα? 值。

若两个算法的平均序值之差超出了临界值域

CDCD

CD ,则以相应的置信度拒绝 “两个算法性能相同” 这一假设。

3
若表中没有自己想要的数值,可以用 R 语言计算:

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

4. Friedman 检验图

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

观察图,若两个算法的横线段有交叠,说明两个算法没有显著的差别。
22
下图是之前自己做的一个 Friedman 检验图,可以看出 CNN-FCL, XGB 是显著优于 DTC, LOG, ELM, ABC, QDA 等算法的。
3