Skip to content

Latest commit

 

History

History
205 lines (114 loc) · 16.5 KB

gentle-introduction-xgboost-applied-machine-learning.md

File metadata and controls

205 lines (114 loc) · 16.5 KB

应用机器学习中 XGBoost 的温和介绍

原文:https://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/

最后更新于 2021 年 2 月 17 日

XGBoost 是一种算法,最近在结构化或表格数据的应用机器学习和 Kaggle 竞赛中占据主导地位。

XGBoost 是梯度增强决策树的实现,旨在提高速度和表现。

在这篇文章中,你将发现 XGBoost,并得到一个温和的介绍,它是什么,它来自哪里,以及你如何可以了解更多。

看完这篇文章你会知道:

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

用我的新书 XGBoost With Python 启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

  • 2021 年 2 月更新:修复断链。

A Gentle Introduction to XGBoost for Applied Machine Learning

应用机器学习 XGBoost 简介 图片由西格弗里德·伦德伯格提供,版权所有。

什么是 XGBoost?

XGBoost 代表 eXtremeGradientBoost。

然而,xgboost 这个名字实际上指的是工程目标,即提升树算法的计算资源极限。这也是很多人使用 xgboost 的原因。

—陈天琪在回答问题“R GBM(梯度助推机)和 xgboost(极限梯度助推)有什么区别?“在 Quora 上

陈天棋创造的梯度助推机的实现,现在有很多开发者贡献。它属于分布式机器学习社区或 DMLC 旗下更广泛的工具集合,这些人也是流行的 mxnet 深度学习库的创建者。

陈天琪在帖子中提供了一个关于 XGBoost 创作的简短有趣的背景故事,以及 XGBoost 演变背后的故事和教训。

XGBoost 是一个软件库,你可以下载并安装在你的机器上,然后从各种界面访问。具体来说,XGBoost 支持以下主要接口:

  • 命令行界面。
  • C++(编写库的语言)。
  • Python 接口以及 Sklearn 中的一个模型。
  • 接口以及插入符号包中的模型。
  • 朱莉娅。
  • 像 Scala 这样的 Java 和 JVM 语言以及 Hadoop 这样的平台。

XGBoost 功能

该库专注于计算速度和模型表现,因此几乎没有多余的东西。然而,它确实提供了许多高级功能。

模型特征

该模型的实现支持 Sklearn 和 R 实现的特性,并增加了正则化等新功能。支持三种主要形式的梯度增强:

  • 梯度提升算法也叫梯度提升机包括学习率。
  • 随机梯度增强,在行、列和列各级进行子采样。
  • L1 和 L2 正则化的正则化梯度增强

系统功能

该库提供了一个在一系列计算环境中使用的系统,尤其是:

  • 并行化在训练过程中使用你所有的 CPU 核心进行树的构建。
  • 分布式计算使用一组机器训练非常大的模型。
  • 核外计算用于不适合内存的非常大的数据集。
  • 数据结构和算法的缓存优化以充分利用硬件。

算法特征

算法的实现是为了计算时间和内存资源的效率而设计的。设计目标是充分利用现有资源来训练模型。一些关键的算法实现特性包括:

  • 稀疏感知实现,自动处理丢失的数据值。
  • 块结构支持树构造的并行化。
  • 继续训练,这样你就可以在新的数据上进一步提升已经拟合好的模型。

XGBoost 是自由开源软件,可在许可的 Apache-2 许可证下使用。

为什么要使用 XGBoost?

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

  1. 执行速度。
  2. 模型表现。

1.XGBoost 执行速度

一般来说,XGBoost 速度很快。与其他梯度增强实现相比,速度非常快。

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

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

Benchmark Performance of XGBoost

XGBoost 的基准表现,取自基准随机森林实现

他的结果显示,XGBoost 几乎总是比来自 R、Python Spark 和 H2O 的其他基准实现更快。

从他的实验中,他评论道:

我还尝试了 xgboost,这是一个流行的增强库,它也能构建随机森林。它速度快,内存效率高,精确率高

— Szilard Pafka,基准测试随机森林实现

2.XGBoost 模型表现

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

证据是,它是 Kaggle 竞争数据科学平台上竞争赢家的 go-to 算法。

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

为了使这一点更加具体,以下是来自卡格尔竞赛获胜者的一些有见地的名言:

作为越来越多 Kaggle 竞赛的获胜者,XGBoost 再次向我们展示了它是一个非常棒的全能算法,值得放在你的工具箱里。

——达图获奖者面试:第一名,疯狂教授

有疑问时,使用 xgboost。

——阿维托冠军访谈:第一名,欧文·张

我喜欢表现出色的单曲,我最好的单曲是一首可以自己获得第十名的 XGBoost。

——卡特彼勒获奖者面试:第一名

我只用了 XGBoost。

——自由互助物业检查,优胜面试:第一名,王

我使用的唯一一种监督学习方法是梯度增强,它是在优秀的 xgboost 包中实现的。

——招募优惠券购买赢家面试:第二名,哈拉杨

XGBoost 使用什么算法?

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

