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


字幕组双语原文:机器学习最优算法:XGBoost
英语原文:XGBoost Algorithm: Long May She Reign!
翻译:雷锋字幕组(yhfwww)
仍然记得15年前参加工作的第一天 , 刚完成研究生学业的我 , 加入了一家全球投资银行担任分析师 。 那天我不停地拉直领带 , 努力回忆起学过的所有东西 , 怀疑自己是否足够胜任工作 。 察觉到我的焦虑 , 老板微笑着说:
“别担心!你只需要知道回归模型就行了!”
我当时在想 , “我知道这个!” 。 我知道回归模型、线性回归和逻辑回归 。 老板的说法是对的 , 在任期内我仅仅建立了基于回归的统计模型 。 在那个时候 , 回归建模是预测分析无可争议的女王 。 15年后 , 回归建模的时代已经结束 。 迟暮的女王已经退场,取而代之的是名字时髦、活力满满的新女王XGBoost(Exterme Gradient Boosting,极限梯度提升) 。
什么是XGBoost?

XGBoost是基于决策树的集成机器学习算法 , 使用了梯度提升框架 。 在涉及非结构化数据(图像、文本等)的预测问题中 , 人工神经网络往往优于所有其他算法或框架 。 然而 , 当涉及到中小型结构化/表格数据时 , 基于决策树的算法被认为是目前同类中最好的 。 请参阅下表了解这些年来基于树的算法的发展 。
中年|机器学习算法的新女王——XGBoost
本文插图
基于决策树的XGBoost算法演化
XGBoost算法是华盛顿大学的一个研究项目 。 陈天奇和Carlos Guestrin在2016年的SIGGDD大会上发的的论文 , 让机器学习世界如火如荼 。 自引入以来 , 该算法不仅赢得了众多的Kaggle竞赛 , 而且还被认为是若干前沿行业应用的驱动力 。 因此 , 有一个强大的数据科学家社区为XGBoost开源项目做出贡献 , GitHub上有大约350个贡献者和~3600个提交者 。 该算法有以下特点:

  1. 应用范围广泛:可用于解决回归、分类、排名和用户自定义预测问题 。
  2. 可移植性:在Windows、Linux和os x上运行平稳 。
  3. 语言:支持所有主流的编程语言 , 包括C++、Python、R、java、Scala和Julia 。
  4. 云集成:支持AWS、Azure和Yarn集群 , 与Flink、Spark和其他生态系统配合良好 。
如何建立对XGBoost的直觉认识?

决策树 , 在其最简单的形式 , 是易于可视化和相当可解释的算法 , 但为下一代基于树的算法建立直觉可能有点棘手 。 下面是一个简单的类比 , 可以更好地理解基于树的算法的发展 。
中年|机器学习算法的新女王——XGBoost
本文插图
照片来Unsplash的rawpixel
想象一下 , 你是一个招聘经理 , 面试几位资历优秀的应聘者 。 基于树的算法进化的每一步都可以看作是面试过程的一个版本 。
  1. 决策树:每个招聘经理都有一套标准 , 比如教育水平、工作年限、面试表现 。 决策树类似于招聘经理根据自己的标准面试应聘者 。
  2. Bagging:现在想象一下 , 不是一个面试官 , 而是一个面试小组 , 每个面试官都有投票权 。 Bagging聚合包括通过民主投票过程将所有面试官的意见结合起来 , 以最终做出决定 。
  3. 随机森林:这是一种基于Bagging的算法 , 有一个关键的区别 , 其中只有一个子集的特征是随机选择的 。 换言之 , 每个面试官只会对面试者进行一些随机选择的资格测试(例如 , 测试编程技能的技术面试和评估非技术技能的行为面试) 。
  4. Boosting:这是一种替代方法 , 每个面试官都会根据前一位面试官的反馈来改变评估标准 。 这通过部署一个更动态的评估过程来“提升Boosts”面试过程的效率 。

  • 梯度提升:通过梯度下降算法将误差最小化的一种特例 , 例如 , 战略咨询公司利用案例面试来淘汰不合格的候选人 。
  • XGBoost:可以把XGBoost看作是对“steroids”的梯度增强(它被称为“极致梯度增强”是有原因的!) 。 它是软硬件优化技术的完美结合 , 可以在最短的时间内使用较少的计算资源获得优异的结果 。
  • 为什么XGBoost表现如此出色?
    XGBoost和Gradient Boosting Machines(GBMs)都是集成树方法 , 它们采用梯度下降结构来提高弱学习者(CARTs)的学习能力 。 然而 , XGBoost通过系统优化和算法增强改进了基本GBM框架 。
    中年|机器学习算法的新女王——XGBoost
    本文插图
    XGBoost如何优化标准GBM算法

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

    1. 正则化:它通过L1脊线L2正则化来惩罚更复杂的模型 , 以防止过度拟合 。
    2. 稀疏性意识:XGBoost通过根据训练损失自动“学习”最佳缺失值 , 自然地允许输入稀疏特征 , 并更有效地处理数据中不同类型的稀疏模式 。
    3. 加权分位数草图:XGBoost采用分布式加权分位数草图算法 , 有效地找到加权数据集之间的最佳分割点 。
    4. 交叉验证:该算法在每次迭代中都带有内置的交叉验证方法 , 不需要显式地对该搜索进行编程 , 也不必指定一次运行中所需的确切的提升迭代次数 。
    证据在哪里?
    我们使用scikitlearn的“Make_nuclassification”数据包创建了一个随机样本 , 其中有100万个数据点 , 有20个特征(2个是信息性的 , 2个是冗余的) 。 我们测试了一些算法 , 如Logistic回归、随机森林、标准梯度提升和XGBoost 。
    中年|机器学习算法的新女王——XGBoost
    本文插图

    XGBoost与使用SKLearn的Make_Classification 数据集的其他ML算法的比较
    如上图所示 , 与其他算法相比 , XGBoost模型具有最佳的预测性能和处理时间组合 。 其他严格的基准研究也产生了类似的结果 。 难怪XGBoost在最近的数据科学竞赛中被广泛使用 。
    “如有疑问 , 请使用XGBoost”——Owen Zhang
    所以我们应该一直使用XGBoost吗?

    说到机器学习(甚至是生活) , 没有免费的午餐 。 作为数据科学家 , 我们必须测试手头数据的所有可能的算法 , 以确定冠军算法 。 此外 , 选择正确的算法是不够的 。 我们还必须通过调整超参数来为数据集选择正确的算法配置 。 此外 , 在选择获胜算法时还有其他一些考虑因素 , 例如计算复杂度、可解释性和易于实现 。 这正是机器学习开始从科学走向艺术的起点 , 但老实说 , 这就是奇迹发生的地方!
    未来会怎样?
    机器学习是一个非常活跃的研究领域 , 已经有几种可行的XGBoost替代方案 。 微软研究院最近发布了LightGBM框架来增强梯度 , 显示出巨大的潜力 。 Yandex Technology开发的CatBoost已经取得了令人印象深刻的基准测试结果 。 在预测性能、灵活性、可解释性和实用性方面 , 我们有一个比XGBoost更好的模型框架是迟早的事 。 然而 , 直到有一个强大的挑战者出现 , XGBoost将继续统治机器学习世界!
    【封面图片来源:网站名Unsplash , 所有者: Jared Subia】
    雷锋字幕组是由AI爱好者组成的志愿者翻译团队;团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业 , 北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所 。
    了解字幕组请联系微信:tlacttlact
    转载请联系字幕组微信并注明出处:雷锋字幕组
    雷锋网雷锋网
    【中年|机器学习算法的新女王——XGBoost】


      推荐阅读