为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?

这是一个非常好,也非常值得思考的问题。换一个方式来问这个问题:为什么基于 tree-ensemble 的机器学习方法,在实际的 kaggle 比赛中效果非常好?

通常,解释一个机器学习模型的表现是一件很复杂事情,而这篇文章尽可能用最直观的方式来解释这一问题。

我主要从三个方面来回答这个问题。

1、理论模型 (站在 vc-dimension 的角度)

2、实际数据

3、系统的实现 (主要基于 xgboost)

通常决定一个机器学习模型能不能取得好的效果,以上三个方面的因素缺一不可。

站在理论模型的角度

统计机器学习里经典的 vc-dimension 理论告诉我们:一个机器学习模型想要取得好的效果,这个模型需要满足以下两个条件:

1、模型在我们的训练数据上的表现要不错,也就是 trainning error 要足够小。

2、模型的 vc-dimension 要低。换句话说,就是模型的自由度不能太大,以防overfit。

当然,这是我用大白话描述出来的,真正的 vc-dimension 理论需要经过复杂的数学推导,推出 vc-bound。

vc-dimension 理论其实是从另一个角度刻画了一个我们所熟知的概念,那就是 bias variance trade-off。

好,现在开始让我们想象一个机器学习任务。对于这个任务,一定会有一个 “上帝函数” 可以完美的拟合所有数据(包括训练数据,以及未知的测试数据)。很可惜,这个函数我们肯定是不知道的 (不然就不需要机器学习了)。我们只可能选择一个 “假想函数” 来 逼近 这个 “上帝函数”,我们通常把这个 “假想函数” 叫做 hypothesis。

在这些 hypothesis 里,我们可以选择 svm, 也可以选择 logistic regression. 可以选择单棵决策树,也可以选择 tree-ensemble (gbdt, random forest). 现在的问题就是,为什么 tree-ensemble 在实际中的效果很好呢?

区别就在于 “模型的可控性”。

先说结论,tree-ensemble 这样的模型的可控性是好的,而像 LR这样的模型的可控性是不够好的(或者说,可控性是没有 tree-ensemble 好的)。为什么会这样?别急,听我慢慢道来。

我们之前说,当我们选择一个 hypothsis 后,就需要在训练数据上进行训练,从而逼近我们的 “上帝函数”。我们都知道,对于 LR 这样的模型。如果 underfit,我们可以通过加 feature,或者通过高次的特征转换来使得我们的模型在训练数据上取得足够高的正确率。

而对于 tree-enseble 来说,我们解决这一问题的方法是通过训练更多的 “弱弱” 的 tree. 所以,这两类模型都可以把 training error 做的足够低,也就是说模型的表达能力都是足够的。但是这样就完事了吗?没有,我们还需要让我们的模型的 vc-dimension 低一些。

而这里,重点来了。在 tree-ensemble 模型中,通过加 tree 的方式,对于模型的vcdimension 的改变是比较小的。而在 LR 中,初始的维数设定,或者说特征的高次转换对于 vc-dimension 的影响都是更大的。换句话说,tree-ensemble 总是用一些 “弱弱” 的树联合起来去逼近 “上帝函数”,一次一小步,总能拟合的比较好。而对于 LR 这样的模型,我们很难去猜到这个“上帝函数”到底长什么样子(到底是2次函数还是3次函数?上帝函数如果是介于2次和3次之间怎么办呢?)。所以,一不小心我们设定的多项式维数高了,模型就 “刹不住车了”。俗话说的好,步子大了,总会扯着蛋。这也就是我们之前说的,tree-ensemble 模型的可控性更好,也即更不容易 overfit。

站在数据的角度

除了理论模型之外, 实际的数据也对我们的算法最终能取得好的效果息息相关。kaggle 比赛选择的都是真实世界中的问题。所以数据多多少少都是有噪音的。而基于树的算法通常抗噪能力更强。比如在树模型中,我们很容易对缺失值进行处理。除此之外,基于树的模型对于 categorical feature 也更加友好。

除了数据噪音之外,feature 的多样性也是 tree-ensemble 模型能够取得更好效果的原因之一。通常在一个kaggle任务中,我们可能有年龄特征,收入特征,性别特征等等从不同 channel 获得的特征。而特征的多样性也正是为什么工业界很少去使用 svm 的一个重要原因之一,因为 svm 本质上是属于一个几何模型,这个模型需要去定义 instance 之间的 kernel 或者 similarity (对于linear svm 来说,这个similarity 就是内积)。这其实和我们在之前说过的问题是相似的,我们无法预先设定一个很好的similarity。这样的数学模型使得 svm 更适合去处理 “同性质”的特征,例如图像特征提取中的 lbp 。而从不同 channel 中来的 feature 则更适合 tree-based model, 这些模型对数据的 distributation 通常并不敏感。

