什么是 XGBoost?

两名医生在医院查看病人的 CT 扫描结果

作者

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

Erika Russi

Data Scientist

IBM

什么是 XGBoost?

XGBoost (eXtreme Gradient Boosting) 是一个分布式的开源机器学习库,它使用了梯度提升 decision trees,这是一种利用梯度下降的监督学习提升算法。它以其速度、效率和可很好地扩展大型数据集的能力而闻名。

XGBoost 由华盛顿大学的 Tianqi Chen 开发,是通用框架相同的梯度提升的 高级实现;也就是说,它通过将残差相加,将弱学习器树组合成强学习器。该库适用于 C++、Python、R、Java、Scala 和 Julia1

Decision trees与提升

Decision Trees 用于机器学习中的分类或回归任务。它们使用分层树结构,其中内部节点代表一个特征,分支代表决策规则,­每个叶节点代表数据集的结果。

由于 Decision Trees 容易过度拟合,集成方法(例如增强方法)通常可用于创建更为稳健的模型。提升将多个单独的弱树(即性能略好于随机机会的模型)组合在一起,以形成强学习器。每个弱学习器都经过顺序训练,以纠正先前模型所犯的错误。经过数百次迭代后,弱学习器转换为强学习器。

随机森林和提升算法都是流行的集成学习技术,它们使用单个学习器树来提高预测性能。随机森林基于 Bootstrapping(Bootstrap 聚合)的概念,独立训练每棵树以组合它们的预测,而提升算法使用加法方法,其中弱学习器按顺序训练以纠正先前模型的错误。

梯度提升 decision trees 

梯度提升 Decision Trees  是一种使用 梯度下降的提升算法。 与其他提升方法一样,梯度提升从弱学习器开始进行预测。梯度提升中的第一个 Decision Trees 称为基本学习器。接下来,根据基本学习器的错误以加法方式创建新树。然后,该算法计算每棵树预测的残差 ,以确定模型的预测与现实的偏差有多大。残差是模型预测值和实际值之间的差值。 然后汇总残差,利用损失函数对模型进行评分。

在机器学习中,损失函数用于衡量模型的性能。梯度提升 decision trees 中的梯度指的是梯度下降。梯度下降用于在训练新模型时最小化损失(即提高模型的性能)。梯度下降是一种流行的优化算法,用于尽量减少机器学习问题中的损失函数。一些损失函数的示例包括 regression 问题的均方误差或平均绝对误差、分类问题的交叉熵损失,或者可以为特定用例和数据集开发自定义损失函数。

XGBoost 的功能

以下是 XGBoost 在 Python 中的一些功能,与 scikit-learn 中的普通梯度提升包相比,这些功能使其脱颖而出 2

  • 并行和分布式计算: 该库将数据存储在称为块的内存单元中。单独的块可以分布在机器之间,或者使用核外计算存储在外部存储器中。XGBoost 还支持更高级的用例,例如跨计算机集群进行分布式训练以加快计算速度。XGBoost 还可以使用 Apache Spark、Dask 或 Kubernetes 等工具在分布式模式下实施。
  • 缓存感知预取算法: XGBoost 使用缓存感知预取算法,有助于缩短大型数据集的运行时间。该库在单台计算机上的运行速度比其他现有框架快十倍以上。 由于其速度令人印象深刻,XGBoost 可以使用更少的资源处理数十亿个示例,这使其成为一个可扩展的树增强系统。
  • 内置正则化: XGBoost  将正则化 作为学习目标的一部分,这与常规梯度提升不同。也可以通过超参数调整对数据进行正则化。使用 XGBoost 的内置正则化还可以让该库提供比常规 scikit-learn 梯度提升包更好的结果。
  • 处理 missing values: XGBoost 对稀疏数据使用稀疏感知算法。当数据集中缺少某个值时,数据点会被归类到默认方向,算法会学习最佳方向来处理 missing values。
小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

XGBoost 的工作原理

在本节中,我们将介绍如何使用 XGBoost 包、如何选择 XGBoost 树加速器的超参数、XGBoost 与其他加速器实现的对比及其一些用例。

拆分数据并转换为 DMatrix 格式

假设已经对数据执行了探索性数据分析,请继续将数据分配到训练数据集和测试数据集之间。接下来,将数据转换为 XGBoost 期望的 DMatrix 格式3。DMatrix 是 XGBoost 的内部数据结构,针对内存效率和训练速度进行了优化4

生成和评估模型

