优秀的编程知识分享平台

网站首页 > 技术文章 正文

XGBoost介绍(xgboost中文名是什么)

nanyue 2024-10-08 05:40:37 技术文章 12 ℃

1.介绍

随机森林的方法是通过对多个决策树的预测求平均值来获得比单个决策树更好的性能。

我们把随机森林方法称为“集成方法”(ensemble methods)。根据定义,集成方法结合了几个模型的预测(例如,在随机森林的情况的几个树)。gradient boosting是另一种集成方法。

gradient boosting是一种通过循环将模型迭代添加到集合中的方法。

它首先用一个模型初始化集合,这个模型的预测可能相当幼稚(即使它的预测非常不准确,但随后加入到集合中也会解决这些错误。)

然后,我们开始循环:

  • 首先,我们使用当前集合为数据集中的每个观测值生成预测。为了进行预测,我们将集合中所有模型的预测相加。
  • 这些预测用于计算损失函数(例如,均方误差)。
  • 然后,我们使用损失函数来拟合一个新的模型,该模型将被添加到集合中。具体来说,我们确定模型参数,以便将此新模型添加到集合中将减少损失(旁注:“gradient boosting”中的“梯度”指的是我们将使用损失函数的梯度下降来确定这个新模型中的参数。)
  • 最后,我们将新模型加入到集成中,并且。。。
  • ... 重复!


本例使用XGBoost库。XGBoost是extreme gradient boosting的缩写,它是gradient boosting的一个实现,具有几个额外的特性,主要关注性能和速度(Scikit-learn有另一个版本的gradient boosting,但XGBoost有一些技术优势。)

2.例子




3.调参

XGBoost有几个参数可以显著影响精确度和训练速度。以下列举了一些参数:

(1)n_estimators

n_estimators指定了上述建模周期的次数。它等于我们在集合中包含的模型的数量。

过低的值会导致欠拟合,从而导致对训练数据和测试数据的预测都不准确。

过高的值会导致过拟合,这会导致对训练数据的准确预测,但对测试数据的预测不准确(这是我们关心的)。

典型值范围为100-1000,但这在很大程度上取决于下面讨论的learning_rate参数。

(2)early_stopping_rounds

early_stopping_rounds提供了一种自动找到n_estimators的理想值的方法。当验证分数停止改善时,提前停止会导致模型停止迭代。明智的做法是,为n_estimators设置一个高值,然后使用early_stopping_rounds来找到停止迭代的最佳时间。

由于随机性有时会导致单轮验证分数没有提高,因此需要指定一个数字。设置early_stopping_rounds=5是一个合理的选择。在这种情况下,我们在连续5轮验证分数下降后停止。

当使用early_stopping_rounds时,还需要留出一些数据来计算验证分数-这是通过设置eval_set参数来完成的。

(3)learning_rate

我们不需要简单地将每个组件模型的预测相加,而是将每个模型的预测乘以一个小数字(称为learning_rate),然后再将它们相加。

这意味着我们添加到集合中的每一棵树对我们的帮助更少。因此,我们可以在不过度拟合的情况下为n_estimators设置一个更高的值。如果使用提前停止,将自动确定适当的树数。

一般来说,较小的学习率和大量的估计器将产生更精确的XGBoost模型,尽管由于该模型在整个周期中进行了更多的迭代,因此它也需要更长的时间来训练。默认情况下,XGBoost将learning_rate设置为0.1

(4)n_jobs

在考虑运行时的大型数据集上,可以使用并行性更快地构建模型。通常将参数n_jobs设置为机器上的内核数。在较小的数据集上,这将无济于事。

由此产生的模型不会更好,因此对拟合时间进行微观优化通常只会分散注意力。但是,它在大型数据集中很有用,否则在fit命令执行期间会花费很长时间等待。


4.总结

XGBoost是处理标准表格数据的领先软件库(存储在DataFrames中的数据类型,而不是图像和视频等的数据类型)。通过仔细的参数调整,可以训练出高精度的模型。

Tags:

最近发表
标签列表