Yanıtlar:
Mükemmel bir yordayıcı, 1 AUC-ROC skoru verir, rastgele tahminler yapan bir yordayıcı AUC-ROC skoru 0.5'dir.
Sınıflandırıcının mükemmel şekilde yanlış olduğu anlamına gelen 0 puan alırsanız, zamanın% 100'ünde yanlış seçim öngörüyor. Bu sınıflandırıcının tahminini zıt seçeneğe değiştirdiyseniz, mükemmel bir şekilde tahmin edebilir ve 1 AUC-ROC skoruna sahip olabilirsiniz.
Dolayısıyla pratikte 0 ile 0.5 arasında bir AUC-ROC puanı alırsanız, sınıflandırıcı hedeflerinizi etiketleme biçiminizde bir hata olabilir veya kötü bir eğitim algoritmanız olabilir. Eğer 0.2 puan alırsanız, bu verilerin 0.8 puan almak için yeterli bilgi içerdiğini, ancak bir şeyler ters gittiğini gösterir.
Analiz ettiğiniz sistem şans seviyesinin altındaysa, yapabilirler. Önemsiz olarak, 0 AUC ile bir sınıflandırıcıyı her zaman gerçeğin tersine cevaplayarak kolayca oluşturabilirsiniz.
Pratikte, sınıflandırıcıyı bazı veriler üzerinde eğitirsiniz, böylece 0,5'ten çok daha küçük değerler genellikle algoritmanızda, veri etiketlerinde veya tren / test verisi seçiminde bir hatayı gösterir. Örneğin, tren verilerinizdeki sınıf etiketlerini yanlışlıkla değiştirirseniz, beklenen AUC'niz 1 eksi "gerçek" AUC (doğru etiketler verilir) olacaktır. Verilerinizi tren ve test bölümlerine, sınıflandırılacak örüntüler sistematik olarak farklı olacak şekilde bölerseniz AUC <0.5 olabilir. Bu, örneğin bir sınıf trende test setine göre daha yaygınsa veya her setteki desenlerde düzeltmediğiniz sistematik olarak farklı kesişmeler varsa oluşabilir.
Son olarak, rasgele de olabilir, çünkü sınıflandırıcınız uzun vadede şans seviyesindedir, ancak test örneğinizde "şanssız" hale gelir (yani başarılardan birkaç hata daha alır). Ancak bu durumda değerler hala 0,5'e yakın olmalıdır (ne kadar yakın veri noktalarının sayısına bağlıdır).
Üzgünüm, ama bu cevaplar tehlikeli bir şekilde yanlış. Hayır, verileri gördükten sonra AUC'yi çeviremezsiniz. Hisse senetleri satın aldığınızı ve her zaman yanlış olanı aldığınızı hayal edin, ama kendinize söylediniz, o zaman tamam, çünkü modelinizin öngördüğünün tersini satın alıyorsanız, para kazanırsınız.
Mesele şu ki, sonuçlarınıza önyargılı olmanız ve sürekli olarak ortalama performansın altında olmanız için birçok, genellikle açık olmayan nedenler var. Şimdi AUC'nizi çevirirseniz, verilerde hiç sinyal olmamasına rağmen, dünyanın en iyi modelleyicisi olduğunuzu düşünebilirsiniz.
İşte bir simülasyon örneği. Tahminleyicinin, hedefle hiçbir ilişkisi olmayan rastgele bir değişken olduğuna dikkat edin. Ayrıca, ortalama AUC'nin yaklaşık 0.3 olduğunu unutmayın.
library(MLmetrics)
aucs <- list()
for (sim in seq_len(100)){
n <- 100
df <- data.frame(x=rnorm(n),
y=c(rep(0, n/2), rep(1, n/2)))
predictions <- list()
for(i in seq_len(n)){
train <- df[-i,]
test <- df[i,]
glm_fit <- glm(y ~ x, family = 'binomial', data = train)
predictions[[i]] <- predict(glm_fit, newdata = test, type = 'response')
}
predictions <- unlist(predictions)
aucs[[sim]] <- MLmetrics::AUC(predictions, df$y)
}
aucs <- unlist(aucs)
plot(aucs); abline(h=mean(aucs), col='red')
Sonuçlar
Tabii ki, bir sınıflandırıcının veriler rasgele olduğu için verilerden bir şey öğrenmesinin bir yolu yoktur. LOOCV önyargılı, dengesiz bir eğitim seti oluşturduğu için AUC'nin körük şansı var. Ancak bu, LOOCV kullanmıyorsanız güvende olduğunuz anlamına gelmez. Bu hikayenin amacı, verilerde hiçbir şey olmasa bile sonuçların ortalama performansın nasıl olabileceğinin birçok yolu olduğu ve bu nedenle ne yaptığınızı bilmedikçe tahminleri çevirmemelisiniz. Ortalama performansın altında olduğunuz için ne yaptığınızı görmüyorsunuz :)
İşte bu soruna dokunan birkaç kağıt, ama eminim başkaları da yaptı
Jamalabadi ve diğerleri 2016 https://onlinelibrary.wiley.com/doi/full/10.1002/hbm.23140
Snoek ve diğerleri 2019 https://www.ncbi.nlm.nih.gov/pubmed/30268846