2015-12-09 13 views

Antwort

34

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

Verwandte Themen