logloss vs gini / auc

15

Przeszkoliłem dwa modele (klasyfikatory binarne przy użyciu h2o AutoML) i chcę wybrać jeden do użycia. Mam następujące wyniki:

 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

auci loglosskolumny są metryki cross-validation (tylko krzyż walidacja wykorzystuje dane szkolenie). ..._traini ..._validmetryki znajdują uruchamiając metryki poprzez szkolenia i walidacji modeli odpowiednio. Chcę użyć logloss_validalbo, gini_validaby wybrać najlepszy model.

Model 1 ma lepszą gini (tj. Lepszą AUC), ale model drugi ma lepszy loglog. Moje pytanie polega na tym, który wybrać, który moim zdaniem nasuwa pytanie, jakie są zalety / wady stosowania gini (AUC) lub logloss jako miernika decyzji.

Dan
źródło
1
Ten film zawiera ładne wyjaśnienie, dlaczego logloss jest preferowany, jeśli interesują cię prawdopodobieństwa, a nie tylko klasyfikacja. Należy pamiętać, że w przypadku klasyfikacji binarnej utrata logów jest równa punktowi Briera.
Dan

Odpowiedzi:

11

Podczas gdy AUC jest obliczane w odniesieniu do klasyfikacji binarnej ze zmiennym progiem decyzyjnym, logloss faktycznie bierze pod uwagę „pewność” klasyfikacji.

Dlatego, zgodnie z moim zrozumieniem, logloss pojęciowo wykracza poza AUC i jest szczególnie istotny w przypadkach z niezrównoważonymi danymi lub w przypadku nierównomiernie rozłożonego kosztu błędu (na przykład wykrycia śmiertelnej choroby).

Oprócz tej bardzo podstawowej odpowiedzi, możesz przyjrzeć się optymalizacji auc vs logloss w problemach z klasyfikacją binarną

Prosty przykład obliczenia loglossa i leżąca u jego podstaw koncepcja została omówiona w ostatnim pytaniu Funkcja Log Loss w scikit-learn zwraca różne wartości

Ponadto, bardzo dobry punkt został zrobiony w przepełnieniu stosu

Należy zrozumieć zasadniczą różnicę między AUC ROC a wskaźnikami „punktowymi”, takimi jak dokładność / precyzja itp. ROC jest funkcją progu. Biorąc pod uwagę model (klasyfikator), który wyświetla prawdopodobieństwo przynależności do każdej klasy, zwykle klasyfikujemy element do klasy o najwyższym wsparciu. Czasami jednak możemy uzyskać lepsze wyniki, zmieniając tę ​​regułę i wymagając, aby jedno wsparcie było 2 razy większe od drugiego, aby faktycznie zaklasyfikować je do danej klasy. Jest to często prawdziwe w przypadku niezrównoważonych zestawów danych. W ten sposób modyfikujesz wyuczony wcześniej klasy, aby lepiej pasował do twoich danych. ROC patrzy na „co by się stało, gdybym zmienił ten próg na wszystkie możliwe wartości”, a następnie AUC ROC oblicza całkę takiej krzywej.

Nikolas Rieble
źródło
Twój pierwszy link zawiera „AUC maksymalizuje zdolność modelu do rozróżnienia między klasami, podczas gdy utrata logiczna penalizuje rozbieżność między faktycznymi a szacowanymi prawdopodobieństwami” , więc w zasadzie pytam, jak wybrać te dwa cele? Czy chodzi o to, że jeśli pracuję bezpośrednio z wyjściem „prawdopodobieństwa” modelu, powinienem zoptymalizować utratę logarytmiczną (a następnie prawdopodobnie także przeprowadzić kalibrację prawdopodobieństwa ), tak jak w przypadku, gdy faktycznie używam tego jako klasyfikatora, aby podjąć trudną decyzję to jest jeden czy drugi powinienem iść z AUC?
Dan
2
Jeśli zależy ci tylko na właściwej lub złej decyzji -> skorzystaj z AUC - jeśli zależy ci na tym, jak bardzo jesteś „dobry” lub „zły” -> użyj logloss
Nikolas Rieble
Dalszego wyboru miary wydajności nie można uogólniać, ale raczej zależy ona od domeny / aplikacji.
Nikolas Rieble,