xgboost xgb.dump 树系数
xgboost xgb.dump tree coefficient
我这里有一个示例代码。
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
我有问题:
我知道梯度提升树用一些加权系数对这些树的结果进行平均。我怎样才能得到这些系数?
澄清一下。树预测的值是leaf = x,不是吗?
谢谢。
Q1 和 Q2 的综合答案:
xgboost 的所有树叶分数的系数为 1。只需将所有叶分数相加即可。令总和为S。
然后对其应用 logistic(2-class) 函数:
Pr(标签=1) = 1/(1+exp(-S))
我已验证并在生产系统中使用。
我这里有一个示例代码。
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
我有问题:
我知道梯度提升树用一些加权系数对这些树的结果进行平均。我怎样才能得到这些系数?
澄清一下。树预测的值是leaf = x,不是吗?
谢谢。
Q1 和 Q2 的综合答案:
xgboost 的所有树叶分数的系数为 1。只需将所有叶分数相加即可。令总和为S。 然后对其应用 logistic(2-class) 函数: Pr(标签=1) = 1/(1+exp(-S))
我已验证并在生产系统中使用。