XGBoost 是一种最近在应用机器学习和 Kaggle 结构化或表格数据竞赛中占据主导地位的算法。
XGBoost 是为速度和性能而设计的梯度提升决策树的实现。
在这篇文章中,您将了解 XGBoost 并简要介绍它是什么、它来自哪里以及如何了解更多信息。
看完这篇文章你会知道:
-
XGBoost 是什么以及项目的目标。
-
为什么 XGBoost 必须成为您的机器学习工具包的一部分。
-
您可以在这里了解更多信息,以便在您的下一个机器学习项目中开始使用 XGBoost。
什么是 XGBoost?
——陈天启在 Quora,回答“ R gbm(梯度提升机)和xgboost(极限梯度提升)有什么区别?” 时解释道:“
XGBoost全称是eXtreme Gradient Boosting
不过,xgboost 这个名字实际上是指推动提升树算法计算资源极限的工程目标。这就是许多人使用 xgboost 的原因。”
XGBoost是由陈天奇创建的梯度提升机的实现,现在有许多开发人员的贡献。它属于分布式机器学习社区或DMLC保护下的更广泛的工具集合,他们也是流行的mxnet 深度学习库的创建者。
陈天启在 XGBoost进化背后的故事和教训一文中,提供了一个简短而有趣的关于 XGBoost 创建的背景故事。
XGBoost 是一个软件库,您可以下载并安装在您的机器上,然后从各种界面访问。具体来说,XGBoost 支持以下主要接口:
-
命令行界面 (CLI)。
-
C++(编写库的语言)。
-
Python 接口以及 scikit-learn 中的模型。
-
R 接口以及 caret 包中的模型。
-
Julia。
-
Java 和 JVM 语言(如 Scala)和平台(如 Hadoop)。
XGBoost 功能
该库专注于计算速度和模型性能,因此几乎没有多余的装饰。尽管如此,它确实提供了许多高级功能。
模型特点
该模型的实现支持 scikit-learn 和 R 实现的功能,并添加了正则化等新功能。支持三种主要形式的梯度提升:
-
梯度提升算法也称为梯度提升机,包括学习率。
-
随机梯度提升,在每个分割级别的行、列和列进行子采样。
-
具有 L1 和 L2 正则化的正则化梯度提升。
系统特点
该库提供了一个用于各种计算环境的系统,尤其是:
-
在训练期间使用所有 CPU 内核并行化树构建。
-
使用一组机器训练非常大的模型的分布式计算。
-
不适合内存的超大数据集的核外计算。
-
缓存优化数据结构和算法以充分利用硬件。
算法特点
该算法的实现旨在提高计算时间和内存资源的效率。设计目标是充分利用可用资源来训练模型。一些关键的算法实现特性包括:
-
具有自动处理缺失数据值的稀疏感知实现。
-
支持树构建并行化的块结构。
-
继续训练,以便您可以在新数据上进一步提升已经拟合的模型。
XGBoost 是免费的开源软件,可在 Apache-2 许可下使用。
为什么要使用 XGBoost?
使用 XGBoost 的两个理由也是项目的两个目标:
-
执行速度。
-
模型性能。
1. XGBoost 执行速度
通常,XGBoost 速度很快。与梯度提升的其他实现相比,速度非常快。
Szilard Pafka执行了一些客观的基准测试,将 XGBoost 的性能与梯度提升和袋装决策树的其他实现进行了比较。他于 2015 年 5 月在题为“基准随机森林实现”的博客文章中写下了他的结果。
他还提供了 GitHub 上的所有代码以及更广泛的带有硬数字的结果报告。
他的结果表明,XGBoost 几乎总是比来自 R、Python Spark 和 H2O 的其他基准实现更快。
从他的实验中,他评论道:
我还尝试了 xgboost,这是一个流行的 boosting 库,它也能够构建随机森林。它速度快,内存效率高,准确度高
— Szilard Pafka,对随机森林实现进行基准测试。
2. XGBoost 模型性能
XGBoost 在分类和回归预测建模问题上主导结构化或表格数据集。
证据是它是 Kaggle 竞赛数据科学平台上竞赛获胜者的首选算法。
例如,有一个不完整的一、二、三等奖获奖名单,标题为: XGBoost: Machine Learning Challenge Winning Solutions。
为了使这一点更加具体,以下是 Kaggle 竞赛获胜者的一些有见地的引述:
作为越来越多的 Kaggle 比赛的获胜者,XGBoost 再次向我们展示了它是一种出色的全能算法。
——拿督优胜者访谈:第一名,疯狂教授
如有疑问,请使用 xgboost。
— Avito 优胜者访谈:第一名,Owen Zhang
我喜欢表现良好的单个模型,我最好的单个模型是 XGBoost,它可以单独获得第 10 名。
—卡特彼勒获奖者访谈:第一名
我只用过 XGBoost。
— Liberty Mutual Property Inspection,优胜者访谈:第一名,王清臣
我使用的唯一监督学习方法是梯度提升,在优秀的 xgboost 中实现。
— Recruit Coupon Purchase 优胜者访谈:第二名,Halla Yang
XGBoost 使用什么算法?
XGBoost 库实现了梯度提升决策树算法。
该算法有很多不同的名称,例如梯度提升、多重加性回归树、随机梯度提升或梯度提升机。
Boosting 是一种集成技术,其中添加新模型以纠正现有模型所造成的错误。模型按顺序添加,直到无法进行进一步改进。一个流行的例子是AdaBoost 算法,它对难以预测的数据点进行加权。
梯度提升是一种创建新模型的方法,用于预测先前模型的残差或误差,然后将它们相加以进行最终预测。之所以称为梯度提升,是因为它使用梯度下降算法来最小化添加新模型时的损失。
xgboost支持回归和分类预测建模问题。
官方 XGBoost 资源
XGBoost 的最佳信息来源是该项目的官方 GitHub 库。
https://github.com/dmlc/xgboost
还有一个官方文档页面,其中包括一系列不同语言的入门指南、教程、操作指南等。
有一些关于 XGBoost 的更正式的论文值得一读,以了解有关该库的更多背景信息:
-
使用 Boosted Trees 发现希格斯玻色子,2014 年。
http://proceedings.mlr.press/v42/chen14.pdf
-
XGBoost:可扩展的树提升系统,2016 年。
https://arxiv.org/abs/1603.02754
xgboost就为大家介绍到这里了,欢迎各位同学报名<python风控建模实战lendingclub>,学习更多集成树算法相关知识
https://edu.csdn.net/course/detail/30742
版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。