xgboost xgb.dump树系数

时间:2015-09-15 14:50:35

标签: r xgboost

我这里有一个示例代码。

data(agaricus.train, package='xgboost')
train <- agaricus.train
bst <- xgboost(data = train$data, label = train$label, max.depth = 2,
eta = 1, nthread = 2, nround = 2,objective = "binary:logistic")
xgb.dump(bst, 'xgb.model.dump', with.stats = TRUE)

构建模型后,我将其打印为

booster[0]
0:[f28<-1.00136e-05] yes=1,no=2,missing=1,gain=4000.53,cover=1628.25
    1:[f55<-1.00136e-05] yes=3,no=4,missing=3,gain=1158.21,cover=924.5
        3:leaf=1.71218,cover=812
        4:leaf=-1.70044,cover=112.5
    2:[f108<-1.00136e-05] yes=5,no=6,missing=5,gain=198.174,cover=703.75
        5:leaf=-1.94071,cover=690.5
        6:leaf=1.85965,cover=13.25
booster[1]
0:[f59<-1.00136e-05] yes=1,no=2,missing=1,gain=832.545,cover=788.852
    1:[f28<-1.00136e-05] yes=3,no=4,missing=3,gain=569.725,cover=768.39
        3:leaf=0.784718,cover=458.937
        4:leaf=-0.96853,cover=309.453
    2:leaf=-6.23624,cover=20.4624

我有疑问:

  1. 据我所知,Gradient boost树对这些树的结果进行了平均处理。我怎样才能得到那些系数?

  2. 只是澄清一下。树预测的值是leaf = x,isn&#39;

  3. 谢谢。

1 个答案:

答案 0 :(得分:3)

Q1和Q2的综合答案:

xgboost的所有树叶分数系数为1.简单地将所有叶子分数相加。设总和为S. 然后在其上应用logistic(2级)函数: Pr(标签= 1)= 1 /(1 + exp(-S))

我已经对此进行了验证并用于生产系统。