【ML】XGBoost 算法:愿它统治万岁!

 大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流

 

个人主页-Sonhhxg_柒的博客_CSDN博客 

欢迎各位→点赞 + 收藏⭐️ + 留言​

系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

​​

 foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟

文章目录

什么是 XGBoost?

如何为 XGBoost 建立 intuition?

为什么 XGBoost 表现如此出色?

证据在哪里?

那么我们应该一直只使用 XGBoost 吗?

未来该何去何从?


我仍然记得三年前我第一份工作的第一天。我刚刚完成学业,第一天上班,我一直在整理领带,并努力记住我学过的所有内容。与此同时,在内心深处,我想知道我是否足够适合企业界。老板察觉到我的不安,笑着说:

“不用担心!你唯一需要知道的就是回归建模!”

 我记得自己在想,“我明白了!”。我知道回归建模;线性回归和逻辑回归。我的老板是对的。在我的任期内,我专门建立了基于回归的统计模型。我并不孤单。事实上,在那个时候,回归建模是无可争议的预测分析女王。快进十五年,回归建模的时代结束了。老皇后过去了。名字时髦的新女王万岁;XGBoost 或极端梯度提升!

什么是 XGBoost?

XGBoost 是一种基于决策树的集成机器学习算法,它使用梯度提升框架。在涉及非结构化数据(图像、文本等)的预测问题中,人工神经网络往往优于所有其他算法或框架。然而,当涉及到中小型结构化/表格数据时,基于决策树的算法目前被认为是同类最佳的。请参阅下表,了解多年来基于树的算法的演变。【ML】XGBoost 算法:愿它统治万岁!_第1张图片

                                                         XGBoost 算法从决策树演化

XGBoost 算法是作为华盛顿大学的一个研究项目开发的。Tianqi Chen 和 Carlos Guestrin在 2016 年的 SIGKDD 大会上发表了他们的论文,并在机器学习领域引起了轰动。自推出以来,该算法不仅赢得了众多 Kaggle 竞赛,而且还是多个尖端行业应用的幕后驱动力。因此,有一个强大的数据科学家社区为 XGBoost 开源项目做出贡献,在GitHub上有约 570 名贡献者和约 6200 次提交。该算法在以下方面与众不同:

  1. 应用广泛:可用于解决回归、分类、排序和用户自定义预测问题。
  2. 可移植性:可在 Windows、Linux 和 OS X 上流畅运行。
  3. 语言:支持所有主要编程语言,包括 C++、Python、R、Java、Scala 和 Julia。
  4. 云集成:支持AWS、Azure、Yarn集群,与Flink、Spark等生态系统兼容。

如何为 XGBoost 建立 intuition?

决策树,以其最简单的形式,是易于可视化和相当可解释的算法,但为下一代基于树的算法建立intuition可能有点棘手。请参阅下面的简单类比,以更好地理解基于树的算法的演变。

【ML】XGBoost 算法:愿它统治万岁!_第2张图片

想象一下,您是一名招聘经理,正在面试几位具有优秀资格的候选人。基于树的算法演变的每一步都可以看作是面试过程的一个版本。

  1. 决策树:每个招聘经理都有一套标准,例如教育水平、工作年限、面试表现。决策树类似于招聘经理根据他或她自己的标准面试候选人。
  2. Bagging:现在想象一下,现在有一个面试小组,而不是一个面试官,每个面试官都有投票权。Bagging 或 bootstrap 聚合涉及通过民主投票过程结合所有面试官的输入以做出最终决定。
  3. 随机森林:这是一种基于装袋的算法,具有一个关键区别,其中仅随机选择一个特征子集。换句话说,每个面试官只会测试被面试者的某些随机选择的资格(例如测试编程技能的技术面试和评估非技术技能的行为面试)。
  4. Boosting:这是另一种方法,每个面试官根据前一位面试官的反馈改变评估标准。这通过部署更动态的评估流程来“提高”面试流程的效率。
  5. 梯度提升:提升的一种特殊情况,其中通过梯度下降算法将错误最小化,例如,战略咨询公司通过使用案例访谈来淘汰不太合格的候选人。
  6. XGBoost:将 XGBoost 视为“类固醇”的梯度提升(它被称为“极端梯度提升”是有原因的!)。它是软件和硬件优化技术的完美结合,可以在最短的时间内使用更少的计算资源获得卓越的结果。

