L'AUC-ROC peut-il être compris entre 0 et 0,5?

16

Les valeurs AUC-ROC peuvent-elles être comprises entre 0 et 0,5? Le modèle produit-il des valeurs comprises entre 0 et 0,5?

Un homme
la source

Réponses:

19

Un prédicteur parfait donne un score AUC-ROC de 1, un prédicteur qui fait des suppositions aléatoires a un score AUC-ROC de 0,5.

Si vous obtenez un score de 0 qui signifie que le classificateur est parfaitement incorrect, il prédit le choix incorrect 100% du temps. Si vous venez de changer la prédiction de ce classificateur pour le choix opposé, il pourrait prédire parfaitement et avoir un score AUC-ROC de 1.

Donc, dans la pratique, si vous obtenez un score AUC-ROC compris entre 0 et 0,5, vous pourriez avoir une erreur dans la façon dont vous étiquetez vos cibles de classificateur ou vous pourriez avoir un mauvais algorithme d'entraînement. Si vous obtenez un score de 0,2, cela montre que les données contiennent suffisamment d'informations pour obtenir un score de 0,8, mais quelque chose s'est mal passé.

Hugh
la source
Je pense que cette réponse ignore la possibilité que le modèle soit surajusté, par exemple en obtenant un AUC de 0,8 sur les données d'entraînement mais un AUC de 0,35 sur les données de maintien.
Sycorax dit Réintégrer Monica
1
@Sycorax: Hmm, je peux voir comment le sur-ajustement pourrait évidemment conduire l'AUC à son niveau de chance (si vous êtes si loin du vrai modèle que vos prédictions ne sont que des ordures), mais comment cela irait-il (de manière significative) en dessous du hasard ?
Ruben van Bergen
1
Vous aurez un AUC inférieur à 0,5 chaque fois que le classement sur un ensemble est plus proche d'être en arrière que correct. Ce n'est pas différent du sur-ajustement dans un autre contexte.
Sycorax dit Réintégrer Monica le
14

Ils peuvent, si le système que vous analysez fonctionne en dessous du niveau de chance. Trivialement, vous pourriez facilement construire un classificateur avec 0 AUC en le faisant toujours répondre à l'opposé de la vérité.

Dans la pratique, bien sûr, vous entraînez votre classificateur sur certaines données, donc des valeurs très inférieures à 0,5 indiqueraient généralement une erreur dans votre algorithme, les étiquettes de données ou le choix des données de train / test. Par exemple, si vous avez changé par erreur les étiquettes de classe dans vos données de train, votre AUC attendue serait de 1 moins la "vraie" AUC (avec des étiquettes correctes). L'AUC peut également être inférieure à 0,5 si vous divisez vos données en partitions de test et de formation de manière à ce que les modèles à classer soient systématiquement différents. Cela peut se produire (par exemple) si une classe est plus courante dans le train que dans l'ensemble de test, ou si les modèles de chaque ensemble ont systématiquement des interceptions différentes que vous n'avez pas corrigées.

Enfin, cela peut également se produire de manière aléatoire car votre classificateur est au niveau du hasard à long terme, mais il s'est avéré "malchanceux" dans votre échantillon de test (c'est-à-dire obtenir quelques erreurs de plus que les succès). Mais dans ce cas, les valeurs doivent toujours être relativement proches de 0,5 (la distance dépend du nombre de points de données).

Ruben van Bergen
la source
1

Je suis désolé, mais ces réponses sont dangereusement erronées. Non, vous ne pouvez pas simplement retourner AUC après avoir vu les données. Imaginez que vous achetez des actions, et que vous avez toujours acheté le mauvais, mais vous vous êtes dit, alors ça va, parce que si vous achetiez le contraire de ce que votre modèle prédit, vous gagneriez de l'argent.

Le fait est qu'il existe de nombreuses raisons, souvent non évidentes, pour lesquelles vous pouvez biaiser vos résultats et obtenir des performances systématiquement inférieures à la moyenne. Si vous retournez maintenant votre AUC, vous pourriez penser que vous êtes le meilleur modélisateur du monde, bien qu'il n'y ait jamais eu de signal dans les données.

Voici un exemple de simulation. Notez que le prédicteur est juste une variable aléatoire sans relation avec la cible. Notez également que l'ASC moyenne est d'environ 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')

Résultats

entrez la description de l'image ici

Bien sûr, il n'y a aucun moyen qu'un classificateur puisse apprendre quoi que ce soit des données car les données sont aléatoires. L'AUC de chance ci-dessous est là parce que LOOCV crée un ensemble d'entraînement biaisé et déséquilibré. Cependant, cela ne signifie pas que si vous n'utilisez pas LOOCV, vous êtes en sécurité. Le point de cette histoire est qu'il existe de nombreuses façons dont les résultats peuvent avoir des performances moyennes inférieures même s'il n'y a rien dans les données, et donc vous ne devez pas inverser les prévisions à moins de savoir ce que vous faites. Et puisque vous avez des performances moyennes ci-dessous, vous ne voyez pas ce que vous faites :)

Voici quelques articles qui ont abordé ce problème, mais je suis sûr que d'autres l'ont fait aussi

Jamalabadi et al 2016 https://onlinelibrary.wiley.com/doi/full/10.1002/hbm.23140

Snoek et al 2019 https://www.ncbi.nlm.nih.gov/pubmed/30268846

rep_ho
la source
Cela devrait être la réponse acceptée!
tdc