xgboost CV和树的数量

时间:2017-08-26 05:24:27

标签: python machine-learning xgboost

我正在阅读文章here,但没有完全理解有关函数CV和参数"树数"的详细信息。在xgboost。

假设我们从功能和目标值的数据框开始。简历在每一轮做什么?如果CV结果有500行(即有500个决策树),那么每棵树是如何构建的? 500棵树如何合并产生一个对数丢失数?

如果我们可以从CV函数中获得单个预测,为什么我们还需要XGBClassifier.fit来生成模型(因此是丢失数)?

谢谢。

2 个答案:

答案 0 :(得分:2)

Xgboost是一种梯度增强方法,因此它在每次迭代中添加树以提高预测精度。请参阅本文中的介绍,了解渐变增强的工作原理:https://www.analyticsvidhya.com/blog/2016/02/complete-guide-parameter-tuning-gradient-boosting-gbm-python/。这应该解释树木的构造方式。

当您添加越来越多的树时,预测准确度会提高,直到您开始过度拟合,此时预测准确度会降低。所以你需要找到最佳数量的树木。

从一开始就猜测这个数字基本上是不可能的。这就是xgboost.cv的用途。它将您的训练数据划分为两个子集。第一个子集用于训练xgboost,第二个子集用作验证集。在每次迭代(添加一个额外的树)之后,xgboost会计算新的验证错误。因此,xgboost能够检测何时开始过度拟合(当验证错误开始增加时)。这将为您提供给定超参数集的最佳树数。

请注意,xgboost.cv返回评估历史记录(列表),而xgboost.train返回助推器。

另请注意,xgboost.fit是sklearn包装器的一部分(所以最好不要将它比作xgboost.cv,它是xgboost学习API的一部分)。

最后要注意:您不需要xgboost.cv来查找最佳树数。您也可以使用“early_stopping_rounds”设置运行xgboost.train。

如果您有任何问题,请在评论中告诉我。

答案 1 :(得分:0)

Python xgb.cvxgb.evals_result_返回训练和验证迭代期间所有指标的字典。您可以使用它们来绘制它们,并查看它们何时过度拟合。