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?
machine-learning
loss-functions
log-loss
user1923975
fonte
fonte
Respostas:
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.L ( p ) = 0 1 L ( p ) = + ∞ 0 0
Portanto, respondendo à sua pergunta, significa, em média, que você atribuiu à classe certa a probabilidade p ≈ 0,61 nas amostras.L ( p ) = 0,5 p ≈ 0,61
Agora, decidir se isso é bom o suficiente depende do aplicativo e, portanto, depende do argumento.
fonte
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:
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.5
para 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 predizp =0.1
essa classe. Essa será sua linha de base da previsão idiota, por acaso, porque a previsão0.5
será mais estúpida .I. Impacto do número de classes
N
no dumb-logloss:No caso equilibrado (toda classe tem a mesma prevalência), quando você prediz
p = prevalence = 1 / N
para cada observação, a equação se torna simplesmente:Logloss = -log(1 / N)
log
sendoLn
, 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:
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: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
b. Caso de três classes
"Dumb" perde em função da prevalência - caso de três classes:
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.
fonte
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'
fonte
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.
fonte