为什么 XGBoost 表现如此出色?

XGBoost 和梯度提升机 (GBM) 都是集成树方法,它们应用使用梯度下降架构提升弱学习器(通常为CART)的原理。然而,XGBoost 通过系统优化和算法增强改进了基本 GBM 框架。

【ML】XGBoost 算法:愿它统治万岁!_第3张图片

                                        XGBoost 如何优化标准 GBM 算法

系统优化:

  1. 并行化: XGBoost使用并行化实现来处理顺序树构建过程。这是可能的,因为用于构建基础学习器的循环具有可互换性;枚举树的叶节点的外部循环,以及计算特征的第二个内部循环。这种循环嵌套限制了并行化,因为如果不完成内部循环(两者的计算要求更高),外部循环就无法启动。因此,为了提高运行时间,通过对所有实例进行全局扫描并使用并行线程进行排序,使用初始化来交换循环顺序。此开关通过抵消计算中的任何并行化开销来提高算法性能。
  2. 树修剪: GBM 框架内树分裂的停止标准本质上是贪婪的,取决于分裂点的负损失标准。XGBoost 使用指定的“max_depth”参数而不是首先使用标准,然后开始向后修剪树。这种“深度优先”方法显着提高了计算性能。
  3. 硬件优化:该算法旨在有效利用硬件资源。这是通过缓存感知实现的,方法是在每个线程中分配内部缓冲区来存储梯度统计信息。“核外”计算等进一步增强功能可优化可用磁盘空间,同时处理不适合内存的大数据帧。

算法改进:

  1. 正则化:它通过 LASSO (L1) 和 Ridge (L2) 正正则化来惩罚更复杂的模型,以防止过度拟合。
  2. 稀疏意识:XGBoost 通过根据训练损失自动“学习”最佳缺失值自然地承认输入的稀疏特征,并更有效地处理数据中不同类型的稀疏模式。
  3. 加权分位数草图: XGBoost 采用分布式加权分位数草图算法来有效地找到加权数据集之间的最佳分割点。
  4. 交叉验证:该算法在每次迭代时都带有内置的交叉验证方法,无需明确编程此搜索并指定单次运行所需的确切增强迭代次数。

证据在哪里?

我们使用 Scikit-learn 的“ Make_Classification ”数据包创建了一个包含 100 万个数据点的随机样本,其中包含 20 个特征(2 个信息性特征和 2 个冗余性特征)。我们测试了多种算法,例如逻辑回归、随机森林、标准梯度提升和 XGBoost。

【ML】XGBoost 算法:愿它统治万岁!_第4张图片

XGBoost 与其他使用 SKLearn 的 Make_Classification 数据集的 ML 算法

如上图所示,与其他算法相比,XGBoost 模型具有最佳的预测性能和处理时间组合。其他严格的基准研究也产生了类似的结果。难怪 XGBoost 在最近的数据科学竞赛中被广泛使用。

“如有疑问,请使用 XGBoost”——Owen Zhang, Kaggle 上Avito上下文广告点击预测竞赛的获胜者

那么我们应该一直只使用 XGBoost 吗?

谈到机器学习(甚至生活),天下没有免费的午餐。作为数据科学家,我们必须针对手头的数据测试所有可能的算法,以确定冠军算法。此外,仅仅选择正确的算法是不够的。我们还必须通过调整超参数为数据集选择正确的算法配置。此外,选择获胜算法还有其他几个考虑因素,例如计算复杂性、可解释性和易于实施。这正是机器学习开始从科学转向艺术的时刻,但老实说,这就是魔法发生的地方!

未来该何去何从?

机器学习是一个非常活跃的研究领域,已经有几个可行的 XGBoost 替代方案。微软研究院最近发布了用于梯度提升的LightGBM框架,显示出巨大的潜力。Yandex Technology 开发的CatBoost一直在提供令人印象深刻的基准测试结果。我们拥有一个在预测性能、灵活性、可解释性和实用性方面击败 XGBoost 的更好的模型框架只是时间问题。然而,在强大的挑战者出现之前,XGBoost 将继续统治机器学习世界!

你可能感兴趣的:(机器学习(ML),机器学习,python,决策树)