Eu faria uma pergunta relacionada a este .
Encontrei um exemplo de como escrever a função de perda personalizada para o xgboost aqui :
loglossobj <- function(preds, dtrain) {
# dtrain is the internal format of the training data
# We extract the labels from the training data
labels <- getinfo(dtrain, "label")
# We compute the 1st and 2nd gradient, as grad and hess
preds <- 1/(1 + exp(-preds))
grad <- preds - labels
hess <- preds * (1 - preds)
# Return the result as a list
return(list(grad = grad, hess = hess))
}
A função de perda logística é
onde é probabilidades de log e é rótulos (0 ou 1).y
Minha pergunta é: como podemos obter gradiente (primeira derivada) simplesmente igual à diferença entre valores verdadeiros e probabilidades previstas (calculadas a partir de log-odds as preds <- 1/(1 + exp(-preds))
)?