统计检验问题:Friedman Test,Nemenyi test检验和Bonferroni-Dunn test检验
當我們提出一個算法后,我們需要將它與其他的算法進行對比,表現出它們的性能差異。因此,在做算法對比時,往往需要對實驗結果進行統計檢驗。一般會先利用弗里德曼檢驗判斷提出算法是否與其他算法有明顯的差異,如果有的話還需要繼續進行后續的統計檢驗,比如用Nemenyi test檢驗和Bonferroni-Dunn test檢驗。
Friedman test是一種常用的檢驗,用來比較k個算法在N個數據集上的整體表現性能。但Friedman test只能給出k個算法的性能之間是否存在差異的結論,如果存在差異,還需要進行“后續檢驗”(post-hoc test),以得出哪些算法的性能之間存在統計上的差異,常用的后續檢驗方法包括Nemenyi test和Bonferroni-Dunn test。
Nemenyi test適用于對比k個算法相互之間的性能(when all classifiers are compared to each other),【這個方法提出了 Critical Difference 的概念,并且可以通過作圖來呈現結果。CD具體的計算在 06 JMLR那篇有詳細介紹。】
鏈接:https://www.jmlr.org/papers/volume7/demsar06a/demsar06a.pdf
CD的計算公式如下:
域值(critical difference, CD)CD圖:用來表示不同算法之間的性能差異,圖形如下:
周志華書本上對兩種檢驗的描述如下:
如果算法之間有橫線相連說明提出的算法性能不顯著;如果沒有橫線相連,說明所提出的算法性能顯著。
而Bonferroni-Dunn test適用于將某個算法與其余k-1個算法對比(when all classifiers are compared with a control classifier),二者都是將各個算法平均排名之差與某域值(critical difference, CD)對比,若大于該域值則說明平均排名高的算法統計上優于平均排名低的算法,反之則二者統計上沒有差異。
實例:
這里的F0.05和F0.1可以根據給定的算法個數和數據集個數,根據對應的F表格查值,如果無法查到的話,只能借助軟件R語言,python或者matlab進行計算,然后再進行比較
實踐部分:因為一直想復現出論文中關于Friedman檢驗圖時如何畫出來的,所以參考了CSDN中很多優秀博主的帖子,經過自己的實踐后,發現比較有效的方法是以下兩種方法:
Matlab中實現Friedman檢驗:
Python中實現Friedman檢驗:
3.利用python中的Orange模塊來進行繪圖,但是這個容易出現以下的錯誤,比如會出現導Orange包 無法導入,即Orange包一直無法安裝等問題,這時可以試試離線下載。不過下載完成后,在進行Friedman檢驗時,可能會報錯,結果報錯顯示AttributeError: module ‘Orange.evaluation’ has no attribute ‘compute_CD’,這個錯誤截至現在發文,我還沒有找到好的解決方法。
4.手算出各個算法在各個數據集上的平均序值,通過公式計算得到CD值,然后利用PPT或者Word手繪出檢驗圖
5.平均序值的計算,實例部分:
參考文章:
1.統計檢驗–多個算法在多個數據集上的結果比較及R語言實現 - 知乎 (zhihu.com)
2.https://blog.csdn.net/jbb0523/article/details/109990924
3.https://blog.csdn.net/QKK612501/article/details/123903124?4.spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-123903124-blog-129110091.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-123903124-blog-129110091.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=8
5.https://zhuanlan.zhihu.com/p/266217635
6.https://zhuanlan.zhihu.com/p/145831286
總結
以上是生活随笔為你收集整理的统计检验问题:Friedman Test,Nemenyi test检验和Bonferroni-Dunn test检验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: axios 的responseType
- 下一篇: opencv 判断点在多边形内外