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