站在系统实现的角度

除了有合适的模型和数据,一个良好的机器学习系统实现往往也是算法最终能否取得好的效果的关键。一个好的机器学习系统实现应该具备以下特征:

1、正确高效的实现某种模型。我真的见过有些机器学习的库实现某种算法是错误的。而高效的实现意味着可以快速验证不同的模型和参数。

2、系统具有灵活、深度的定制功能。

3、系统简单易用。

4、系统具有可扩展性, 可以从容处理更大的数据。

到目前为止,xgboost 是我发现的唯一一个能够很好的满足上述所有要求的 machine learning package. 在此感谢青年才俊 陈天奇。

在效率方面,xgboost 高效的 c++ 实现能够通常能够比其它机器学习库更快的完成训练任务。

在灵活性方面,xgboost 可以深度定制每一个子分类器,并且可以灵活的选择 loss function(logistic,linear,softmax 等等)。除此之外,xgboost还提供了一系列在机器学习比赛中十分有用的功能,例如 early-stop, cv 等等。

在易用性方面,xgboost 提供了各种语言的封装,使得不同语言的用户都可以使用这个优秀的系统。

在可扩展性方面,xgboost 提供了分布式训练(底层采用 rabit 接口),并且其分布式版本可以跑在各种平台之上,例如 mpi, yarn, spark 等等。

有了这么多优秀的特性,自然这个系统会吸引更多的人去使用它来参加 kaggle 比赛。

综上所述,理论模型,实际的数据,良好的系统实现,都是使得 tree-ensemble 在实际的 kaggle 比赛中“屡战屡胜”的原因。

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-11-19

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

【学术】欺骗图像识别技术,只需改变一个像素即可将狗变成汽车

日本九州大学的一个团队开发了一种欺骗图像识别技术的新方法。对许多研究人员来说,一般的方法是给图像添加一些功能,这些图像会错误地触发神经网络,并让它识别出它所看到...

3967
来自专栏专知

【干货】一文深入理解机器学习模型可解释的必要性和重要性

1943
来自专栏企鹅号快讯

从吴恩达深度学习课程中学到的21个心得

编译:新知之路、小饭盆、钱天培 今年8月,吴恩达的深度学习课程正式上线,并即刻吸引了众多深度学习粉丝的“顶礼膜拜”。一如吴恩达此前在Coursera上的机器学习...

2119
来自专栏PPV课数据科学社区

学习攻略 | 机器学习和深度学习技能树、面试宝典

人工智能的浪潮正在席卷全球,这些得益于数据量的上涨、运算力的提升和机器学习新算法(深度学习)的出现。机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习...

3895
来自专栏机器之心

学习世界模型,通向AI的下一步:Yann LeCun在IJCAI 2018上的演讲

Yann LeCun 开场介绍说,当前几乎所有的机器学习从业者在实践中使用的都是监督式学习:向机器展示大量的样本,然后告诉机器正确的答案与内部参数,然后就能做图...

1212
来自专栏ATYUN订阅号

OpenAI:通过无监督学习提高语言理解能力

研究者通过一个可扩展的,与任务无关的系统获得了一系列不同语言任务的最新成果,这一系统也即将发布。此方法结合了两种现有的想法:Transformer和无监督的预训...

1204
来自专栏数据科学与人工智能

【陆勤阅读】【推荐】开发者成功使用机器学习的十大诀窍

作者|Alexander Gray 编译|刘帝伟 转自|CSDN 在提供发现埋藏数据深层的模式的能力上,机器学习有着潜在的能力使得应用程序更加的强大并且更能响应...

2178
来自专栏AI科技大本营的专栏

AI 技术讲座精选:深度学习是如何改变数据科学范式的?

【AI100 导读】深度学习正在改变一切。就像电子学和计算机改变了所有的经济活动一样,人工智能将重塑零售、运输、制造、医药、电信、重工业等行业,即使是数据科学本...

3288
来自专栏新智元

【十大诀窍】开发者如何成功使用机器学习

【作者简介】Alexander Gray,Skytree首席技术官,佐治亚理工学院计算机学院副教授,主要致力于大规模数据集的机器学习算法技术研发,1993年开始...

35115
来自专栏大数据挖掘DT机器学习

开发者成功使用机器学习的十大诀窍

作者简介:Alexander Gray,Skytree首席技术官,佐治亚理工学院计算机学院副教授,主要致力于大规模数据集的机器学习算法技术研发,1993年开始...

3294

扫码关注云+社区