Функция потерь и метрика оценки XGBoost
Я теперь запутался насчет функций потерь, используемых в XGBoost
, Вот как я смущен:
- у нас есть
objective
, которая является функцией потерь, должна быть минимизирована;eval_metric
: метрика, используемая для представления результатов обучения. Эти два абсолютно не связаны (если мы не рассматриваем такие, как только для классификацииlogloss
а такжеmlogloss
можно использовать какeval_metric
). Это правильно? Если я, то для классификации проблемы, как вы можете использоватьrmse
в качестве показателя производительности? - взять два варианта
objective
В качестве примера,reg:logistic
а такжеbinary:logistic
, Для классификаций 0/1 обычно двоичную логистическую потерю или перекрестную энтропию следует рассматривать как функцию потерь, верно? Итак, какой из двух вариантов предназначен для этой функции потерь, и какова ценность другой? Скажи еслиbinary:logistic
представляет функцию кросс-энтропийной потери, то, что делаетreg:logistic
делать? - В чем разница между
multi:softmax
а такжеmulti:softprob
? Используют ли они одну и ту же функцию потерь и просто различаются по формату вывода? Если так, то это должно быть то же самое дляreg:logistic
а такжеbinary:logistic
как хорошо, верно?
дополнение для 2-й задачи
скажем, функция потерь для задачи классификации 0/1 должна бытьL = sum(y_i*log(P_i)+(1-y_i)*log(P_i))
, Так что, если мне нужно выбрать binary:logistic
здесь или reg:logistic
разрешить использовать классификатор xgboost L
функция потери. Если это binary:logistic
тогда какая функция потери reg:logistic
использует?
2 ответа
"бинарный: логистика" использует -(y*log(y_pred) + (y-1)*(log(1-y_pred))
'reg:logistic' использует (y - y_pred)^2
Чтобы получить общую оценку ошибки, мы суммируем все ошибки и делим на количество выборок.
Вы можете найти это в основах. При взгляде на линейную регрессию VS Логистическая регрессия.
Линейная регрессия использует (y - y_pred)^2
как функция стоимости
Логистическая регрессия использует -(y*log(y_pred) + (y-1)*(log(1-y_pred))
как функция стоимости
Метрики оценки - это совсем другое. Они предназначены для оценки вашей модели. Они могут вас запутать, потому что логично использовать некоторые метрики оценки, которые совпадают с функцией потерь, например MSE
в проблемах регрессии. Однако в бинарных задачах не всегда целесообразно logloss
, Мой опыт заставил меня (в задачах классификации) вообще смотреть на AUC ROC
,
РЕДАКТИРОВАТЬ
согласно документации xgboost:
рег: линейный: линейная регрессия
рег: логистика: логистическая регрессия
двоичный: логистика: логистическая регрессия для двоичной классификации, выходная вероятность
Итак, я угадал:
reg: linear: как мы уже говорили, (y - y_pred)^2
рег: логистика -(y*log(y_pred) + (y-1)*(log(1-y_pred))
и округления прогнозов с 0,5 порога
бинарный: логистика простая -(y*log(y_pred) + (y-1)*(log(1-y_pred))
(возвращает вероятность)
Вы можете проверить это и посмотреть, будет ли это так, как я редактировал. Если так, я обновлю ответ, иначе я просто удалю его:<
- Да, функция потерь и метрика оценки служат двум различным целям. Функция потерь используется моделью для изучения взаимосвязи между входом и выходом. Метрика оценки используется для оценки того, насколько хороши выученные отношения. Вот ссылка на обсуждение оценки модели: https://scikit-learn.org/stable/modules/model_evaluation.html
- Я не уверен, что именно вы спрашиваете здесь. Вы можете уточнить этот вопрос?