接下来,实例化 XGBoost 模型,并根据您的用例,通过“对象”超参数选择您要使用的目标函数。例如,如果您有一个多类分类任务,则应将目标设置为“multi:softmax”5。或者,如果您有一个二元分类问题,您可以使用逻辑回归目标“binary:logistic”。现在,您可以使用训练集来训练模型并预测作为测试集的数据集的分类。通过将预测值与测试集的实际值进行比较来评估模型的性能。您可以使用准确性、精确度、召回率或 f-1 分数等指标来评估您的模型。您可能还希望使用混淆矩阵可视化您的真阳性、真阴性、假阳性和假阴性。

超参数调整

接下来,您可能希望迭代超参数的组合,以帮助提高模型的性能。超参数调整是机器学习算法超参数的优化过程。可以使用网格搜索和交叉验证方法找到最佳超参数,这些方法将遍历可能的超参数组合的字典。

XGBoost 中梯度提升树的选定 超参数

以下是 XGBoost 中可用于调整梯度增强树的一些超参数的解释:

  • 学习率(也称为“步长”或“收缩率”)是最重要的梯度提升超参数。在 XGBoost 库中,它被称为“eta”,应该是 0 到 1 之间的数字,默认值为 0.3 6 。学习率确定提升算法从每次迭代中学习的速率。eta 值越低意味着学习速度越慢,因为它降低了集成中每棵树的贡献,从而有助于防止过拟合。相反,较高的 eta 值会加快学习速度,但如果不仔细调整,可能会导致过拟合。
  • n_estimators 超参数指定集成中要构建的树数量。每一轮提升都会向集成中添加一棵新树,模型会慢慢学习纠正前一棵树所犯的错误。N_estimators 决定模型的复杂性,并影响训练时间和模型推广到未知数据的能力。增加 n_estimators 的值通常会增加模型的复杂性,因为它允许模型在数据中捕获更复杂的模式。但是,添加过多的树会导致过拟合。一般来说,随着 n_estimators 的增加,学习率应该降低。
  • 伽马(也称为拉格朗日乘数或最小损失减少参数)控制着对树的叶节点进行进一步分割所需的最小损失减少量。值越低意味着 XGBoost 停止得越早,但可能无法找到最佳解决方案;值越大,XGBoost 持续训练的时间越长,有可能找到更好的解决方案,但过度拟合的风险也越大。伽马值没有上限。XGBoost 中的默认值为 0,超过 10 的值都被视为高值。
  • Max_depth表示提升过程中每棵树在训练过程中的生长深度。树的深度是指它从根节点到叶节点的级别数或拆分数。增加该值会使模型更加复杂,更容易出现过拟合。在 XGBoost 中,默认 max_depth 为 6,这意味着允许模型中的每棵树生长到最大深度 6 级。
Mixture of Experts | 8 月 28 日,第 70 集

解码 AI:每周新闻摘要

加入我们世界级的专家小组——工程师、研究人员、产品负责人等将为您甄别 AI 领域的真知灼见,带来最新的 AI 资讯与深度解析。

将 XGBoost 与其他增强算法进行比较

XGBoost 是众多可用的开源加速算法之一。在本节中,我们将 XGBoost 与其他三个助推框架进行比较。

XGBoost 与 AdaBoost

AdaBoost  是由 Yoav Freund  和  Robert Schapire  于 1995 年发明的早期提升算法 7。在 AdaBoost 中,通过权重系统更加重视错误的预测,这些权重系统会对更难预测的数据点产生更大的影响。 首先,数据集中的每个数据点都被分配了一个特定的权重。当弱学习器正确预测一个例子时,该示例的权重就会减轻。但是,如果学习器举错了例子,该数据点的权重就会增加。创建新树时,它们的权重是基于先前学习器树的错误分类。随着学习器数量的增加,未来学习器将会越来越少地使用那些容易预测的样本,而那些较难预测的数据点将会被赋予更大的权重。梯度提升和 XGBoost 由于其准确性和速度,往往能成为 AdaBoost 更强大的替代方案。

XGBoost 与 CatBoost

CatBoost 是另一个梯度提升框架。由 Yandex 于 2017 年开发,专门处理分类特征,无需任何预处理,通常直接可用,无需执行广泛的超参数调整8。与 XGBoost 一样,CatBoost 内置了对处理缺失数据的支持。CatBoost 对于具有许多分类特征的数据集特别有用。据 Yandex 称,该框架可用于搜索、推荐系统、个人助理、自动驾驶汽车、天气预报和其他任务。

XGBoost 与 LightGBM

LightGBM (Light Gradient Boosting Machine) 是我们将要审查的最终梯度提升算法。LightGBM 由 Microsoft 开发,于 2016 年首次发布 9。大多数 Decision Trees 学习算法在深度上生长树木,而 LightGBM 使用逐叶树生长策略 10。与 XGBoost 一样,LightGBM 表现出较快的模型训练速度和准确性,在大型数据集上表现良好。

