2016-05-12 17 views
0

質問をxgboost xgb.dump tree coefficientから受け取ります。xgboost Rツリーダンプを使用して予測を行う方法

私は、具体的には、η= 0.1または0.01であるかどうかを知りたいと思います。確率計算は、提供される回答とどう違うのですか?

ツリーダンプを使用して予測を行いたいとします。

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 

イータが1未満を選択したときにxgboostためのすべてのツリーの葉のスコアのための係数は1になります。

私のコードは、ツリーのように見える

#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") 

のですか?

+0

私の答えを以下のリンクで確認してください - 役に立つかもしれません - http://stackoverflow.com/questions/39858916/xgboost-how-to-get-probabilities-of-class-from-xgb-dump-multisoftprob-オブジェクト/ 40632862#40632862 – Run2

答えて

0

実際これは私が先に見落とした実用的なものでした。

上記のツリー構造を使用すると、各トレーニング例の確率を見つけることができます。

パラメータリストは次の通りであった:葉ブースタに設定たとえば

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

[0]、リーフ:0-3。確率はexp(-0)/(1 + exp(-0))となる。

ブースター[0]の場合、リーフ:0-3 +ブースター[1]、リーフ:0-3。確率はexp(0 + 0.609363)/(1 + exp(0 + 0.609363))になります。

このように、反復回数が増えるにつれて、

私はこれらの値を10 ^( - 7)で異なるRの予測確率とマッチさせました。おそらく、リーフ品質スコアの浮動小数点縮小に起因します。

この回答は、Rの訓練されたブーストツリーが異なる環境で予測に使用されている場合、生産レベルのソリューションを提供します。

これに関するご意見は高く評価されます。

関連する問題