Denetimli bir makine öğrenimi sınıflandırma algoritmasının performansını değerlendirmeye çalışıyorum. Gözlemler 99 kişiden oluşan nominal sınıflara (şimdilik 2, ancak bunu çok sınıflı problemlere genelleştirmek istiyorum) düşüyor.
Cevaplamak istediğim sorulardan biri, algoritmanın girdi sınıfları arasında sınıflandırma doğruluğunda önemli bir fark göstermesi. İkili sınıflandırma durumu için, eşleştirilmiş bir Wilcoxon testi kullanarak (altta yatan dağılım normal olmadığından) denekler arasındaki sınıflar arasındaki ortalama doğruluğu karşılaştırıyorum . Bu prosedürü çok sınıflı problemlere genellemek için bir Friedman testi kullanmaya başladım .
Bununla birlikte, bir ikili IV durumunda bu iki prosedürle elde edilen p değerleri, Wilcoxon testi p < .001
verirken p = .25
Friedman testi için çılgınca değişir . Bu beni Friedman testinin yapısını temelden yanlış anladığımı düşünmeye itiyor.
Tüm vakalarda tekrarlanan doğruluk ölçümlerinin sonuçlarını karşılaştırmak için bu durumda bir Friedman testi kullanmak uygun değil mi?
Bu sonuçları elde etmek için R kodum ( subject
konu tanımlayıcısı, acc
DV doğruluğu ve expected
gözlem sınıfı IV'tür):
> head(subject.accuracy, n=10)
subject expected acc
1 10 none 0.97826087
2 10 high 0.55319149
3 101 none 1.00000000
4 101 high 0.68085106
5 103 none 0.97826087
6 103 high 1.00000000
7 104 none 1.00000000
8 104 high 0.08510638
9 105 none 0.95121951
10 105 high 1.00000000
> ddply(subject.accuracy, .(expected), summarise, mean.acc = mean(acc), se.acc = sd(acc)/sqrt(length(acc)))
expected mean.acc se.acc
1 none 0.9750619 0.00317064
2 high 0.7571259 0.03491149
> wilcox.test(acc ~ expected, subject.accuracy, paired=T)
Wilcoxon signed rank test with continuity correction
data: acc by expected
V = 3125.5, p-value = 0.0003101
alternative hypothesis: true location shift is not equal to 0
> friedman.test(acc ~ expected | subject, subject.accuracy)
Friedman rank sum test
data: acc and expected and subject
Friedman chi-squared = 1.3011, df = 1, p-value = 0.254
wilcox.test
Eşleştirme değişkenini asla söylemediğiniz için, iki çağrının doğruluğunu karşılaştırarak imzalı bir sıralama testi yaptığınızdan emin değilim . En azından bu, testi çalıştırmanın güvensiz bir yoludur, çünkü giriş verilerindeki satırların sırasına dayanır.