当前位置: 首页 > 科技观察

机器学习算法的新女王——XGBoost

时间:2023-03-18 17:07:42 科技观察

还记得15年前我参加工作的第一天,当时我刚读完研究生,加入了一家全球投资银行,担任分析师。那天我一直在整理我的领带,试图回忆我学到的一切,想知道我是否足够胜任这份工作。察觉到我的不安,老板笑着说:“不用担心!你只需要知道回归模型就可以了!”我在想,“我知道这个!”。我知道回归模型、线性回归和逻辑回归。老大说的对,我在任期间,只建立了一个基于回归的统计模型。当时,回归建模是无可争议的预测分析女王。15年后,回归建模的时代结束了。暮光女王已经退场,取而代之的是时尚活力的新女王XGBoost(ExtermeGradientBoosting,极端梯度提升)。什么是XGBoost?XGBoost是一种基于决策树的集成机器学习算法,使用梯度提升框架。在涉及非结构化数据(图像、文本等)的预测问题中,人工神经网络往往优于所有其他算法或框架。然而,当涉及到中小型结构化/表格数据时,基于决策树的算法被认为是同类中最好的。多年来基于树的算法的演变见下表。基于决策树的XGBoost算法演化XGBoost算法是华盛顿大学的一个研究项目。ChenTianqi和CarlosGuestrin在2016年SIGGDD会议上发表的论文让机器学习界如火如荼。自推出以来,该算法不仅赢得了无数Kaggle竞赛,还被公认为多项前沿行业应用的推动力。因此,有一个强大的数据科学家社区为XGBoost开源项目做出贡献,在GitHub上有大约350名贡献者和~3600名提交者。该算法具有以下特点:应用范围广:可用于解决回归、分类、排序和用户自定义预测等问题。可移植性:在Windows、Linux和OSX上流畅运行。语言:支持所有主要编程语言,包括C++、Python、R、java、Scala和Julia。云集成:支持AWS、Azure、Yarn集群,兼容Flink、Spark等生态。如何建立对XGBoost的直观认识?决策树,以其最简单的形式,是易于可视化和相当可解释的算法,但为下一代基于树的算法建立直觉可能有点棘手。下面通过一个简单的类比来更好地理解基于树的算法的发展。照片来自Unsplash上的rawpixel假设您是一名招聘经理,正在面试几位非常合格的候选人。基于树的算法演变的每一步都可以看作是面试过程的一个版本。决策树:每个招聘经理都有一套标准,比如教育水平、工作年限、面试表现。决策树类似于招聘经理根据自己的标准面试候选人。装袋:现在想象一下,你有一组面试官,而不是一个面试官,每个人都有一票。Bagging就是通过民主投票的方式综合所有面试官的意见,做出最终的决定。随机森林:这是一种基于装袋的算法,具有关键区别,其中仅随机选择一部分特征。换句话说,每个面试官只会给面试者一些随机选择的资格测试(例如,测试编程技能的技术面试和评估非技术技能的行为面试)。Boosting:这是一种替代方法,每位面试官根据前一位面试官的反馈更改评估标准。这通过部署更动态的评估过程来“提高”面试过程的效率。梯度提升:通过梯度下降来最小化误差的一种特殊情况,例如战略咨询公司使用案例面试来淘汰不合格的候选人。XGBoost:将XGBoost视为“类固醇”的梯度提升(它被称为“极端梯度提升”是有原因的!)。它是软件和硬件优化技术的完美结合,可以使用较少的计算资源在最短的时间内获得优异的结果。为什么XGBoost表现如此出色?XGBoost和梯度提升机(GBM)都是集成树方法,它们采用梯度下降结构来增强弱学习器(CART)的学习能力。然而,XGBoost通过系统优化和算法增强改进了基本的GBM框架。XGBoost如何优化标准GBM算法Parallelization:XGBoost使用并行化来实现序列树的构建过程。这是可能的,因为用于构建基本学习器的循环可以互换;外循环枚举树的叶节点,第二个内循环计算特征。这是可能的,因为用于构建基本学习器的循环可以互换;外循环枚举树的叶节点,第二个内循环计算特征。这种循环嵌套限制了并行化,因为在没有完成内部循环的情况下外部循环无法开始(这对两个循环的计算要求更高)。因此,为了提高运行时间,循环的顺序通过初始化、所有实例的全局扫描和使用并行线程进行交换。此开关通过抵消计算中的任何并行化开销来提高算法性能。树剪枝:GBM框架中树分裂的停止准则本质上是贪婪的,依赖于分裂点处的负损失准则。XGBoost使用指定的“max_depth”参数而不是先使用条件然后开始向后修剪树。这种“深度优先”的方法极大地提高了计算性能。硬件优化:该算法旨在有效利用硬件资源。这是通过缓存感知实现的,通过在每个线程中分配内部缓冲区来存储梯度统计信息。“内核外”计算等进一步的增强功能优化了可用磁盘空间,同时处理内存无法容纳的大型数据帧。算法增强:正则化:它通过L1ridgeL2正则化来惩罚更复杂的模型,以防止过度拟合。稀疏意识:XGBoost自然地允许稀疏特征的输入,并通过基于训练损失自动“学习”最佳缺失值来更有效地处理数据中不同类型的稀疏模式。加权分位数草图:XGBoost采用分布式加权分位数草图算法来有效地找到加权数据集之间的最佳分割点。交叉验证:该算法在每次迭代时都带有内置的交叉验证方法,无需明确编程此搜索或指定运行中所需的增强迭代的确切次数。证据在哪里?我们使用scikitlearn的“Make_nuclassification”包创建了一个包含100万个数据点的随机样本,其中包含20个特征(2个信息性特征和2个冗余特征)。我们测试了几种算法,例如逻辑回归、随机森林、标准梯度提升和XGBoost。使用SKLearn的Make_Classification数据集比较XGBoost与其他ML算法如上图所示,与其他算法相比,XGBoost模型具有最佳的预测性能和处理时间组合。其他严格的基准研究也得出了类似的结果。难怪XGBoost在最近的数据科学竞赛中被广泛使用。“有疑问时,使用XGBoost”-OwenZhang那么我们应该始终使用XGBoost吗?谈到机器学习(甚至生活),天下没有免费的午餐。作为数据科学家,我们必须针对手头的数据测试所有可能的算法,以确定冠军算法。此外,选择正确的算法是不够的。我们还必须通过调整超参数为数据集选择正确的算法配置。此外,在选择获胜算法时还有其他考虑因素,例如计算复杂性、可解释性和易于实施。这就是机器学习开始从科学走向艺术的地方,但老实说,这就是魔法发生的地方!未来会怎样?机器学习是一个非常活跃的研究领域,已经有几个可行的XGBoost替代方案。微软研究院最近发布了用于增强梯度的LightGBM框架,显示出巨大的潜力。由YandexTechnology开发的CatBoost取得了令人印象深刻的基准测试结果。在预测性能、灵活性、可解释性和实用性方面,我们拥有比XGBoost更好的模型框架只是时间问题。然而,在强大的挑战者出现之前,XGBoost将继续统治机器学习世界!