本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
[弗里德曼(Friedman检验)],是多个(相关)样本齐一性的统计检验。 该方法是弗里德曼 (M.Friedman) 1973年提出的 。弗里德曼检验前提要求:1.顺序级数据;2.三个或更多组;3.相关的小组;4.从搭配的数值中随机地抽取样本 。
一、Friedman检验
在很多时候,我们会在一组数据集上对比多个算法的性能。当有多个算法参与比较时,常用基于算法排序的Friedman
检验。我们可以给出多个数据集如D1、D2、D3、D4.....Dn等对算法A1、A2.....An进行比较。使用评估方法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,3....;若算法的测试性能相同,则平分序值。
| 数据集 | 算法A | 算法B | 算法C | |
|---|---|---|---|---|
| D1 | 1 | 2 | 3 | |
| D2 | 1 | 2.5 | 2.5 | |
| D3 | 1 | 2 | 3 | |
| D4 | 1 | 2 | 3 | |
| 平均序值 | 1 | 2.125 | 2.875 | |
| --- | --- | |||
得出此算法比较序值表后,使用Friedman检验来判断这些算法的性能是否相同。若相同则平均序值也应当相同。
假定我们在N个数据集上比较k个算法,令表示第i个算法的平均序值,
的均值和方差分别为(k+1)/2和(
-1)/12N。
服从自由度为k-1和(k-1)(N-1)的F分布。
二、Nemenyi后续检验
若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,这时需要进行“后续检验”。
def nemenyi(n, k, q):
return q * (np.sqrt(k * (k + 1) / (6 * n)))
使用检验可以直观的用Friedman检验图表示: