Функция потерь и метрика оценки XGBoost - PullRequest
0 голосов
/ 29 ноября 2018

Теперь я запутался в функциях потерь, используемых в XGBoost.Вот как я чувствую себя сбитым с толку:

  1. у нас есть objective, то есть функцию потерь необходимо минимизировать;eval_metric: показатель, используемый для представления результатов обучения.Эти два абсолютно не связаны (если мы не рассматриваем такие, как для классификации, только logloss и mlogloss могут использоваться как eval_metric).Это правильно?Если да, то для задачи классификации, как вы можете использовать rmse в качестве метрики производительности?
  2. взять два варианта для objective в качестве примера, reg:logistic и binary:logistic.Для классификаций 0/1 обычно двоичную логистическую потерю или перекрестную энтропию следует рассматривать как функцию потерь, верно?Итак, какой из двух вариантов предназначен для этой функции потерь, и какова ценность другой?Скажем, если binary:logistic представляет функцию кросс-энтропийной потери, то что делает reg:logistic?
  3. В чем разница между 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 ]

0 голосов
/ 29 ноября 2018

«двоичный: логистика» использует -(y*log(y_pred) + (y-1)*(log(1-y_pred))

«рег: логистика» использует (y - y_pred)^2

Чтобы получить общую оценку ошибки, мы суммируем все ошибки и делим на количество выборок.


Вы можете найти это в основах.При взгляде на линейную регрессию VS Логистическая регрессия.

Линейная регрессия использует (y - y_pred)^2 в качестве функции стоимости

Логистическая регрессия использует -(y*log(y_pred) + (y-1)*(log(1-y_pred)) в качестве функции стоимости


Метрики оценки - это совсем другое.Они предназначены для оценки вашей модели.Они могут вас запутать, потому что логично использовать некоторые метрики оценки, которые совпадают с функцией потерь, например MSE в задачах регрессии.Однако в бинарных задачах не всегда разумно смотреть на logloss.Мой опыт заставил меня (в задачах классификации) вообще смотреть на AUC ROC.

EDIT


в соответствии с документацией xgboost:

reg:линейный: линейная регрессия

рег: логистика: логистическая регрессия

двоичный: логистика: логистическая регрессия для двоичной классификации, выходная вероятность

Итак, я предполагаю:

reg: linear: как мы уже говорили, (y - y_pred)^2

reg: логистика -(y*log(y_pred) + (y-1)*(log(1-y_pred)) и округление прогнозов с 0,5 порога

двоичное: логистика простое -(y*log(y_pred) + (y-1)*(log(1-y_pred))(возвращает вероятность)

Вы можете проверить это и посмотреть, будет ли это так, как я редактировал.Если да, я обновлю ответ, в противном случае я просто удалю его: <</p>

0 голосов
/ 29 ноября 2018
  1. Да, функция потерь и метрика оценки служат двум различным целям.Функция потерь используется моделью для изучения взаимосвязи между входом и выходом.Метрика оценки используется для оценки того, насколько хороши выученные отношения.Вот ссылка на обсуждение оценки модели: https://scikit -learn.org / stable / modules / model_evaluation.html
  2. Я не совсем уверен, что вы спрашиваете здесь.Вы можете уточнить этот вопрос?
...