【发布时间】:2018-08-17 16:31:18
【问题描述】:
我使用Python 3.6.3 中的xgboost 0.6 包安装了一个极端梯度提升模型(在macOS Sierra 10.12.6 上运行)。当我检查树的转储时,我注意到许多树不包含任何分裂 - 它们只是单个叶节点:
params={'colsample_bylevel':0.25,'gamma':3,'learning_rate':0.2,'max_depth':2,'n_estimators':250,'reg_alpha':0.5,'reg_lambda':3,'subsample':0.5}
model = XGBClassifier(**params, seed=12345, nthread=1, silent=True)
model.fit(X, y) # X and y are numpy arrays (13 predictors and an outcome)
tree_dump = model.get_booster().get_dump()
tree_dump[0]
Out[765]: '0:leaf=-0.387394\n'
tree_dump[1]
Out[766]: '0:leaf=-0.322484\n'
tree_dump[2]
Out[767]: '0:leaf=-0.285089\n'
tree_dump[3]
Out[768]: '0:leaf=-0.26167\n'
tree_dump[4]
Out[769]: '0:leaf=-0.240752\n'
tree_dump[5]
Out[770]: '0:leaf=-0.226565\n'
tree_dump[6]
Out[771]: '0:[f0<6.28879] yes=1,no=2,missing=1\n\t1:[f5<6.08075] yes=3,no=4,missing=3\n\t\t3:leaf=-0.21372\n\t\t4:leaf=0.00931895\n\t2:leaf=-0\n'
正如您在上面看到的,前 6 棵树只是叶子。
这种行为正常吗?如果是这样,拥有多个单叶树的意义何在?当然,这些都可以减少为 1 棵单左树吗?
【问题讨论】:
标签: python-3.x xgboost