如何知道在 XGBoost 中创建的树的数量

kan*_*nam 7 python random-forest xgboost

我有一个关于 XGBoost 的问题。

你知道如何知道 XGBoost 中创建的树的数量吗?与 RandomForest 由模型制作者决定制作多少棵树不同,XGBoost 基本上会继续创建树,直到损失函数达到某个数字。所以我想知道这个。

谢谢你。

Ome*_*erB 14

它有点歪,但我目前正在做的是dump-ing 模型(XGBoost 生成一个列表,其中每个元素都是单个树的字符串表示),然后计算列表中有多少元素:

# clf is a XGBoost model fitted using the sklearn API
dump_list = clf.get_booster().get_dump()
num_trees = len(dump_list)
Run Code Online (Sandbox Code Playgroud)


Myk*_*vyi -2

这是由您作为用户控制的。如果您使用本机训练 API,那么这是由(默认为 10)控制的,请参阅此处的num_boost_round文档

\n\n
\n

num_boost_round (int) \xe2\x80\x93 提升迭代次数。

\n
\n\n

如果您使用 sklearn API,那么这是由(默认为 100)控制的,请参阅此处的n_estimators文档

\n\n
\n

n_estimators : int\n 适合的提升树数量。

\n
\n\n

唯一需要注意的是,这是可以容纳的最大树数如果您设置提前停止标准,我不确定你是否使用它。

\n

  • @Mykhalio - 还有其他影响。例如,在多类问题中,XGBoost 为每个类创建单独的树,因此通过 3 个类和 10 轮提升,您可能会得到 30 棵树。总之,该参数既不能用作上限,也不能用作下限。 (3认同)