Qu'est-ce qui est considéré comme une bonne perte de journal?

16

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?

user1923975
la source
Ce fil est pertinent ici: stats.stackexchange.com/q/414349/121522
mkt - Rétablir Monica le

Réponses:

19

La perte de log est simplement L(pi)=log(pi)p est simplement la probabilité attribuée à la classe réelle.

Donc L(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.5p0.61

Maintenant, décider si cela est assez bon dépend en fait de l'application, et c'est donc à l'argument.

Pyromane
la source
9

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:

  1. le nombre de classes
  2. l'équilibre des classes: leur prévalence dans l'ensemble de données observé

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.5pour 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 toujours p =0.1pour cette classe. Ce sera votre base de prédiction muette, par hasard, car la prédiction 0.5sera plus stupide.

I. Impact du nombre de classes Nsur la perte de log:

Dans le cas équilibré (chaque classe a la même prévalence), lorsque vous prédisez p = prevalence = 1 / Npour chaque observation, l'équation devient simplement:

Logloss = -log(1 / N)

logétant Ln, 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:

dumb-logloss selon le nombre de classes - cas équilibré

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:

logloss de classification binaire, équilibré - tableau

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

logloss de classification binaire, asymétrique - graphique

b. Boîtier à trois classes

"Dumb" -logloss selon la prévalence - cas à trois classes:

logloss de classification en trois classes, déséquilibré

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.

Fed Zee
la source
(+1) Bienvenue sur CV! Vous pouvez utiliser la composition mathématique dans votre message. Plus d'informations: math.meta.stackexchange.com/questions/5020/…
Sycorax dit de rétablir Monica
Mieux que ma réponse, +1
Firebug
5

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»

simeon
la source
L0.693p
L0.18L0.5
1
Je ne suis pas en désaccord avec votre pire cas. Je dis simplement qu'un «bon résultat» dépend du système. 0.4 peut indiquer un bon résultat pour certains systèmes (comme le dernier exemple) ou un mauvais (pour le premier).
simeon
0

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.

seanv507
la source