XGBoost 的应用

XGBoost 和梯度增强decision trees用于各种数据科学应用,包括:

  • 学习排名:XGBoost 算法最流行的用例之一是作为排名器。在信息检索中,学习排名的目标是为用户提供按相关性排序的内容。在 XGBoost 中,XGBRanker 基于 LambdaMART 算法11
  • 广告点击率预测:研究人员使用经过 XGBoost 训练的模型来确定点击数据在 10 天内在线广告的点击频率。该研究的目标是 衡量在线广告的有效性,并确定哪些广告效果良好 12
  • 门店销售预测: XGBoost 可用于预测建模,如本文所示,其中使用 XGBoost 模型预测了 45 家沃尔玛商店的销售额 13
  • 恶意软件分类: 使用 XGBoost 分类器,科希策技术大学的工程师能够准确地对恶意软件进行分类,如他们的论文所示 14
  • Kaggle 竞赛:XGBoost 一直是 Kaggle 竞赛中流行的获胜算法,如 DMLC(分布式 (深度)机器学习社区)页面上所述,该页面列出了最近在参赛作品中使用 XGBoost 的 Kaggle 竞赛获胜者名单15
相关解决方案
IBM® watsonx.ai

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

深入了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的 AI 专业知识和解决方案组合,让 AI 在您的业务中发挥作用。

深入了解人工智能解决方案
人工智能 (AI) 咨询服务

IBM Consulting AI 服务有助于重塑企业利用 AI 实现转型的方式。

深入了解人工智能服务
采取后续步骤

一站式访问跨越 AI 开发生命周期的功能。利用用户友好型界面、工作流并访问行业标准 API 和 SDK,生成功能强大的 AI 解决方案。

深入了解 watsonx.ai 预约实时演示
脚注

1 “可扩展且灵活的梯度提升,” https://xgboost.ai/

2 Tianqi Chen 和 Carlos Guestrin,“XGBoost:一种可扩展的树加速系统”,华盛顿大学,2016 年 6 月 10 日,https://arxiv.org/pdf/1603.02754

3“XGBoost Python 软件包简介,数据接口”,https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface

4“XGBoost API 参考,核心数据结构”,https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core

5 “XGBoost 参数,学习任务参数,” https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters

“Tree Booster 的 XGBoost 参数,”  https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster。

7  Yoav Freund 和 Robert E. Schapire,“在线学习的决策理论概括和提升的应用”,《计算机与系统科学杂志》,第 55 卷,第 119-139 页,1997 年 8 月。

8“CatBoost 是一个用于梯度提升决策树的高性能开源库”,https://catboost.ai/

9  Qi Meng、Guolin Ke、Taifeng Wang、Wei Chen、Qiwei Ye、Zhi-Ming Ma and Tie-Yan Liu,“一种高效通信的 Decision Tree 并行算法”,北京大学、微软研究院和 中国数学与系统科学研究院,2016 年 11 月 4 日,  https://arxiv.org/pdf/1611.01276

10“LightGBM 特有的逐叶(最佳优先)树生长算法”,https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11“XGBoost 教程,学习排名概述”,https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview

12  AlAli Moneera、alQahtani Maram、alJuried Azizah、Taghareed Alonizan、Dalia Alboqaytah、Nida Aslam  和 Irfan Ullah Khan,“使用极限梯度提升对移动设备广告进行点击率效果预测,” 计算机科学与信息技术学院,伊玛目阿卜杜拉赫曼·本·费萨尔大学,2020 年 9 月 12 日,  https://www.techscience.com/cmc/v66n2/40673/html

13Yetunde Faith Akande、Joyce Idowu、Abhavya Gautam、Sanjay Misra、Oluwatobi Noah Akande 和 Ranjan Kumar Behera,“Xgboost 算法在使用沃尔玛数据集进行销售预测中的应用”,Landmark University、Ladoke Akintola University of Technology、Brandan University、Covenant University 和 XIM University,2022 年 6 月,https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset

14 Jakub Palša、Norbert Ádám、Ján Hurtuk、Eva Chovancová、Branislav Madoš、Martin Chovanec 和 Stanislav Kocan,“MLMD——基于 XGBoost 机器学习算法的恶意软件检测防病毒工具”, MDPI.com 《应用科学杂志》,第 12 卷,6672, 2022 年 7 月 1 日, https://www.mdpi.com/2076-3417/12/13/6672

15“分布式(深度)机器学习社区 XGBoost 机器学习挑战赛获奖解决方案”,https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions