O que é considerado uma boa perda de log?

16

Estou tentando entender melhor a perda de log e como ela funciona, mas uma coisa que não consigo encontrar é colocar o número da perda de log em algum tipo de contexto. Se meu modelo tiver uma perda de log de 0,5, isso é bom? O que é considerado uma pontuação boa e ruim? Como esses limites mudam?

user1923975
fonte
Esta discussão é relevante aqui: stats.stackexchange.com/q/414349/121522
mkt - Reinstate Monica

Respostas:

19

O logloss é simplesmente onde p é simplesmente a probabilidade atribuída à classe real.L(pi)=log(pi)p

Então é bom, atribuímos a probabilidade 1 à classe correta, enquanto L ( p ) = + é ruim, porque atribuímos a probabilidade 0 à classe real.eu(p)=0 01eu(p)=+0 0

Portanto, respondendo à sua pergunta, significa, em média, que você atribuiu à classe certa a probabilidade p 0,61 nas amostras.eu(p)=0,5p0,61

Agora, decidir se isso é bom o suficiente depende do aplicativo e, portanto, depende do argumento.

Firebug
fonte
9

Como qualquer métrica, uma boa métrica é a melhor que o "bobo", por acaso, se você precisar adivinhar sem informações sobre as observações. Isso é chamado de modelo somente de interceptação nas estatísticas.

Essa suposição "burra" depende de 2 fatores:

  1. o número de classes
  2. o balanço de classes: sua prevalência no conjunto de dados observado

No caso da métrica LogLoss, uma métrica "conhecida" usual é dizer que 0,693 é o valor não informativo. Esta figura é obtida prevendo p = 0.5para qualquer classe de um problema binário. Isso é válido apenas para problemas binários balanceados . Porque quando a prevalência de uma classe é de 10%, você sempre prediz p =0.1essa classe. Essa será sua linha de base da previsão idiota, por acaso, porque a previsão 0.5será mais estúpida .

I. Impacto do número de classes Nno dumb-logloss:

No caso equilibrado (toda classe tem a mesma prevalência), quando você prediz p = prevalence = 1 / Npara cada observação, a equação se torna simplesmente:

Logloss = -log(1 / N)

logsendo Ln, logaritmo neperiano para quem usa essa convenção.

No caso binário, N = 2:Logloss = - log(1/2) = 0.693

Portanto, os burros-Loglosses são os seguintes:

dumb-logloss dependendo do número de classes - caso equilibrado

II Impacto da prevalência de classes no dumb-Logloss:

uma. Caso de classificação binária

Nesse caso, prevemos sempre p(i) = prevalence(i)e obtemos a seguinte tabela:

classificação binária logloss, equilibrada - tabela

Portanto, quando as classes são muito desequilibradas (prevalência <2%), um logloss de 0,1 pode realmente ser muito ruim! Tal como uma precisão de 98% seria ruim nesse caso. Talvez o Logloss não seja a melhor métrica a ser usada

classificação binária logloss, desequilibrada - gráfico

b. Caso de três classes

"Dumb" perde em função da prevalência - caso de três classes:

logloss de classificação de três classes, desequilibrado

Podemos ver aqui os valores de casos binários e de três classes balanceados (0,69 e 1,1).

CONCLUSÃO

Uma perda de log de 0,69 pode ser boa em um problema de várias classes e muito ruim em um caso de polarização binária.

Dependendo do seu caso, é melhor você calcular a linha de base do problema para verificar o significado de sua previsão.

Nos casos tendenciosos, entendo que o logloss tem o mesmo problema que a precisão e outras funções de perda: fornece apenas uma medida global do seu desempenho. Portanto, você complementaria melhor seu entendimento com métricas focadas nas classes minoritárias (recall e precisão), ou talvez não usasse logloss.

Fed Zee
fonte
(+1) Bem-vindo ao CV! Você pode usar a tipografia matemática em sua postagem. Mais informações: math.meta.stackexchange.com/questions/5020/…
Sycorax diz Restabelecer Monica
Melhor do que minha resposta, +1
Firebug
5

Portanto, isso é realmente mais complicado que a resposta do Firebugs e tudo depende da variação inerente do processo que você está tentando prever.

Quando digo variação, quero dizer que "se um evento se repetir exatamente nas mesmas condições, conhecidas e desconhecidas, qual é a probabilidade de que o mesmo resultado ocorra novamente".

Um preditor perfeito teria uma perda, para probabilidade P: Perda = P ln P + (1-P) ln (1-P)

Se você estiver tentando prever algo em que, no pior dos casos, alguns eventos serão previstos com um resultado de 50/50, integrando e calculando a média, a perda média seria: L = 0,5

Se o que você está tentando prever é um pouco mais repetitivo, a perda de um modelo perfeito é menor. Por exemplo, digamos, com informações suficientes, um modelo perfeito foi capaz de prever o resultado de um evento em que, em todos os eventos possíveis, o pior que poderia dizer é 'esse evento ocorrerá com 90% de probabilidade'; a perda média seria L = 0,18 .

Também existe uma diferença se a distribuição de probabilidades não for uniforme.

Portanto, em resposta à sua pergunta, a resposta é 'depende da natureza do que você está tentando prever'

simeon
fonte
eu0,693p
Imagine que você tem um sistema, onde conhece todas as informações possíveis sobre seu estado atual. Imagine que o sistema tenha algum nível interno de aleatoriedade para que, dados todos os parâmetros sobre seu estado, um resultado possa ser diferente. Digamos, por exemplo, neste sistema que pode variar de 0 a 10%. Um modelo perfeito (ou seja, aquele em que seu desempenho é limitado apenas pela variação inerente) seriaeu0,18. Para comparação, um sistema que varia de 0 a 100% alcançaria o melhoreu0,5.
21617 simeon
1
Não discordo do seu pior caso. Estou apenas dizendo que um 'bom resultado' depende do sistema. 0.4 pode indicar um bom resultado para alguns sistemas (como o último exemplo) ou ruim (para o primeiro).
21617 simeon
0

Eu diria que a resposta estatística padrão é comparar com o modelo somente de interceptação. (isso lida com as classes desequilibradas mencionadas em outras respostas) cf pseudo r ^ 2 de mcFadden. https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-what-are-pseudo-r-squareds/

Agora, o problema é qual é o valor máximo. fundamentalmente, o problema é que a probabilidade de um evento é indefinida fora de um modelo para os eventos. da maneira que eu sugiro é que você pegue seus dados de teste e os agregue a um determinado nível, para obter uma estimativa de probabilidade. depois calcule o logloss dessa estimativa.

por exemplo, você está prevendo a taxa de cliques com base em (site da Web, ad_id, consumidor_id), depois agrega cliques, impressões no nível do site da Web e calcula o ctr no conjunto de testes de cada site. calcule a perda de log no conjunto de dados de teste usando essas taxas de cliques de teste como previsões. Este é o melhor logloss no seu conjunto de testes para um modelo usando apenas IDs de sites . O problema é que podemos reduzir essa perda da maneira que desejamos, adicionando mais recursos até que cada registro seja identificado exclusivamente.

seanv507
fonte