J'essaie de mieux comprendre la perte de journal et comment cela fonctionne, mais une chose que je n'arrive pas à trouver est de mettre le numéro de perte de journal dans une sorte de contexte. Si mon modèle a une perte de log de 0,5, est-ce bien? Qu'est-ce qui est considéré comme un bon et un mauvais score? Comment ces seuils changent-ils?
machine-learning
loss-functions
log-loss
user1923975
la source
la source
Réponses:
La perte de log est simplementL(pi)=−log(pi) où p est simplement la probabilité attribuée à la classe réelle.
DoncL(p)=0 est bon, nous avons attribué la probabilité 1 à la bonne classe, tandis que L(p)=+∞ est mauvais, parce que nous avons attribué la probabilité 0 à la classe réelle.
Donc, en répondant à votre question, signifie, en moyenne, que vous avez attribué à la bonne classe la probabilité pour les échantillons.L(p)=0.5 p≈0.61
Maintenant, décider si cela est assez bon dépend en fait de l'application, et c'est donc à l'argument.
la source
Comme toute métrique, une bonne métrique est la meilleure que la "muette", par hasard, si vous deviez deviner sans aucune information sur les observations. C'est ce qu'on appelle le modèle d'interception uniquement dans les statistiques.
Cette supposition "stupide" dépend de 2 facteurs:
Dans le cas de la métrique LogLoss, une métrique "bien connue" habituelle consiste à dire que 0,693 est la valeur non informative. Ce chiffre est obtenu en prédisant
p = 0.5
pour n'importe quelle classe d'un problème binaire. Ceci n'est valable que pour les problèmes binaires équilibrés . Parce que lorsque la prévalence d'une classe est de 10%, alors vous prédirez toujoursp =0.1
pour cette classe. Ce sera votre base de prédiction muette, par hasard, car la prédiction0.5
sera plus stupide.I. Impact du nombre de classes
N
sur la perte de log:Dans le cas équilibré (chaque classe a la même prévalence), lorsque vous prédisez
p = prevalence = 1 / N
pour chaque observation, l'équation devient simplement:Logloss = -log(1 / N)
log
étantLn
, logarithme népérien pour ceux qui utilisent cette convention.Dans le cas binaire,
N = 2
:Logloss = - log(1/2) = 0.693
Donc, les stupides Loglosses sont les suivants:
II. Impact de la prévalence des classes sur le Logloss muet:
une. Cas de classification binaire
Dans ce cas, nous prédisons toujours
p(i) = prevalence(i)
et nous obtenons le tableau suivant:Ainsi, lorsque les classes sont très déséquilibrées (prévalence <2%), une perte de log de 0,1 peut en fait être très mauvaise! Une telle précision de 98% serait mauvaise dans ce cas. Alors peut-être que Logloss ne serait pas la meilleure métrique à utiliser
b. Boîtier à trois classes
"Dumb" -logloss selon la prévalence - cas à trois classes:
Nous pouvons voir ici les valeurs des cas binaires et à trois classes équilibrés (0,69 et 1,1).
CONCLUSION
Une perte de log de 0,69 peut être bonne dans un problème multiclasse et très mauvaise dans un cas biaisé binaire.
Selon votre cas, vous feriez mieux de calculer vous-même la ligne de base du problème, pour vérifier la signification de votre prédiction.
Dans les cas biaisés, je comprends que la perte de journal a le même problème que la précision et les autres fonctions de perte: elle ne fournit qu'une mesure globale de vos performances. Donc, vous feriez mieux de compléter votre compréhension avec des mesures axées sur les classes minoritaires (rappel et précision), ou peut-être de ne pas utiliser du tout la perte de journal.
la source
C'est donc en fait plus compliqué que la réponse de Firebugs et tout dépend de la variation inhérente du processus que vous essayez de prédire.
Quand je dis variation, je veux dire que «si un événement devait se répéter dans les mêmes conditions, connues et inconnues, quelle est la probabilité que le même résultat se reproduise».
Un prédicteur parfait aurait une perte, pour la probabilité P: Perte = P ln P + (1-P) ln (1-P)
Si vous essayez de prédire quelque chose où, dans le pire des cas, certains événements seront prédits avec un résultat de 50/50, alors en intégrant et en prenant la moyenne, la perte moyenne serait: L = 0,5
Si ce que vous essayez de prédire est un peu plus répétable, la perte d'un modèle parfait est plus faible. Ainsi, par exemple, disons qu'avec suffisamment d'informations, un modèle parfait a pu prédire le résultat d'un événement où, parmi tous les événements possibles, le pire qu'il pourrait dire est «cet événement se produira avec une probabilité de 90%», alors la perte moyenne serait L = 0,18 .
Il y a également une différence si la distribution des probabilités n'est pas uniforme.
Donc, en réponse à votre question, la réponse est «cela dépend de la nature de ce que vous essayez de prédire»
la source
Je dirais que la réponse statistique standard est de comparer au modèle d'interception uniquement. (ceci gère les classes déséquilibrées mentionnées dans d'autres réponses) cf pseudo r ^ 2 de mcFadden. https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-what-are-pseudo-r-squareds/
Maintenant, le problème est quelle est la valeur maximale. fondamentalement, le problème est que la probabilité d'un événement n'est pas définie en dehors d'un modèle pour les événements. Je suggérerais que vous preniez vos données de test et les agrégiez à un certain niveau, pour obtenir une estimation de probabilité. puis calculez la perte de log de cette estimation.
Par exemple, vous prédisez le taux de clics en fonction de (site_web, ad_id, id_consommateur), puis vous agrégerez les clics, les impressions au niveau par exemple du site web et calculerez le ctr sur l'ensemble de test pour chaque site web. puis calculez log_loss sur votre ensemble de données de test en utilisant ces taux de clic de test comme prédictions. Il s'agit alors de la perte de journal optimale sur votre ensemble de test pour un modèle utilisant uniquement des identifiants de site Web . Le problème est que nous pouvons faire cette perte aussi petite que nous le souhaitons en ajoutant simplement plus de fonctionnalités jusqu'à ce que chaque enregistrement soit identifié de manière unique.
la source