ROC eğrisinin altındaki alana karşı doğruluk


16

Bir teşhis sistemi için bir ROC eğrisi oluşturdum. Daha sonra eğrinin altındaki alanın parametrik olmayan bir şekilde AUC = 0.89 olduğu tahmin edildi. En uygun eşik ayarında doğruluğu hesaplamaya çalıştığımda (noktaya en yakın nokta (0, 1)), teşhis sisteminin doğruluğunu 0.8 olarak aldım, bu da AUC'den daha az! Hassasiyeti optimum eşikten çok uzakta olan başka bir eşik ayarında kontrol ettiğimde, doğruluğu 0,92'ye eşitledim. Bir teşhis sisteminin doğruluğunu en iyi eşik ayarında, başka bir eşikteki doğruluktan daha düşük ve aynı zamanda eğrinin altındaki alandan daha düşük yapmak mümkün müdür? Ekteki resme bakınız.

resim açıklamasını buraya girin


1
Analizinizde kaç tane örnek olduğunu belirtir misiniz? Bahse girerim ağır dengesizdi. Ayrıca, AUC ve doğruluk bu şekilde tercüme edilmez (doğruluk AUC'den daha düşük olduğunu söylediğinizde).
Firebug

1
269469 negatif, 37731 pozitif; bu, aşağıdaki cevaplara göre (sınıf dengesizliği) sorun olabilir.
Ali Sultan

sorunun kendi başına sınıf dengesizliği olmadığını, değerlendirme ölçüsünün seçimi olduğunu unutmayın. Sonuçta, bu senaryoda daha mantıklıdır veya dengeli bir doğruluk uygulayabilirsiniz. AUC
Firebug

Son olarak, bir cevabın sorunuza cevap verdiğini düşünüyorsanız cevabı "kabul etmeyi" (yeşil onay işareti) düşünebilirsiniz. Bu zorunlu değildir, ancak cevap veren kişiye yardımcı olur ve aynı zamanda site organizasyonuna (soru siz bunu yapana kadar cevapsız sayılır) ve belki de gelecekte aynı soruyu yapacak insanlara yardımcı olur.
Firebug

Yanıtlar:


8

Gerçekten mümkün. Anahtar, doğruluğun sınıf dengesizliğinden çok etkilendiğini hatırlamaktır. Örneğin, sizin durumunuzda, FPR ( ) 0'a yakındır ve TPR (=TP=FPFP+TN ) 0,5'tir, doğruluğunuz (=TP+TNTPTP+FN ) hala çok yüksektir.=TP+TNTP+FN+FP+TN

Başka türlü ifade etmek gerekirse, çok daha fazla negatif örneğiniz olduğu için, sınıflandırıcı her zaman 0 öngörüyorsa, FPR ve TPR 0'a yakın olduğunda yine de yüksek bir doğruluk elde edecektir.

Ne diyoruz optimum eşik ayarı (noktası (0, 1) en yakın noktası) optimum eşik için birçok tanımların sadece biridir: mutlaka doğruluk optimizasyon yapılmaz.

resim açıklamasını buraya girin


10

FPRTPRACC

TPR=True positivePositive cases

FPR=False positiveNegative cases

ACC=TPRPositive cases+(1FPR)Negative casesPositive cases+Negative cases

ACCTPRFPR

ACC=TPR+1FPR2

NN+

ACC(NN+)1FPR
ACCFPR

Bu örneğe bakın, negatiflerin sayıları 1000: 1'den fazla.

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

Bakın, fpr0 ne zaman accmaksimumdur.

Ve işte ROC, doğruluk açıklamalı.

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

resim açıklamasını buraya girin


AUC

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

Sonuç olarak, doğruluğu sahte bir modelle sonuçlanacak şekilde optimize edebilirsiniz (örneğimde tpr= 0). Çünkü doğruluk iyi bir metrik değildir, sonucun ikiye ayrılması karar vericiye bırakılmalıdır.

TPR=1FPR

Dengesiz sınıflarınız olduğunda, doğruluğu optimize etmek önemsiz olabilir (örneğin, herkesi çoğunluk sınıfı olarak tahmin edin).


AUC

Ve en önemlisi: AUC, daha doğru olandan daha az doğru olan bir sınıflandırıcı için neden daha yüksektir?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.