应用机器学习的 XGBoost 简介
原文: https://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/
XGBoost 是一种算法,最近一直主导应用机器学习和 Kaggle 竞争结构化或表格数据。
XGBoost 是为速度和表现而设计的梯度提升决策树的实现。
在这篇文章中,您将发现 XGBoost 并轻松了解它的来源,来自何处以及如何了解更多信息。
阅读这篇文章后你会知道:
- XGBoost 是什么以及项目的目标。
- 为什么 XGBoost 必须与您的机器学习工具包分开。
- 在下一个机器学习项目中,您可以了解更多信息以开始使用 XGBoost。
让我们开始吧。
应用机器学习的 XGBoost 的温和介绍
Sigfrid Lundberg 的照片,保留一些权利。
什么是 XGBoost?
XGBoost 代表 e X treme G radient B oosting。
但是,名称 xgboost 实际上指的是推动增强树算法的计算资源限制的工程目标。这就是为什么许多人使用 xgboost 的原因。
- 陈天琪回答问题“ R gbm(梯度提升机)和 xgboost(极限梯度提升)有什么区别? “在 Quora 上
它是 Tianqi Chen 创建的梯度提升机的实现,现在得到了许多开发人员的贡献。它属于分布式机器学习社区或 DMLC 旗下的更广泛的工具集,他们也是流行的 mxnet 深度学习库的创建者。
Tianqi Chen 在后期故事和 XGBoost 演变背后的教训中提供了关于 XGBoost 创作的简短而有趣的背景故事。
XGBoost 是一个软件库,您可以在您的机器上下载和安装,然后从各种界面进行访问。具体来说,XGBoost 支持以下主要接口:
- 命令行界面(CLI)。
- C ++(编写库的语言)。
- Python 界面以及 scikit-learn 中的模型。
- R 接口以及插入符号包中的模型。
- 朱莉娅。
- 像 Scala 这样的 Java 和 JVM 语言以及像 Hadoop 这样的平台。
XGBoost 功能
该库激光专注于计算速度和模型表现,因此几乎没有多余的装饰。尽管如此,它确实提供了许多高级功能。
型号特点
该模型的实现支持 scikit-learn 和 R 实现的功能,以及正规化等新增功能。支持三种主要形式的梯度提升:
- Gradient Boosting 算法也称为梯度提升机,包括学习率。
- 随机梯度提升,每个分割级别在行,列和列处进行子采样。
- 正则化梯度提升同时具有 L1 和 L2 正则化。
系统功能
该库提供了一个在各种计算环境中使用的系统,尤其是:
- 在训练期间使用所有 CPU 内核构建树的并行化。
- 分布式计算用于使用一组机器训练超大型模型。
- 非核心计算适用于不适合内存的超大型数据集。
- 缓存优化的数据结构和算法,以充分利用硬件。
算法特征
该算法的实现是为了提高计算时间和内存资源的效率而设计的。设计目标是充分利用可用资源来训练模型。一些关键的算法实现功能包括:
- 稀疏感知实现,自动处理缺失的数据值。
- 块结构支持树形结构的并行化。
- 继续训练,以便您可以进一步提升已安装的新数据模型。
XGBoost 是免费的开源软件,可在许可的 Apache-2 许可下使用。
为什么要使用 XGBoost?
使用 XGBoost 的两个原因也是该项目的两个目标:
- 执行速度。
- 模特表演。
1. XGBoost 执行速度
通常,XGBoost 很快。与梯度提升的其他实现相比,真的很快。
Szilard Pafka 进行了一些客观的基准测试,比较了 XGBoost 与梯度提升和袋装决策树的其他实现的表现。他在 2015 年 5 月的博客文章“基准随机森林实施基准”中写下了他的结果。
他还提供了 GitHub 上的所有代码以及更为广泛的硬数字结果报告。
XGBoost 的基准表现,取自基准随机森林实施。
他的结果显示 XGBoost 几乎总是比 R,Python Spark 和 H2O 的其他基准测试实现更快。
从他的实验中,他评论说:
我也尝试过 xgboost,一个流行的增强库,它也可以构建随机森林。它速度快,内存效率高,精度高
- Szilard Pafka,基准随机森林实施基准。
2. XGBoost 模型表现
XGBoost 在分类和回归预测建模问题上支配结构化或表格数据集。
有证据表明,它是 Kaggle 竞争数据科学平台竞赛获胜者的首选算法。
例如,有一个不完整的第一,第二和第三名比赛获胜者名单,标题为: XGBoost:机器学习挑战获胜解决方案。
为了使这一点更加切实,下面是来自 Kaggle 比赛获胜者的一些有见地的引用:
作为越来越多的 Kaggle 比赛的赢家,XGBoost 再次向我们展示了一个值得在您的工具箱中使用的全面算法。
如有疑问,请使用 xgboost。
我喜欢单人模特做得很好,我最好的单人模特是 XGBoost,可以自己获得第 10 名。
我只用过 XGBoost。
我使用的唯一监督学习方法是梯度提升,在优秀的 xgboost 包中实现。
XGBoost 使用什么算法?
XGBoost 库实现梯度提升决策树算法。
该算法有许多不同的名称,例如梯度提升,多重加性回归树,随机梯度提升或梯度提升机器。
Boosting 是一种集合技术,其中添加了新模型以纠正现有模型所产生的错误。依次添加模型,直到不能进一步改进。一个流行的例子是 AdaBoost 算法,它对很难预测的数据点进行加权。
梯度提升是一种方法,其中创建新模型以预测先前模型的残差或误差,然后将其加在一起以进行最终预测。它被称为梯度提升,因为它使用梯度下降算法来最小化添加新模型时的损失。
该方法支持回归和分类预测建模问题。
有关增强和梯度提升的更多信息,请参阅 Trevor Hastie 关于梯度提升机器学习的演讲。
官方 XGBoost 资源
关于 XGBoost 的最佳信息来源是项目的官方 GitHub 存储库。
从那里,您可以访问问题跟踪器和用户组,可用于提问和报告错误。
Awesome XGBoost 页面是一个很好的链接,带有示例代码和帮助。
还有一个官方文档页面,其中包含一系列不同语言的入门指南,教程,操作指南等。
关于 XGBoost 的一些更正式的论文值得阅读,以获得更多关于图书馆的背景知识:
谈谈 XGBoost
当开始使用像 XGBoost 这样的新工具时,在深入研究代码之前,先回顾一下有关该主题的一些讨论会很有帮助。
XGBoost:可扩展的树提升系统
图书馆的创建者田天琪于 2016 年 6 月与洛杉矶数据科学小组进行了一次题为“ XGBoost:可扩展的树木增强系统”的讨论。
您可以在此处查看他演讲中的幻灯片:
有关 DataScience LA 博客的更多信息。
XGBoost:eXtreme Gradient Boosting
2015 年 12 月在纽约数据科学学院举办的题为“ XGBoost:极限梯度提升”的纽约数据科学学院发表演讲。
You can review the slides from his talk here:
Xgboost from Vivian Shangxuan Zhang
有关此演讲的更多信息,请访问纽约数据科学学院博客。
安装 XGBoost
XGBoost 文档网站上有一个全面的安装指南。
它涵盖了 Linux,Mac OS X 和 Windows 的安装。
它还包括在 R 和 Python 等平台上的安装。
R 中的 XGBoost
如果您是 R 用户,最好的入门地点是 xgboost 包的 CRAN 页面。
在此页面中,您可以访问 R vignette Package’xgboost’ [pdf]。
此页面还链接了一些优秀的 R 教程,以帮助您入门:
还有官方的 XGBoost R 教程和用 XGBoost 教程了解你的数据集。
Python 中的 XGBoost
安装说明可在 XGBoost 安装指南的 Python 部分找到。
官方 Python 包简介是在 Python 中使用 XGBoost 时最好的起点。
要快速入门,您可以输入:
sudo pip install xgboost
在 XGBoost Python 功能演练中,Python 中还有一个很好的示例源代码列表。
摘要
在这篇文章中,您发现了应用机器学习的 XGBoost 算法。
你了解到:
- XGBoost 是一个用于开发快速和高表现梯度提升树模型的库。
- XGBoost 在一系列困难的机器学习任务中实现了最佳表现。
- 您可以从命令行,Python 和 R 使用此库以及如何开始使用。
你用过 XGBoost 吗?在下面的评论中分享您的经验。
您对 XGBoost 或该帖子有任何疑问吗?在下面的评论中提出您的问题,我会尽力回答。