特稿 >

行业洞察 >

都说XGBoost好用,为什么名气总不如深度学习?

都说XGBoost好用,为什么名气总不如深度学习?

投稿 丨 行业洞察

20986
3029

2017-06-04

来源|Quora

整理|AI100


AlphaGo大战柯洁、李世石后,所有人都能谈上几句深度学习。人工智能在围棋上的这场突破,最终还要归功于机器学习三巨头三十年如一日的长期研究。


相比之下,横扫Kaggle大赛的XGBoost(去年的29个获奖方案中,有17个是用XGBoost),名气可就小太多了。更何况,它的发起人还只是个名不见经传的年轻人。


有人打抱不平说,XGBoost要比深度学习更重要,这一点毫无疑问。


因为它好用,在很多情况下都更为可靠、灵活,而且准确;在绝大多数的回归和分类问题上,XGBoost的实际表现都是顶尖的。


当然,不买账的人也不少。


某Quora就撰文到,针对非常要求准确度的那些问题,XGBoost确实很有优势,同时它的计算特性也很不错。然而,相对于支持向量机、随机森林或深度学习,XGBoost的优势倒也没到那种夸张的程度。特别是当你拥有足够的训练数据,并能找到合适的深度神经网络时,深度学习的效果就明显能好上一大截。


还有用户打趣说,XGBoost的名气坏在它的名字上,深度学习一听就非常高大上,XGBoost再怎么包装也是书呆子气十足。


那么,XGBoost的发起人又是怎么说的呢?


XGBoost的发起人——陈天奇博士,他并不认可将深度学习和XGBoost截然对立起来。他谈到,这两种方法在其各自擅长领域的性能表现都非常好:


1、XGBoost专注于模型的可解释性,而基于人工神经网络的深度学习,则更关注模型的准确度。


2、XGBoost更适用于变量数较少的表格数据,而深度学习则更适用于图像或其他拥有海量变量的数据。


到底,XGBoost与深度学习孰优孰劣?


陈天奇在Quora上的解答如下:


1、不同的机器学习模型适用于不同类型的任务。深度神经网络通过对时空位置建模,能够很好地捕获图像、语音、文本等高维数据。而基于树模型的XGBoost则能很好地处理表格数据,同时还拥有一些深度神经网络所没有的特性(如:模型的可解释性、输入数据的不变性、更易于调参等)。


2、这两类模型都很重要,并广泛用于数据科学竞赛和工业界。举例来说,几乎所有采用机器学习技术的公司都在使用tree boosting,同时XGBoost已经给业界带来了很大的影响。


3、作为一名机器学习研究者,我一直在用深度学习和XGBoost。我相信,我们需要全面理解每一种模型,并能选出最适合你当前任务的那个。XGBoost、深度神经网络与其他经常要用的机器学习算法(如因子分解机、logistic回归分析等),值得机器学习行业的每一位从业者关注。这里没有一药能解百病的说法。


既然提到XGBoost在业界已经有广泛的应用,那么到底又有哪些呢?


XGBoost实际用例不完全列表


dmlc/xgboost(https://github.com/dmlc/xgboost/tree/master/demo#usecases


1、使用XGBoost的Kaggle获奖方案可在这里找到

https://www.kaggle.com/kernels

2、使用XGBoost的Seldon预测服务Iris

http://docs.seldon.io/iris-demo.html

3、XGBoost的分布式版本被用于阿里云大数据计算服务ODPS 

https://yq.aliyun.com/articles/6355

4、使用XGBoost的Graphlab Create

5、腾讯数据平台把分布式版本的XGBoost用于微信内的购买点击预测

6、汽车之家把分布式版本的XGBoost用于展示广告的点击率预测


谈了XGBoost的应用范围,再来客观聊聊XGBoost的性能。说到性能,就不得不说到它的一个突出特点——运行很快。


XGBoost运行很快


至于它为什么这么快,有人说C++和并行计算是主要原因,而陈天奇则一针见血说到,性能原本就是XGBoost最初的设计目标:


比如:


1、内存优化,大部分的内存分配在第一次加载中就完成了,之后便不再涉及动态内存分配的问题。

2、缓存线优化,训练模式尽可能善用缓存机制。

3、模型自身的改善,我们开发出模型的各种变体,从而令算法本身更具强健性、更加准确。详见:Introduction to Boosted Trees(http://xgboost.readthedocs.org/en/latest/model.html) 。


另外,性能不仅仅意味着速度上的提升,在资源有限情况下你仍能对大型数据集使用该算法:


1、我们不断探索该工具的极限,以最大限度地利用计算资源,让你在一个节点上就能运行多个实例。

2、使用扩展内存的版本,允许数据存在硬盘上,不必把所有数据导入内存。

3、分布式版本对XGBoost的每一个节点都进行过优化,让你可以有效地在更少节点上处理更大的数据集。


稀稀拉拉扯了这么多,您对XGBoost是什么观点呢?相比深度学习,XGBoost有什么优势和缺陷呢?欢迎在留言区写下你的宝贵观点哦。


原文链接:

https://www.quora.com/Why-is-xgboost-given-so-much-less-attention-than-deep-learning-despite-its-ubiquity-in-winning-Kaggle-solutions

https://github.com/dmlc/xgboost/tree/master/demo#usecases

https://www.quora.com/What-makes-xgboost-run-much-faster-than-many-other-implementations-of-gradient-boosting


【本文来自投稿,文中观点不代表Xtecher立场。】


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

账号登录

重置密码

还没有账号?立即注册>

账号注册

已有账号?立即登录>注册企业会员

重置密码

返回

绑定手机