Qual è la differenza tra Objective e feval in xgboost in R? So che questo è qualcosa di molto fondamentale, ma non sono in grado di definirli esattamente/il loro scopo. Inoltre, qual è l'obiettivo di softmax, mentre si effettua la classificazione multi-classe?Differenza tra Objective e feval in xgboost
risposta
Obiettivo
Objective
nel xgboost
è la function cui l'algoritmo di apprendimento cercherà di ottimizzare. Per definizione, deve essere in grado di creare derivati 1a (gradiente) e 2a (hessiana) con un numero le previsioni in un determinato round di allenamento.
Un'usanza Objective
funzione di esempio: link
# 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))
}
Questa è la funzione fondamentale per la formazione e nessun modello xgboost
può essere addestrato senza definire uno. Le funzioni Objective
vengono utilizzate direttamente nella divisione di ogni nodo in ogni albero.
feval
feval
in xgboost
gioca alcun ruolo nella ottimizzazione o di formazione il vostro modello direttamente. Non hai nemmeno bisogno di uno per allenarsi. Non ha impatto sulla divisione. Tutto ciò che fa è segnare il tuo modello DOPO che si è allenato. Uno sguardo ad un esempio di una consuetudine feval
evalerror <- function(preds, dtrain) {
labels <- getinfo(dtrain, "label")
err <- as.numeric(sum(labels != (preds > 0)))/length(labels)
return(list(metric = "error", value = err))
}
Avviso, semplicemente restituisce un nome (metrica) e un punteggio (valore). Tipicamente lo feval
e lo objective
potrebbero essere uguali, ma forse il meccanismo di punteggio che si desidera è un po 'diverso o non ha derivati. Ad esempio, le persone usano il logloss objective
per allenarsi, ma creano un AUC feval
per valutare il modello.
Inoltre, è possibile utilizzare feval
per interrompere l'allenamento del modello una volta che si è interrotto. E puoi usare più funzioni feval
per segnare il tuo modello in modi diversi e osservarli tutti.
Non è necessaria la funzione feval
per addestrare un modello. Solo per valutarlo e aiutarlo a smettere di allenarsi presto.
Sommario:
Objective
è il cavallo di battaglia principale.
feval
è un aiuto per consentire a xgboost
di fare cose interessanti.
softmax
è una funzione objective
comunemente utilizzata nella classificazione multi-classe. Assicura che tutte le tue previsioni sommano a una, e sono ridimensionate usando la funzione esponenziale. softmax