logloss vs gini / auc

15

J'ai formé deux modèles (classificateurs binaires utilisant h2o AutoML) et je veux en sélectionner un à utiliser. J'ai les résultats suivants:

 model_id        auc     logloss    logloss_train   logloss_valid   gini_train  gini_valid

DL_grid_1   0.542694    0.287469         0.092717        0.211956     0.872932    0.312975
DL_grid_2   0.543685    0.251431         0.082616        0.186196     0.900955    0.312662

les colonnes aucet loglosssont les métriques de validation croisée (la validation croisée utilise uniquement les données de formation). les métriques ..._trainet ..._validsont trouvées en exécutant les métriques de formation et de validation via les modèles respectivement. Je veux utiliser le logloss_validou le gini_validpour choisir le meilleur modèle.

Le modèle 1 a un meilleur gini (c'est-à-dire une meilleure AUC) mais le modèle deux a une meilleure perte de journal. Ma question est de savoir laquelle choisir, ce qui, à mon avis, soulève la question, quels sont les avantages / inconvénients d'utiliser gini (AUC) ou logloss comme mesure de décision.

Dan
la source
1
Cette vidéo explique bien pourquoi la perte de journal est préférée si vous êtes intéressé par les probabilités et pas seulement par la classification. Notez que pour la classification binaire, la perte de log est égale au score de Brier.
Dan

Réponses:

11

Alors que l'AUC est calculée en ce qui concerne la classification binaire avec un seuil de décision variable, la perte de journal prend en fait en compte la "certitude" de la classification.

Par conséquent, à ma connaissance, la perte de journal va conceptuellement au-delà de l'AUC et est particulièrement pertinente dans les cas avec des données déséquilibrées ou en cas de coût d'erreur inégalement réparti (par exemple, détection d'une maladie mortelle).

En plus de cette réponse très basique, vous voudrez peut-être voir comment optimiser auc vs logloss dans les problèmes de classification binaire

Un exemple simple de calcul de perte de journal et le concept sous-jacent est discuté dans cette question récente La fonction de perte de journal dans scikit-learn renvoie différentes valeurs

De plus, un très bon point a été fait dans stackoverflow

Il faut comprendre la différence cruciale entre l'AUC ROC et les métriques "point par point" comme l'exactitude / précision, etc. ROC est une fonction d'un seuil. Étant donné un modèle (classificateur) qui génère la probabilité d'appartenance à chaque classe, nous classons généralement l'élément dans la classe avec le plus grand soutien. Cependant, nous pouvons parfois obtenir de meilleurs scores en modifiant cette règle et en exigeant qu'un support soit 2 fois plus grand que l'autre pour être réellement classé comme classe donnée. Cela est souvent vrai pour les jeux de données déséquilibrés. De cette façon, vous modifiez en fait les leçons apprises avant les cours pour mieux adapter vos données. ROC examine «ce qui se passerait si je modifiais ce seuil à toutes les valeurs possibles», puis AUC ROC calcule l'intégrale d'une telle courbe.

Nikolas Rieble
la source
Votre premier lien contient "AUC maximise la capacité du modèle à discriminer entre les classes tandis que la perte de log pénalise la divergence entre les probabilités réelles et estimées" , donc je demande essentiellement comment choisir entre ces deux objectifs? Est-ce que si je travaille directement avec la sortie `` probabilité '' du modèle, je devrais optimiser la perte de journal (et ensuite probablement aussi faire un étalonnage de probabilité ) où-comme si je l'utilisais réellement comme classificateur pour prendre une décision difficile qui c'est un cals ou l'autre je devrais aller avec AUC?
Dan
2
Si vous vous souciez juste d'une bonne ou d'une mauvaise décision -> utilisez l'AUC - si vous vous souciez de la quantité de «bien» ou de «mal» que vous êtes -> utilisez logloss
Nikolas Rieble
Tout autre choix de mesure de performance ne peut pas être généralisé mais dépend plutôt du domaine / de l'application.
Nikolas Rieble