AUC-ROC 0-0.5 arasında olabilir mi?


16

AUC-ROC değerleri 0-0.5 arasında olabilir mi? Model hiç 0 ile 0,5 arasında değer verir mi?

Yanıtlar:


19

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.


Bu cevabın, örneğin eğitim verileri üzerinde 0.8 AUC, tutma verilerinde 0.35 AUC elde edilmesi gibi modelin fazla abartılmış olma olasılığını atladığını düşünüyorum.
Sycorax, Reinstate Monica'ya

1
@Sycorax: Hmm, aşırı sığmanın AUC'yi şans düzeyinde olduğu yere nasıl yönlendirebileceğini görebiliyorum (tahminlerinizin sadece çöp olduğu gerçek modelden çok uzaksanız), ancak şansın altına nasıl (önemli ölçüde) nasıl gideceğini ?
Ruben van Bergen

2
Bazı setlerdeki sıralama doğrudan geri olmaya daha yakın olduğunda 0.5'in altında bir AUC'ye sahip olursunuz . Başka bir bağlamda aşırı uyumdan farklı değil.
Sycorax, Reinstate Monica'ya

14

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).


2

Ü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

resim açıklamasını buraya girin

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


Bu kabul edilen cevap olmalı!
tdc
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.