Farei una domanda relativa a questa .
Ho trovato un esempio di scrittura della funzione di perdita personalizzata per xgboost qui :
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))
}
La funzione di perdita logistica è
dove è probabilità di log e y è etichette (0 o 1).
La mia domanda è: come possiamo ottenere un gradiente (prima derivata) semplicemente uguale alla differenza tra valori reali e probabilità previste (calcolati dalle probabilità del registro come preds <- 1/(1 + exp(-preds))
)?