XGBoost决策树选择

时间:2019-03-21 22:48:12

标签: python decision-tree 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

我在xg_reg模型中创建了10棵树,并且可以通过在我的上一个代码中将n设置为等于树的索引来绘制其中的任意一棵。

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

1 个答案:

答案 0 :(得分:0)

  

我的问题是我如何知道哪棵树最能说明数据集?

XGBoost是梯度增强决策树(GBDT)的实现。粗略地说,GBDT是一棵树序列,每棵树都使用残差增强来改善对前一棵树的预测。因此,最能解释数据的树是第n - 1

您可以了解有关GBDT here

的更多信息
  

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

所有树都以相同的基本特征进行训练,它们仅在每次增强迭代时添加residuals。因此,您无法以这种方式确定最佳树。在video中,有一个关于残差的直观解释。