2016-05-12 4 views
0

Frage von xgboost xgb.dump tree coefficient Frage.Wie verwendet man xgboost R tree dump um zu berechnen oder Vorhersagen zu treffen?

Ich möchte speziell wissen, ob eta = 0,1 oder 0,01 wie wird die Wahrscheinlichkeitsrechnung von der angegebenen Antwort abweichen?

Ich möchte Vorhersagen mit dem Baum Dump machen.

Mein Code ist

#Define train label and feature frames/matrix 
y <- train_data$esc_ind 
train_data = as.matrix(train_data) 
trainX <- as.matrix(train_data[,-1]) 
param <- list("objective" = "binary:logistic", 
       "eval_metric" = "logloss", 
       "eta" = 0.5, 
       "max_depth" = 2, 
       "colsample_bytree" = .8, 
       "subsample" = 0.8, #0.75 
       "alpha" = 1 

) 

#Train XGBoost 
bst = xgboost(param=param, data = trainX, label = y, nrounds=2) 

trainX1 = data.frame(trainX) 
mpg.fmap = genFMap(trainX1, "xgboost.fmap") 
xgb.save(bst, "xgboost.model") 
xgb.dump(bst, "xgboost.model_6.txt",with.stats = TRUE, fmap = "xgboost.fmap") 

Der Baum sieht aus wie:

booster[0] 
0:[order.1<12.2496] yes=1,no=2,missing=2,gain=1359.61,cover=7215.25 
    1:[access.1<0.196687] yes=3,no=4,missing=4,gain=3.19685,cover=103.25 
     3:leaf=-0,cover=1 
     4:leaf=0.898305,cover=102.25 
    2:[team<6.46722] yes=5,no=6,missing=6,gain=753.317,cover=7112 
     5:leaf=0.893333,cover=55.25 
     6:leaf=-0.943396,cover=7056.75 
booster[1] 
0:[issu.1<6.4512] yes=1,no=2,missing=2,gain=794.308,cover=5836.81 
    1:[team<3.23361] yes=3,no=4,missing=4,gain=18.6294,cover=67.9586 
     3:leaf=0.609363,cover=21.4575 
     4:leaf=1.28181,cover=46.5012 
    2:[case<6.74709] yes=5,no=6,missing=6,gain=508.34,cover=5768.85 
     5:leaf=1.15253,cover=39.2126 
     6:leaf=-0.629773,cover=5729.64 

Wird der Koeffizient für alle Baumblatt Noten für xgboost 1 sein, wenn eta gewählt wird, weniger als 1?

+0

Bitte überprüfen Sie meine Antwort in den folgenden Link - kann nützlich sein - http://StackOverflow.com/Questions/39858916/xgboost-how-to-get-probabilities-of-class-from-xgb-dump-multisoftprob- objecti/40632862 # 40632862 – Run2

Antwort

0

Eigentlich war das praktisch, was ich früher übersehen habe.

Anhand der obigen Baumstruktur kann die Wahrscheinlichkeit für jedes Trainingsbeispiel ermittelt werden.

Die Parameterliste war:

param <- list("objective" = "binary:logistic", 
       "eval_metric" = "logloss", 
       "eta" = 0.5, 
       "max_depth" = 2, 
       "colsample_bytree" = .8, 
       "subsample" = 0.8, 
       "alpha" = 1) 

für die Instanz in Blatt Booster [0], Blatt: 0-3; die Wahrscheinlichkeit wird exp (-0)/(1 + exp (-0)) sein.

Und für Booster [0], Blatt: 0-3 + Booster [1], Blatt: 0-3; die Wahrscheinlichkeit ist exp (0 + 0.609363)/(1 + exp (0 + 0.609363)).

Und so weiter wie man die Anzahl der Iterationen erhöht.

Ich passte diese Werte mit den vorhergesagten Wahrscheinlichkeiten von R an, die sich in 10^(- 7) unterscheiden, vermutlich aufgrund der Gleitkomma-Einschränkung der Blattqualitätsbewertungen.

Diese Antwort kann eine Lösung auf Produktionsebene liefern, wenn die trainierten Boosted-Bäume von R in verschiedenen Umgebungen zur Vorhersage verwendet werden.

Jeder Kommentar dazu wird sehr geschätzt.

Verwandte Themen