Odpowiedzi:
Idealny predyktor daje wynik AUC-ROC równy 1, predyktor, który losowo zgaduje, ma wynik AUC-ROC równy 0,5.
Jeśli uzyskasz wynik 0, co oznacza, że klasyfikator jest całkowicie niepoprawny, w 100% przypadków przewiduje nieprawidłowy wybór. Jeśli właśnie zmieniłeś przewidywanie tego klasyfikatora na przeciwny wybór, może on doskonale przewidzieć i mieć wynik AUC-ROC równy 1.
Tak więc w praktyce, jeśli uzyskasz wynik AUC-ROC od 0 do 0,5, możesz popełnić błąd w sposobie oznaczania celów klasyfikacyjnych lub mieć zły algorytm treningowy. Jeśli uzyskasz wynik 0,2, oznacza to, że dane zawierają wystarczającą ilość informacji, aby uzyskać wynik 0,8, ale coś poszło nie tak.
Mogą, jeśli analizowany system działa poniżej poziomu szansy. Po prostu, można łatwo skonstruować klasyfikator z 0 AUC, zawsze odpowiadając prawdzie.
W praktyce oczywiście trenujesz klasyfikator na niektórych danych, więc wartości znacznie mniejsze niż 0,5 zwykle wskazują na błąd w algorytmie, etykietach danych lub wyborze danych pociągu / testu. Na przykład, jeśli omyłkowo zmieniłeś etykiety klas w danych pociągu, oczekiwany AUC wyniósłby 1 minus „prawdziwy” AUC (przy prawidłowych etykietach). AUC może również wynosić <0,5, jeśli podzielisz dane na partycje pociągów i testów w taki sposób, że wzorce, które mają być klasyfikowane, były systematycznie różne. Może się to zdarzyć (na przykład), jeśli jedna klasa była bardziej powszechna w pociągu w porównaniu do zestawu testowego lub jeśli wzorce w każdym zestawie miały systematycznie różne przechwyty, dla których nie poprawiono.
Wreszcie może się to zdarzyć losowo, ponieważ klasyfikator znajduje się na poziomie prawdopodobieństwa na dłuższą metę, ale zdarzył się, że dostał „pecha” w próbce testowej (tj. Otrzymał kilka błędów więcej niż sukcesów). Ale w takim przypadku wartości powinny nadal być względnie bliskie 0,5 (jak blisko zależy od liczby punktów danych).
Przykro mi, ale te odpowiedzi są niebezpiecznie błędne. Nie, nie można po prostu odwrócić AUC po wyświetleniu danych. Wyobraź sobie, że kupujesz akcje i zawsze kupowałeś niewłaściwy, ale powiedziałeś sobie, to jest w porządku, ponieważ jeśli kupowałbyś przeciwieństwo tego, co przewidywał twój model, zarabiałbyś pieniądze.
Chodzi o to, że istnieje wiele, często nieoczywistych powodów, dla których możesz wpływać na wyniki i konsekwentnie osiągać wyniki poniżej średniej. Jeśli teraz zmienisz swoje AUC, możesz pomyśleć, że jesteś najlepszym modelarzem na świecie, chociaż w danych nigdy nie było żadnego sygnału.
Oto przykład symulacji. Zauważ, że predyktor jest zmienną losową bez związku z celem. Zauważ też, że średnie AUC wynosi około 0,3.
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')
Wyniki
Oczywiście nie ma możliwości, aby klasyfikator mógł dowiedzieć się czegokolwiek z danych, ponieważ dane są losowe. Poniżej znajduje się szansa na AUC, ponieważ LOOCV tworzy stronniczy, niezrównoważony zestaw treningowy. Nie oznacza to jednak, że jeśli nie używasz LOOCV, jesteś bezpieczny. Chodzi o to, że istnieje wiele sposobów, w jaki wyniki mogą mieć średnią wydajność, nawet jeśli nie ma nic w danych, i dlatego nie powinieneś zmieniać prognoz, chyba że wiesz, co robisz. A ponieważ masz poniżej średniej wydajności, nie widzisz, co robisz :)
Oto kilka artykułów na ten temat, ale jestem pewien, że inni też to zrobili
Jamalabadi i in. 2016 https://onlinelibrary.wiley.com/doi/full/10.1002/hbm.23140
Snoek i in. 2019 https://www.ncbi.nlm.nih.gov/pubmed/30268846