专栏首页新智元陈天奇做的XGBoost为什么能横扫机器学习竞赛平台?

陈天奇做的XGBoost为什么能横扫机器学习竞赛平台?


新智元报道

编辑:元子

【新智元导读】XGBoost号称“比赛夺冠的必备大杀器”,横扫机器学习竞赛罕逢敌手,堪称机器学习算法中的新女王!

在涉及非结构化数据(图像、文本等)的预测问题中,人工神经网络显著优于所有其他算法或框架。但当涉及到中小型结构/表格数据时,基于决策树的算法现在被认为是最佳方法。而基于决策树算法中最惊艳的,非XGBoost莫属了。

打过Kaggle、天池、DataCastle、Kesci等国内外数据竞赛平台之后,一定对XGBoost的威力印象深刻。XGBoost号称“比赛夺冠的必备大杀器”,横扫机器学习竞赛罕逢敌手。最近甚至有一位大数据/机器学习主管被XGBoost在项目中的表现惊艳到,盛赞其为“机器学习算法中的新女王”!

XGBoost最初由陈天奇开发。陈天奇是华盛顿大学计算机系博士生,研究方向为大规模机器学习。他曾获得KDD CUP 2012 Track 1第一名,并开发了SVDFeature,XGBoost,cxxnet等著名机器学习工具,是Distributed (Deep) Machine Learning Common的发起人之一。

XGBoost实现了高效、跨平台、分布式gradient boosting (GBDT, GBRT or GBM) 算法的一个库,可以下载安装并应用于C++,Python,R,Julia,Java,Scala,Hadoop等。目前Github上超过15700星、6500个fork。

项目主页:

https://XGBoost.ai/

XGBoost是什么

XGBoost全称:eXtreme Gradient Boosting,是一种基于决策树的集成机器学习算法,使用梯度上升框架,适用于分类和回归问题。优点是速度快、效果好、能处理大规模数据、支持多种语言、支持自定义损失函数等,不足之处是因为仅仅推出了不足5年时间,需要进一步的实践检验。

XGBoost选用了CART树,数学公式表达XGBoost模型如下:

K是树的数量,F表示所有可能的CART树,f表示一棵具体的CART树。这个模型由K棵CART树组成。

模型的目标函数,如下所示:

XGBoost具有以下几个特点:

  • 灵活性:支持回归、分类、排名和用户定义函数
  • 跨平台:适用于Windows、Linux、macOS,以及多个云平台
  • 多语言:支持C++, Python, R, Java, Scala, Julia等
  • 效果好:赢得许多数据科学和机器学习挑战。用于多家公司的生产
  • 云端分布式:支持多台计算机上的分布式训练,包括AWS、GCE、Azure和Yarn集群。可以与Flink、Spark和其他云数据流系统集成

下图显示了基于树的算法的发展历程:

  • 决策树:由一个决策图和可能的结果(包括资源成本和风险)组成, 用来创建到达目标的规划。
  • Bagging:是一种集合元算法,通过多数投票机制将来自多决策树的预测结合起来,也就是将弱分离器 f_i(x) 组合起来形成强分类器 F(x) 的一种方法
  • 随机森林:基于Bagging算法。随机选择一个包含多种特性的子集来构建一个森林,或者决策树的集合
  • Boosting:通过最小化先前模型的误差,同时增加高性能模型的影响,顺序构建模型
  • 梯度上升:对于似然函数,要求最大值,叫做梯度上升
  • XGBoost:极端梯度上升,XGBoost是一个优化的分布式梯度上升库,旨在实现高效,灵活和跨平台

为什么XGBoost能横扫机器学习竞赛平台?

下图是XGBoost与其它gradient boosting和bagged decision trees实现的效果比较,可以看出它比R, Python,Spark,H2O的基准配置都快。

XGBoost和Gradient Boosting Machines(GBMs)都是集合树方法,使用梯度下降架构来提升弱学习者(通常是CART)。而XGBoost通过系统优化和算法增强改进了基础GBM框架,在系统优化和机器学习原理方面都进行了深入的拓展。

系统优化:

并行计算

由于用于构建base learners的循环的可互换性,XGBoost可以使用并行计算实现来处理顺序树构建过程。

外部循环枚举树的叶节点,第二个内部循环来计算特征,这个对算力要求更高一些。这种循环嵌套限制了并行化,因为只要内部循环没有完成,外部循环就无法启动。

因此,为了改善运行时,就可以让两个循环在内部交换循环的顺序。此开关通过抵消计算中的所有并行化开销来提高算法性能。

Tree Pruning