该算法有许多不同的名称,如梯度增强、多重加性回归树、随机梯度增强或梯度增强机器。

增强是一种集成技术,通过添加新模型来纠正现有模型产生的错误。模型按顺序添加,直到无法进一步改进。一个流行的例子是 AdaBoost 算法,它对难以预测的数据点进行加权。

梯度增强是一种创建新模型的方法,新模型预测先前模型的残差或误差,然后加在一起进行最终预测。之所以称之为梯度提升,是因为它使用梯度下降算法,在添加新模型时将损失降至最低。

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

关于增强和梯度增强的更多信息,请参见特雷弗·哈斯蒂在梯度增强机器学习上的演讲。

<iframe loading="lazy" title="Trevor Hastie - Gradient Boosting Machine Learning" width="500" height="281" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" data-rocket-lazyload="fitvidscompatible" data-lazy-src="https://www.youtube.com/embed/wPqtzj5VZus?feature=oembed"><iframe title="Trevor Hastie - Gradient Boosting Machine Learning" width="500" height="281" src="https://www.youtube.com/embed/wPqtzj5VZus?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""/>

官方 XGBoost 资源

XGBoost 上最好的信息来源是项目的官方 GitHub 资源库。

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

示例代码和帮助的一个很好的链接来源是超赞的 XGBoost 页面

还有一个官方文档页面,包括一系列不同语言的入门指南、教程、操作指南等。

关于 XGBoost,有一些更正式的论文值得一读,了解更多关于图书馆的背景知识:

关于 XGBoost 的讨论

当开始使用像 XGBoost 这样的新工具时,在深入研究代码之前,回顾一些关于这个主题的讨论可能会有所帮助。

XGBoost:一个可扩展的树增强系统

2016 年 6 月,该库的创建者陈天琦在 LA 数据科学组做了一个题为“ XGBoost:一个可扩展的树提升系统”的演讲。

<iframe loading="lazy" title="XGBoost A Scalable Tree Boosting System June 02, 2016" width="500" height="281" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" data-rocket-lazyload="fitvidscompatible" data-lazy-src="https://www.youtube.com/embed/Vly8xGnNiWs?feature=oembed"/><iframe title="XGBoost A Scalable Tree Boosting System June 02, 2016" width="500" height="281" src="https://www.youtube.com/embed/Vly8xGnNiWs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""/>

您可以在此查看他演讲中的幻灯片:

<iframe loading="lazy" title="Tianqi Chen - XGBoost: Overview and Latest News - LA Meetup Talk" id="talk_frame_345261" src="about:blank" width="500" height="281" style="border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen" mozallowfullscreen="true" webkitallowfullscreen="true" data-rocket-lazyload="fitvidscompatible" data-lazy-src="//speakerdeck.com/player/5c6dab45648344208185d2b1ab4fdc95"/> <iframe title="Tianqi Chen - XGBoost: Overview and Latest News - LA Meetup Talk" id="talk_frame_345261" src="//speakerdeck.com/player/5c6dab45648344208185d2b1ab4fdc95" width="500" height="281" style="border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen" mozallowfullscreen="true" webkitallowfullscreen="true"/>

数据科学 LA 博客上有更多信息。

极限梯度增强

2015 年 12 月,XGBoost R 接口投稿人佟鹤在纽约数据科学学院做了一个演讲,题目是“XGBoost:eXtreme Gradient Boosting”。

<iframe loading="lazy" title="Kaggle Winning Solution Xgboost Algorithm - Learn from Its Author, Tong He" width="500" height="281" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" data-rocket-lazyload="fitvidscompatible" data-lazy-src="https://www.youtube.com/embed/ufHo8vbk6g4?feature=oembed"/><iframe title="Kaggle Winning Solution Xgboost Algorithm - Learn from Its Author, Tong He" width="500" height="281" src="https://www.youtube.com/embed/ufHo8vbk6g4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""/>

您可以在此查看他演讲中的幻灯片:

<iframe loading="lazy" title="Xgboost" src="about:blank" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen="" data-rocket-lazyload="fitvidscompatible" data-lazy-src="https://www.slideshare.net/slideshow/embed_code/key/lhcV8LfZ8RfrG"></iframe><iframe title="Xgboost" src="https://www.slideshare.net/slideshow/embed_code/key/lhcV8LfZ8RfrG" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen=""></iframe>**[Xgboost](https://www.slideshare.net/ShangxuanZhang/xgboost-55872323 "Xgboost")** from **[Vivian S. Zhang](https://www.slideshare.net/ShangxuanZhang)**

纽约数据科学院博客上有更多关于这个演讲的信息。

安装 XGBoost

xboost 文档网站上有全面的安装指南。

它涵盖了 Linux、Mac OS X 和 Windows 的安装。

它还涵盖了在诸如 R 和 Python 等平台上的安装。

R 中的 XGBoost

如果你是 R 用户,最好的入门网站是 xgboost 包的 CRAN 页面。

从该页面,您可以访问 R 晕映包【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 或者这个帖子有什么疑问吗?在下面的评论中提出你的问题,我会尽力回答。