首页 > 解决方案 > XGBoost 决策树选择

问题描述

我有一个关于我应该从哪个决策树中选择的问题XGBoost

我将使用以下代码作为示例。

#import packages
import xgboost as xgb
import matplotlib.pyplot as plt

# create DMatrix
df_dmatrix = xgb.DMatrix(data = X, label = y)

# set up parameter dictionary
params = {"objective":"reg:linear", "max_depth":2}

#train the model
xg_reg = xgb.train(params = params, dtrain = df_dmatrix, num_boost_round = 10)

#plot the tree
xgb.plot_tree(xg_reg, num_trees = n) # my question related to here

我在模型中创建了 10 棵树,我可以通过在我的最后一个代码中设置等于树的索引xg_reg来绘制其中的任何一棵。n

我的问题是:我怎么知道哪棵树最能解释数据集?总是最后一个吗?还是我应该确定要在树中包含哪些特征,然后选择包含这些特征的树?

标签: pythondecision-treexgboost

解决方案


我的问题是我怎么知道哪棵树最好地解释了数据集?

XGBoost 是梯度提升决策树 (GBDT) 的实现。粗略地说,GBDT 是一系列树,每个树都使用残差提升来改进前一个的预测。所以最能解释数据的树是n - 1th。

您可以在此处阅读有关 GBDT的更多信息

还是我应该确定要在树中包含哪些特征,然后选择包含这些特征的树?

所有的树都使用相同的基本特征进行训练,它们只是residuals在每次提升迭代中添加。所以你无法以这种方式确定最好的树。在此视频中,对残差进行了直观的解释。


推荐阅读