logloss vs gini / auc


15

Ho addestrato due modelli (classificatori binari usando h2o AutoML) e voglio selezionarne uno da usare. Ho i seguenti risultati:

 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

le colonne auce loglosssono le metriche di convalida incrociata (la convalida incrociata utilizza solo i dati di addestramento). le metriche ..._traine ..._validsi trovano eseguendo rispettivamente le metriche di addestramento e convalida attraverso i modelli. Voglio usare il logloss_valido il gini_validper scegliere il modello migliore.

Il modello 1 ha un gini migliore (cioè una migliore AUC) ma il modello due ha una perdita di log migliore. La mia domanda è quale scegliere quale penso che pone la domanda, quali sono i vantaggi / gli svantaggi dell'utilizzo di gini (AUC) o logloss come metrica di decisione.


1
Questo video ha una bella spiegazione del perché si preferisce il logloss se si è interessati alle probabilità e non solo alla classificazione. Si noti che per la classificazione binaria, logloss è uguale al punteggio di brier.
Dan

Risposte:


11

Mentre l'AUC viene calcolata per quanto riguarda la classificazione binaria con una soglia di decisione variabile, logloss tiene effettivamente conto della "certezza" della classificazione.

Pertanto, a mio avviso, logloss va concettualmente al di là dell'AUC ed è particolarmente rilevante nei casi con dati squilibrati o in caso di costi di errore distribuiti in modo non equo (ad esempio, rilevamento di una malattia mortale).

Oltre a questa risposta molto semplice, potresti voler dare un'occhiata all'ottimizzazione di auc vs logloss nei problemi di classificazione binaria

Un semplice esempio di calcolo di logloss e il concetto sottostante è discusso in questa domanda recente La funzione Log Loss in scikit-learn restituisce valori diversi

Inoltre, è stato fatto un ottimo punto in StackOverflow

È necessario comprendere la differenza cruciale tra AUC ROC e metriche "puntuali" come accuratezza / precisione ecc. ROC è una funzione di una soglia. Dato un modello (classificatore) che genera la probabilità di appartenenza a ciascuna classe, classifichiamo solitamente l'elemento alla classe con il massimo supporto. Tuttavia, a volte possiamo ottenere punteggi migliori modificando questa regola e richiedendo che un supporto sia 2 volte più grande dell'altro per classificare effettivamente come data classe. Questo è spesso vero per i set di dati non bilanciati. In questo modo stai modificando il priore delle lezioni appreso per adattarlo meglio ai tuoi dati. ROC guarda "cosa accadrebbe se cambio questa soglia a tutti i possibili valori" e quindi AUC ROC calcola l'integrale di tale curva.


Il tuo primo link contiene "L'AUC massimizza la capacità del modello di discriminare tra le classi mentre il logloss penalizza la divergenza tra le probabilità effettive e stimate" , quindi in pratica mi chiedo come scegliere tra questi due obiettivi? È un caso se lavoro direttamente con l'output di "probabilità" del modello dovrei ottimizzare la perdita di log (e quindi probabilmente anche fare una calibrazione di probabilità ) dove-come se lo stessi effettivamente usando come classificatore per prendere una decisione difficile che è un calss o l'altro dovrei andare con AUC?
Dan

2
Se ti interessa solo una decisione giusta o sbagliata -> usa l'AUC - se ti importa di quanto "giusto" o "sbagliato" sei -> usa logloss
Nikolas Rieble

Ogni ulteriore scelta della misura delle prestazioni non può essere generalizzata, ma dipende piuttosto dal dominio / dall'applicazione.
Nikolas Rieble,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.