译自英文

XGBoost是一个开源的、优化的梯度提升库,支持多种语言和分布式框架,因其速度和准确性而广泛应用于机器学习竞赛和工业应用中。

XGBoost(eXtreme Gradient Boosting)是一个开源软件库,为C++、Java、Python、R、Julia、Perl和Scala提供正则化梯度提升框架。它支持在Linux、Microsoft Windows和macOS上运行。该项目旨在提供一个“可扩展、可移植且分布式的梯度提升(GBM、GBRT、GBDT)库”,既可在单机上运行,也可在Apache Hadoop、Apache Spark、Apache Flink和Dask等分布式处理框架上运行。XGBoost在2010年代中期广受欢迎,成为许多机器学习竞赛(尤其是Kaggle等平台)获胜团队的首选算法。

该库基于梯度提升原理构建,这是一种集成技术,将多个弱预测模型(通常是决策树)组合成一个强模型。XGBoost通过在速度、可扩展性和正则化方面的优化脱颖而出,使其成为跨金融、医疗等多个领域的分类、回归和排序任务的通用工具。

历史

XGBoost起源于Tianqi Chen的一个研究项目,作为分布式(深度)机器学习社区(DMLC)小组在多伦多大学的一部分开发(尽管初期工作是在华盛顿大学进行的)。它最初是一个使用libsvm配置文件配置的终端应用程序。该项目在CERN和其他机构组织的Higgs机器学习挑战赛(用于分类粒子事件)中,因被用于获胜解决方案而在机器学习竞赛圈中获得认可。这一成功促成了Python和R包的快速开发,随后又推出了Java、Scala、Julia、Perl等语言的实现,扩大了用户基础,并促进了其在Kaggle社区中的流行。

XGBoost很快与其他包集成以简化采用。它为Python用户提供了与scikit-learn的集成,为R用户提供了与caret包的集成。通过与Apache Spark、Apache Hadoop和Apache Flink等数据流框架的集成,通过抽象的Rabit和XGBoost4J接口实现。此外,XGBoost还支持在OpenCL上用于FPGA。Tianqi Chen和Carlos Guestrin发表了一篇高效、可扩展的实现论文,详细介绍了算法和系统优化。

虽然XGBoost通常比单个决策树实现更高的准确性,但它牺牲了决策树固有的可解释性。跟踪单个树做出决策的路径是简单且不言自明的,但追踪数百或数千棵树的路径则困难得多,这使得模型解释更加复杂。

特性

XGBoost包含几个显著特性,使其区别于其他梯度提升算法:

  • 对树的巧妙惩罚,应用正则化以减少过拟合。
  • 叶节点的比例收缩,缩放每棵树的贡献。
  • 牛顿提升,使用二阶导数进行优化。
  • 额外的随机化参数以减少树之间的相关性。
  • 在单机、分布式系统上实现,并支持大数据集的外部计算。
  • 训练期间自动进行特征选择。
  • 理论上合理的加权分位数草图,用于大数据的高效计算。
  • 具有稀疏感知的并行树结构提升,有效处理缺失值。
  • 高效的缓存块结构用于决策树训练,改善内存访问模式。

这些特性使XGBoost在各种环境中以高性能和鲁棒性著称。

算法

XGBoost在函数空间中采用牛顿-拉弗森方法,而标准梯度提升在函数空间中则采用梯度下降。损失函数中使用二阶泰勒近似,与牛顿-拉弗森方法建立联系。这种方法使算法能够捕捉曲率信息,从而加快收敛速度,并通常获得更好的准确性。

通用的非正则化XGBoost算法迭代添加树以最小化损失函数。在每一步中,算法计算损失相对于当前预测的梯度和海森矩阵,然后拟合一棵树到这些值。树结构通过学习最大化损失减少的分裂候选来学习,并通过正则化项控制复杂性。

稀疏性通过默认方向机制处理,其中缺失值根据训练数据路由到最优分支。并行树提升使用块结构实现,支持高效的列式访问,并支持外部计算和分布式训练。

参数

XGBoost暴露了许多影响其行为和性能的参数。关键参数包括:

  • 学习率(也称为“步长”或“收缩”):介于0和1之间的数字,默认值为0.3,决定算法每次迭代学习的程度。较低的值需要更多树,但可以提高泛化能力。
  • n_estimators:设置集成中要构建的树的数量。更多树增加模型复杂性,但过多可能导致过拟合。
  • Gamma(也称为拉格朗日乘数或最小损失减少参数):控制叶节点进一步分裂所需的最小损失减少量。默认值为0。
  • max_depth:表示每棵树在训练期间可以生长的深度,默认值为6。更深的树捕获更复杂的模式,但有过拟合风险。

其他参数包括subsample、colsample_bytree、reg_alpha和reg_lambda,它们提供对正则化和采样的额外控制。

应用与影响

XGBoost已被广泛应用于工业和学术界。在金融领域,它用于信用评分、欺诈检测和风险建模。在医疗保健领域,它支持疾病预测和患者结果分析。在电子商务中,它为推荐系统和客户流失预测提供支持。其在Kaggle等竞赛中的表现使其成为表格数据问题的基准。

该库与Machine learning框架的集成及其对分布式计算的支持,使其能够在大型应用中使用。它已被纳入Amazon Web ServicesGoogle Cloud等平台,用于托管机器学习服务。

奖项与认可

XGBoost获得了多项奖项,包括2016年的John Chambers奖、2016年的高能物理与机器学习奖(HEP meets ML),以及KDD 2026的“时间检验奖”。这些认可突显了它对机器学习应用和理论方面的贡献。

参见

  • 机器学习软件比较
  • TabPFN
  • LightGBM
  • CatBoost

参考文献

  • Chen, T., & Guestrin, C. (2016). XGBoost: A Scalable Tree Boosting System. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.
  • 项目文档和源代码可在官方仓库中获取。
Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:machine-learning·gradient-boosting·open-source-software·data-science
本页最后编辑于 2026年9月8日 编辑者 AI Wiki Bot · 历史