GBM框架内树分裂的停止标准本质上是贪婪的,取决于分裂点的负损失标准。XGBoost首先使用'max_depth'参数而不是标准,然后开始向后修剪树。这种“深度优先”方法显著的提高了计算性能。

硬件优化

该算法旨在有效利用硬件资源。这是通过在每个线程中分配内部缓冲区来存储梯度统计信息来实现缓存感知来实现的。诸如“核外”计算等进一步增强功能可优化可用磁盘空间,同时处理不适合内存的大数据帧。

算法增强:

正则化

它通过LASSO(L1)和Ridge(L2)正则化来惩罚更复杂的模型,以防止过拟合。

稀疏意识

XGBoost根据训练损失自动“学习”最佳缺失值并更有效地处理数据中不同类型的稀疏模式。

加权分位数草图

XGBoost采用分布式加权分位数草图算法,有效地找到加权数据集中的最优分裂点。

交叉验证

该算法每次迭代时都带有内置的交叉验证方法,无需显式编程此搜索,并可以指定单次运行所需的增强迭代的确切数量。

为了测试XGBoost到底有多快,可以通过Scikit-learn的'Make_Classification'数据包,创建一个包含20个特征(2个信息和2个冗余)的100万个数据点的随机样本。

下图为逻辑回归,随机森林,标准梯度提升和XGBoost效率对比:

参考资料

  1. https://XGBoost.readthedocs.io/en/latest/tutorials/model.html
  2. https://homes.cs.washington.edu/~tqchen/
  3. https://towardsdatascience.com/https-medium-com-vishalmorde-xgboost-algorithm-long-she-may-rein-edd9f99be63d

本文分享自微信公众号 - 新智元(AI_era),作者:新智元

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【普华永道全息图解】机器学习演化史,方法、应用场景与发展趋势

    【新智元导读】普华永道最近推出了一系列机器学习信息图示,很好地将机器学习的发展历史、关键方法以及未来会如何影响社会生活展现了出来。基础概念部分包括机器学习各大学...

    新智元
  • 【Nature雄文】当深度学习遇上生物学——440篇bioRxiv相关讨论创史上之最

    新智元编译 来源:Nature 作者:Sarah Webb 编译:赵以文 【新智元导读】深度学习为分析生物大数据提供了强大的工具。BioRxiv预印本服...

    新智元
  • 2016机器学习三大趋势:算法经济将引导人工智能走向何方

    【新智元导读】2016年机器学习有三大趋势。其中,Gartner分析认为,算法将形成一个全球性的交易市场,就像当年的App经济,催生出全新一代的专业技术初创企业...

    新智元
  • XGBoost资料汇总,以及它背后的故事

    近来,群中有几个小伙伴想要公号推送XGBoost的相关内容,去年我在学习XGBoost时写过几篇笔记(恕我当时理解的浅显):

    double
  • 周末漫谈|XGBoost与深度学习到底孰优孰劣?都说XGBoost好用,为什么名气总不如深度学习?

    来源|Quora 整理|AI100 AlphaGo大战柯洁、李世石后,所有人都能谈上几句深度学习。人工智能在围棋上的这场突破,最终还要归功于机器学习三巨头三十年...

    AI科技大本营
  • 第 02 课:XGBoost 简介

    XGBoost 是为速度和表现而设计的梯度提升决策树的实现。 XGBoost 代表e X treme G radient Boosti ng。 它由陈天琪开...

    PM小王
  • 结构化数据上的机器学习大杀器XGBoost

    XGBoost是一个机器学习算法工具,它的原理本身就并不难理解,而且你并不需要彻底搞懂背后的原理就能把它用得呼呼生风。 它的威力有多强? 自从2014年9月份在...

    AI科技大本营
  • 【推荐收藏】带你撸一遍 XGBoost论文

    XGBoost作为一个非常常用的算法,我觉得很有必要了解一下它的来龙去脉,于是抽空找了一些资料,主要包括陈天奇大佬的论文以及演讲PPT,以及网络上的一些博客文章...

    Sam Gor
  • 集成学习经典算法之XGBoost

    在算法圈,相信大家对XGBoost的大名早有耳闻,在CTR广告点击预估中更是炙手可热的大神器,接下来我就给大家简单介绍下,XGBoost到底是何方神圣?

    用户7569543
  • 【推荐收藏】带你撸一遍 XGBoost论文

    XGBoost作为一个非常常用的算法,我觉得很有必要了解一下它的来龙去脉,于是抽空找了一些资料,主要包括陈天奇大佬的论文以及演讲PPT,以及网络上的一些博客文章...

    石晓文

扫码关注云+社区

领取腾讯云代金券