XGBoost (eXtreme Gradient Boosting) 是一个分布式的开源机器学习库,它使用了梯度提升 decision trees,这是一种利用梯度下降的监督学习提升算法。它以其速度、效率和可很好地扩展大型数据集的能力而闻名。
XGBoost 由华盛顿大学的 Tianqi Chen 开发,是通用框架相同的梯度提升的 高级实现;也就是说,它通过将残差相加,将弱学习器树组合成强学习器。该库适用于 C++、Python、R、Java、Scala 和 Julia1。
Decision Trees 用于机器学习中的分类或回归任务。它们使用分层树结构,其中内部节点代表一个特征,分支代表决策规则,每个叶节点代表数据集的结果。
由于 Decision Trees 容易过度拟合,集成方法(例如增强方法)通常可用于创建更为稳健的模型。提升将多个单独的弱树(即性能略好于随机机会的模型)组合在一起,以形成强学习器。每个弱学习器都经过顺序训练,以纠正先前模型所犯的错误。经过数百次迭代后,弱学习器转换为强学习器。
随机森林和提升算法都是流行的集成学习技术,它们使用单个学习器树来提高预测性能。随机森林基于 Bootstrapping(Bootstrap 聚合)的概念,独立训练每棵树以组合它们的预测,而提升算法使用加法方法,其中弱学习器按顺序训练以纠正先前模型的错误。
梯度提升 Decision Trees 是一种使用 梯度下降的提升算法。 与其他提升方法一样,梯度提升从弱学习器开始进行预测。梯度提升中的第一个 Decision Trees 称为基本学习器。接下来,根据基本学习器的错误以加法方式创建新树。然后,该算法计算每棵树预测的残差 ,以确定模型的预测与现实的偏差有多大。残差是模型预测值和实际值之间的差值。 然后汇总残差,利用损失函数对模型进行评分。
在机器学习中,损失函数用于衡量模型的性能。梯度提升 decision trees 中的梯度指的是梯度下降。梯度下降用于在训练新模型时最小化损失(即提高模型的性能)。梯度下降是一种流行的优化算法,用于尽量减少机器学习问题中的损失函数。一些损失函数的示例包括 regression 问题的均方误差或平均绝对误差、分类问题的交叉熵损失,或者可以为特定用例和数据集开发自定义损失函数。
以下是 XGBoost 在 Python 中的一些功能,与 scikit-learn 中的普通梯度提升包相比,这些功能使其脱颖而出 2 :
在本节中,我们将介绍如何使用 XGBoost 包、如何选择 XGBoost 树加速器的超参数、XGBoost 与其他加速器实现的对比及其一些用例。
假设已经对数据执行了探索性数据分析,请继续将数据分配到训练数据集和测试数据集之间。接下来,将数据转换为 XGBoost 期望的 DMatrix 格式3。DMatrix 是 XGBoost 的内部数据结构,针对内存效率和训练速度进行了优化4。
接下来,您可能希望迭代超参数的组合,以帮助提高模型的性能。超参数调整是机器学习算法超参数的优化过程。可以使用网格搜索和交叉验证方法找到最佳超参数,这些方法将遍历可能的超参数组合的字典。
以下是 XGBoost 中可用于调整梯度增强树的一些超参数的解释:
XGBoost 是众多可用的开源加速算法之一。在本节中,我们将 XGBoost 与其他三个助推框架进行比较。
AdaBoost 是由 Yoav Freund 和 Robert Schapire 于 1995 年发明的早期提升算法 7。在 AdaBoost 中,通过权重系统更加重视错误的预测,这些权重系统会对更难预测的数据点产生更大的影响。 首先,数据集中的每个数据点都被分配了一个特定的权重。当弱学习器正确预测一个例子时,该示例的权重就会减轻。但是,如果学习器举错了例子,该数据点的权重就会增加。创建新树时,它们的权重是基于先前学习器树的错误分类。随着学习器数量的增加,未来学习器将会越来越少地使用那些容易预测的样本,而那些较难预测的数据点将会被赋予更大的权重。梯度提升和 XGBoost 由于其准确性和速度,往往能成为 AdaBoost 更强大的替代方案。
CatBoost 是另一个梯度提升框架。由 Yandex 于 2017 年开发,专门处理分类特征,无需任何预处理,通常直接可用,无需执行广泛的超参数调整8。与 XGBoost 一样,CatBoost 内置了对处理缺失数据的支持。CatBoost 对于具有许多分类特征的数据集特别有用。据 Yandex 称,该框架可用于搜索、推荐系统、个人助理、自动驾驶汽车、天气预报和其他任务。
LightGBM (Light Gradient Boosting Machine) 是我们将要审查的最终梯度提升算法。LightGBM 由 Microsoft 开发,于 2016 年首次发布 9。大多数 Decision Trees 学习算法在深度上生长树木,而 LightGBM 使用逐叶树生长策略 10。与 XGBoost 一样,LightGBM 表现出较快的模型训练速度和准确性,在大型数据集上表现良好。
XGBoost 和梯度增强decision trees用于各种数据科学应用,包括:
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。
6 “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。