📜  机器学习: XGBoost简介

📅  最后修改于: 2020-09-23 03:00:00             🧑  作者: Mango

XGBoost是一种最近在结构化表格数据的应用机器学习和Kaggle竞赛中占主导地位的算法。XGBoost是为速度和性能而设计的梯度增强决策树的实现。

在这篇文章中,您将发现XGBoost,并对它的含义,来源以及如何学习更多内容进行了简要介绍。

阅读这篇文章后,您将知道:

  • XGBoost是什么以及项目目标。
  • 为什么XGBoost必须成为您的机器学习工具包的一部分。
  • 在下一个机器学习项目中可以了解更多信息以开始使用XGBoost。

什么是XGBoost

XGBoost 全程 eXtreme Gradient Boosting.

“The name xgboost, though, actually refers to the engineering goal to push the limit of computations resources for boosted tree algorithms. Which is the reason why many people use xgboost.”

 Chen Tianqi在Quora上回答“ What is the difference between the R gbm (gradient boosting machine) and xgboost (extreme gradient boosting)?

它是由Tianqi Chen创建的梯度提升机的一个实现,现在得到了许多开发人员的贡献。它属于分布式机器学习社区(DMLC)旗下更广泛的工具集合,它们也是流行的mxnet深度学习库的创建者。

陈天琪在XGBoost 的演变背后的故事和教训中提供了一个关于XGBoost创建的简短而有趣的背景故事。

XGBoost是一个软件库,您可以将其下载并安装在计算机上,然后从各种界面进行访问。具体来说,XGBoost支持以下主要接口:

  • 命令行界面(CLI)。
  • C++(编写库的语言)。
  • Python界面以及scikit-learn中的模型。
  • R接口以及插入符号包中的模型。
  • 朱莉娅
  • Java和JVM语言(例如Scala)和平台(例如Hadoop)。

XGBoost功能

该库着重于计算速度和模型性能,因此几乎没有多余的装饰。但是,它确实提供了许多高级功能。

型号特点

该模型的实现支持scikit-learn和R实现的功能,并增加了诸如正则化之类的新功能。支持三种主要形式的梯度增强:

  • 梯度提升算法也称为梯度提升机,其中包括学习率。
  • 随机梯度增强,在每个拆分级别的行,列和列进行子采​​样。
  • 具有L1和L2正则化的正则梯度增强

系统特点

该库提供了可在各种计算环境中使用的系统,尤其是:

  • 在培训期间使用所有CPU内核并行化树结构。
  • 分布式计算使用机器集群训练非常大的模型。
  • 核心外计算适用于不适合内存的超大型数据集。
  • 优化数据结构和算法的缓存,以充分利用硬件。

算法特点

该算法的实现旨在提高计算时间和内存资源的效率。一个设计目标是充分利用可用资源来训练模型。一些重要的算法实现功能包括:

  • 具有自动处理丢失数据值的稀疏感知实现。
  • 块结构支持树结构的并行化。
  • 继续培训,以便您可以在新数据上进一步增强已经拟合的模型。

XGBoost是免费的开源软件,可在许可的Apache-2许可下使用。

为什么要使用XGBoost

使用XGBoost的两个原因也是该项目的两个目标:

  1. 执行速度。
  2. 模型性能。

1. XGBoost执行速度

通常,XGBoost速度很快。与梯度提升的其他实现相比,它确实非常快。

Szilard Pafka执行了一些客观基准测试,将XGBoost的性能与梯度提升和袋装决策树的其他实现进行了比较。他在2015年5月的博客文章“对随机森林实施进行基准测试 “中写下了自己的结果。

他还提供了GitHub上的所有代码以及带有硬数字的更广泛的结果报告。

他的结果表明,XGBoost几乎总是比R,Python Spark和H2O的其他基准实现更快。

从实验中,他评论说:

“我还尝试了xgboost,这是一个用于增强功能的流行库,它也可以构建随机森林。它快速,高效存储并具有高精度”

2. XGBoost模型的性能

在分类和回归预测建模问题上,XGBoost主导结构化或表格数据集。

证据表明,它是Kaggle竞争数据科学平台上竞赛获胜者的首选算法。

例如,使用标题为“ XGBoost:机器学习挑战获胜解决方案 “的第一,第二和第三名比赛获胜者的列表不完整  。

XGBoost使用哪种算法

XGBoost库实现了梯度提升决策树算法

该算法有很多不同的名称,例如梯度提升,多个累加回归树,随机梯度提升或梯度提升机。

Boosting是一种集成技术,其中添加了新模型以纠正现有模型所产生的错误。依次添加模型,直到无法进行进一步的改进为止。一个流行的例子是AdaBoost算法,该算法对难以预测的数据点进行加权。

梯度提升是一种创建新模型的方法,该模型可以预测先前模型的残差或误差,然后将它们加在一起以进行最终预测。之所以称为梯度提升,是因为它使用梯度下降算法来最大程度地减少添加新模型时的损失。

这种方法支持回归和分类预测建模问题。

官方XGBoost资源

有关XGBoost的最佳信息来源是该项目官方GitHub存储库

从那里,您可以访问问题跟踪器用户组,它们可用于提出问题和报告错误。

带有示例代码和帮助的链接的绝佳来源是Awesome XGBoost页面

还有一个官方文档页面,其中包含各种语言的入门指南,教程,操作指南等。

关于XGBoost的更多正式论文值得一读,以获取有关该库的更多背景知识:

安装XGBoost

XGBoost文档网站上有完整的安装指南。它涵盖了Linux,Mac OS X和Windows的安装;它还涵盖了在R和Python等平台上的安装。

Python中的XGBoost

XGBoost安装指南的“ Python”部分提供了安装说明正式的Python软件包简介是在Python中使用XGBoost的最佳起点。

要快速入门,您可以输入:

XGBoost Python Feature Walkthrough中,还有一个很好的Python示例源代码列表。