logloss vs gini / auc

14

Treinei dois modelos (classificadores binários usando o h2o AutoML) e quero selecionar um para usar. Eu tenho os seguintes resultados:

 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

as colunas auce loglosssão as métricas de validação cruzada (a validação cruzada usa apenas os dados de treinamento). as métricas ..._traine ..._validsão encontradas executando as métricas de treinamento e validação nos modelos, respectivamente. Eu quero usar o logloss_validou o gini_validpara escolher o melhor modelo.

O modelo 1 tem um gini melhor (ou seja, uma AUC melhor), mas o modelo dois tem um logloss melhor. Minha pergunta é qual escolher, o que eu acho que implora a pergunta, quais são as vantagens / desvantagens de usar gini (AUC) ou logloss como métrica de decisão.

Dan
fonte
1
Este vídeo tem uma boa explicação de por que o logloss é preferido se você estiver interessado nas probabilidades e não apenas na classificação. Observe que, para classificação binária, logloss é igual à pontuação do brier.
Dan

Respostas:

10

Enquanto a AUC é calculada com relação à classificação binária com um limite de decisão variável, o logloss realmente leva em consideração a "certeza" da classificação.

Portanto, a meu ver, logloss conceitualmente vai além da AUC e é especialmente relevante em casos com dados desequilibrados ou em caso de custo de erro desigualmente distribuído (por exemplo, detecção de uma doença mortal).

Além desta resposta muito básica, convém otimizar auc vs logloss em problemas de classificação binária

Um exemplo simples de computação com perda de log e o conceito subjacente é discutido nesta pergunta recente A função Log Loss no scikit-learn retorna valores diferentes

Além disso, um argumento muito bom foi feito no stackoverflow

É preciso entender a diferença crucial entre o ROC da AUC e as métricas "pontuais", como precisão / precisão, etc. O ROC é uma função de um limite. Dado um modelo (classificador) que gera a probabilidade de pertencer a cada classe, geralmente classificamos o elemento na classe com o maior suporte. No entanto, às vezes podemos obter pontuações melhores alterando essa regra e exigindo que um suporte seja 2 vezes maior que o outro para realmente classificar como uma determinada classe. Isso geralmente é verdade para conjuntos de dados desequilibrados. Dessa forma, você está realmente modificando o aprendido antes das aulas para ajustar melhor seus dados. O ROC analisa "o que aconteceria se eu alterar esse limite para todos os valores possíveis" e, em seguida, o AUC ROC calcula a integral dessa curva.

Nikolas Rieble
fonte
Seu primeiro link contém "AUC maximiza a capacidade do modelo de discriminar entre classes, enquanto o logloss penaliza a divergência entre probabilidades reais e estimadas" , então estou basicamente perguntando como escolho entre esses dois objetivos? É um caso de, se eu trabalhar diretamente com a saída 'probabilidade' do modelo, otimizar o logloss (e provavelmente também fazer uma calibração de probabilidade ) onde - como se eu estivesse realmente usando-o como um classificador para tomar decisões difíceis que é um calss ou outro que eu deveria ir com AUC?
Dan
2
Se você só se preocupam com uma decisão certa ou errada -> uso AUC - se você se preocupa com o quanto "certo" ou "errado" você é -> uso logloss
Nikolas Rieble
Qualquer outra escolha de medida de desempenho não pode ser generalizada, mas depende do domínio / aplicativo.
Nikolas Rieble