Was ist der Unterschied zwischen Objective und Feval in Xgboost in R? Ich weiß, das ist etwas sehr Grundlegendes, aber ich kann sie nicht genau definieren. Was ist ein Softmax-Ziel, während eine Mehrklassenklassifizierung durchgeführt wird?Unterschied zwischen Objective und Feval in xgboost
Antwort
Ziel
Objective
in xgboost
ist die function, die der Lernalgorithmus versuchen und zu optimieren. Per Definition muss es in der Lage sein, 1. (Gradienten) und 2. (hessische) Derivate w.r.t. die Vorhersagen bei einer gegebenen Trainingsrunde.
Ein benutzerdefinierte Objective
Funktion Beispiel: 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))
}
Dies ist die kritische Funktion zur Ausbildung und kein xgboost
Modell ohne eine Definition von geschult werden kann. Objective
Funktionen werden direkt bei der Aufteilung auf jeden Knoten in jedem Baum verwendet.
feval
feval
in xgboost
keine Rolle spielt in direkt zu optimieren oder Ihr Modell zu trainieren. Du brauchst nicht einmal einen zum trainieren. Es wirkt sich nicht auf das Teilen aus. Alles, was es tut, ist Ihr Modell zu bewerten, nachdem es trainiert hat. Ein Blick auf ein Beispiel für eine benutzerdefinierte feval
evalerror <- function(preds, dtrain) {
labels <- getinfo(dtrain, "label")
err <- as.numeric(sum(labels != (preds > 0)))/length(labels)
return(list(metric = "error", value = err))
}
Hinweis, es gibt nur einen Namen (metrisches System) und einen Score (Wert). In der Regel die feval
und objective
könnte die gleiche sein, aber vielleicht der Scoring-Mechanismus, den Sie wollen, ist ein wenig anders, oder hat keine Derivate. Zum Beispiel verwenden Menschen den Logloss objective
zum Trainieren, aber erstellen eine AUC feval
, um das Modell zu bewerten.
Außerdem können Sie das Modell feval
stoppen, sobald es aufhört zu verbessern. Und Sie können mehrere feval
Funktionen verwenden, um Ihr Modell auf verschiedene Arten zu bewerten und sie alle zu beobachten.
Sie benötigen keine feval
Funktion, um ein Modell zu trainieren. Nur um es zu bewerten und ihm zu helfen, früh mit dem Training aufzuhören.
Zusammenfassung:
Objective
ist das wichtigste Zugpferd.
feval
ist ein Helfer, um xgboost
einige coole Dinge zu tun.
softmax
ist eine objective
-Funktion, die häufig in der Mehrklassenklassifizierung verwendet wird. Es stellt sicher, dass alle Ihre Vorhersagen eins ergeben und mithilfe der Exponentialfunktion skaliert werden. softmax