logloss vs gini / auc

15

Я обучил две модели (двоичные классификаторы с использованием h2o AutoML) и хочу выбрать одну для использования. У меня есть следующие результаты:

 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

aucи loglossстолбцы метрики кросс-валидации (кросс проверки использует только обучающие данные). ..._trainи ..._validметрики найдены путем запуска метрик обучения и проверок через модель соответственно. Я хочу использовать logloss_validили, gini_validчтобы выбрать лучшую модель.

Модель 1 имеет лучшую Джини (то есть лучше AUC), но модель 2 имеет лучшую потерю логов. Мой вопрос заключается в том, какой из них выбрать, который, я думаю, напрашивается на вопрос, каковы преимущества / недостатки использования либо gini (AUC), либо logloss в качестве метрики решения.

Дэн
источник
1
Это видео имеет хорошее объяснение того, почему logloss предпочтительнее, если вы заинтересованы в вероятностях, а не только в классификации. Обратите внимание, что для бинарной классификации logloss равен оценке Brier.
Дан

Ответы:

11

Принимая во внимание, что AUC вычисляется относительно двоичной классификации с изменяющимся порогом принятия решения, logloss фактически принимает во внимание «определенность» классификации.

Поэтому, насколько я понимаю, logloss концептуально выходит за рамки AUC и особенно актуален в случаях с несбалансированными данными или в случае неравномерно распределенных затрат на ошибки (например, обнаружение смертельного заболевания).

В дополнение к этому основному ответу вы можете взглянуть на оптимизацию auc против logloss в задачах двоичной классификации.

Простой пример вычисления logloss и лежащая в его основе концепция обсуждается в этом недавнем вопросе. Функция Log Loss в scikit-learn возвращает разные значения

Кроме того, очень хороший момент был сделан в stackoverflow

Необходимо понимать принципиальное различие между ROC AUC и «точечными» метриками, такими как точность / точность и т. Д. ROC является функцией порогового значения. Учитывая модель (классификатор), которая выводит вероятность принадлежности к каждому классу, мы обычно относим элемент к классу с наибольшей поддержкой. Однако иногда мы можем получить лучшие результаты, изменив это правило и потребовав, чтобы одна поддержка была в 2 раза больше другой, чтобы фактически классифицировать ее как данный класс. Это часто верно для несбалансированных наборов данных. Таким образом, вы на самом деле изменяете изученный арифметический курс, чтобы лучше соответствовать вашим данным. ROC смотрит на «что произойдет, если я изменю этот порог на все возможные значения», а затем AUC ROC вычисляет интеграл такой кривой.

Николас Рибл
источник
Ваша первая ссылка содержит «AUC максимизирует способность модели проводить различие между классами, в то время как потеря логики наказывает расхождение между фактической и предполагаемой вероятностями» , поэтому я в основном спрашиваю, как выбрать между этими двумя целями? Является ли это случаем, если я работаю напрямую с выводом «вероятности» модели, я должен оптимизировать logloss (а затем, вероятно, также выполнить калибровку вероятности ), где-как будто я на самом деле использую его в качестве классификатора, чтобы принять трудное решение, что это один calss или другой я должен пойти с AUC?
Дан
2
Если вы просто заботитесь о правильном или неправильном решении -> используйте AUC - если вам важно, насколько вы «правильны» или «неправильны» -> используйте logloss
Nikolas Rieble
Любой дальнейший выбор показателя производительности не может быть обобщен, а скорее зависит от области / приложения.
Николас Рибл