【问题标题】:XGBoost decision tree selectionXGBoost 决策树选择
【发布时间】:2019-08-12 21:28:40
【问题描述】:

我有一个关于我应该从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 设置为等于树的索引来绘制其中的任何一棵。

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

【问题讨论】:

    标签: python decision-tree xgboost


    【解决方案1】:

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

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

    您可以阅读更多关于 GBDT here

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

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

    【讨论】:

    • 谢谢。那么,我们让模型迭代的轮次越多,树就越好,这是真的吗?所以我们需要考虑在训练模型所花费的时间和模型的准确性之间进行权衡。
    • 不不正确。如果您在一段时间后继续训练,您将开始过度拟合,并且您的模型将失去预测能力,因为它在泛化方面变得越来越差。你可以在这里阅读更多内容en.wikipedia.org/wiki/Overfitting
    猜你喜欢
    • 2018-12-21
    • 2016-02-23
    • 2021-01-02
    • 2019-01-28
    • 2018-08-26
    • 2012-05-06
    • 2018-08-18
    • 2020-09-16
    • 2018-01-12
    相关资源
    最近更新 更多