Подтвердить что ты не робот

Разница между Objective и feval в xgboost

В чем разница между Objective и feval в xgboost в R? Я знаю, что это что-то очень фундаментальное, но я не могу точно определить их/их цель. Кроме того, что такое цель softmax при выполнении классификации нескольких классов?

4b9b3361

Ответ 1

Цель

Objective в xgboost - это функция ссылка

# user define objective function, given prediction, return gradient and second order gradient
# this is loglikelihood loss
logregobj <- function(preds, dtrain) {
  labels <- getinfo(dtrain, "label")
  preds <- 1/(1 + exp(-preds))
  grad <- preds - labels
  hess <- preds * (1 - preds)
  return(list(grad = grad, hess = hess))
}

Это критическая функция обучения, а модель xgboost не может быть обучена без ее определения. Objective функции непосредственно используются при разбиении на каждом node в каждом дереве.

feval

feval в xgboost не играет никакой роли в прямой оптимизации или обучении вашей модели. Вам даже не нужно тренироваться. Это не влияет на расщепление. Все, что он делает, это оценка вашей модели ПОСЛЕ того, как она тренировалась. Посмотрите пример пользовательского feval

evalerror <- function(preds, dtrain) {
  labels <- getinfo(dtrain, "label")
  err <- as.numeric(sum(labels != (preds > 0)))/length(labels)
  return(list(metric = "error", value = err))
}

Обратите внимание, что он просто возвращает имя (метрика) и оценку (значение). Обычно feval и Objective могут быть одинаковыми, но, возможно, нужный механизм подсчета немного отличается или не имеет производных. Например, люди используют logloss Objective для обучения, но создают AUC feval для оценки модели.

Кроме того, вы можете использовать feval, чтобы остановить вашу модель после тренировки, когда она перестает улучшаться. И вы можете использовать несколько функций feval для оценки вашей модели по-разному и наблюдать за ними.

Вам не нужна функция feval для обучения модели. Только оценить его и помочь ему прекратить обучение на ранней стадии.

Резюме:

Objective является основной рабочей лошадкой.

feval является помощником, позволяющим xgboost делать некоторые интересные вещи.

softmax - это функция Objective, которая обычно используется в классификации нескольких классов. Это гарантирует, что все ваши прогнозы суммируются до единицы и масштабируются с использованием экспоненциальной функции. softmax