机器学习之-BoostedTree
1. 前言
Boosted Tree是数据挖掘和机器学习中最常用的算法之一。因为它效果好,对于输入要求不敏感,往往是从统计学家到数据科学家必备的工具之一,它同时也是kaggle比赛冠军选手最常用的工具。最后,因为它的效果好,计算复杂度不高,也在工业界中有大量的应用。
2. Boosted Tree的若干同义词
说到这里可能有人会问,为什么我没有听过这个名字。这是因为Boosted Tree有各种马甲,比如GBDT, GBRT (gradient boosted regression tree),MART1,LambdaMART也是一种boosted tree的变种。网上有很多介绍Boosted tree的资料,不过大部分都是基于Friedman的最早一篇文章Greedy Function Approximation: A Gradient Boosting Machine的翻译。个人觉得这不是最好最一般地介绍boosted tree的方式。而网上除了这个角度之外的介绍并不多。这篇文章是我个人对于boosted tree和gradient boosting 类算法的总结,其中很多材料来自于我TA UW机器学习时的一份讲义2。
3. 有监督学习算法的逻辑组成
要讲boosted tree,要先从有监督学习讲起。在有监督学习里面有几个逻辑上的重要组成部件3,初略地分可以分为:模型,参数 和 目标函数。
i. 模型和参数
模型指给定输入xi如何去预测 输出 yi。我们比较常见的模型如线性模型(包括线性回归和logistic regression)采用了线性叠加的方式进行预测ˆyi=∑jwjxij 。其实这里的预测y可以有不同的解释,比如我们可以用它来作为回归目标的输出,或者进行sigmoid 变换得到概率,或者作为排序的指标等。而一个线性模型根据y的解释不同(以及设计对应的目标函数)用到回归,分类或排序等场景。参数指我们需要学习的东西,在线性模型中,参数指我们的线性系数w。
ii. 目标函数:损失 + 正则
模型和参数本身指定了给定输入我们如何做预测,但是没有告诉我们如何去寻找一个比较好的参数,这个时候就需要目标函数登场了。一般的目标函数包含下面两项
常见的误差函数有L=∑nil(yi,ˆyi) 比如平方误差 l(yi,ˆyi)=(yi−ˆyi)2 ,logistic误差函数(l(yi,ˆyi)=yiln(1+e−ˆyi)+(1−yi)ln(1+eˆyi) )等。而对于线性模型常见的正则化项有L2正则和L1正则。这样目标函数的设计来自于统计学习里面的一个重要概念叫做Bias-variance tradeoff4。比较感性的理解,Bias可以理解为假设我们有无限多数据的时候,可以训练出最好的模型所拿到的误差。而Variance是因为我们只有有限数据,其中随机性带来的误差。目标中误差函数鼓励我们的模型尽量去拟合训练数据,这样相对来说最后的模型会有比较少的 bias。而正则化项则鼓励更加简单的模型。因为当模型简单之后,有限数据拟合出来结果的随机性比较小,不容易过拟合,使得最后模型的预测更加稳定。
iii. 优化算法
讲了这么多有监督学习的基本概念,为什么要讲这些呢? 是因为这几部分包含了机器学习的主要成分,也是机器学习工具设计中划分模块比较有效的办法。其实这几部分之外,还有一个优化算法,就是给定目标函数之后怎么学的问题。之所以我没有讲优化算法,是因为这是大家往往比较熟悉的“机器学习的部分”。而有时候我们往往只知道“优化算法”,而没有仔细考虑目标函数的设计的问题,比较常见的例子如决策树的学习,大家知道的算法是每一步去优化gini entropy,然后剪枝,但是没有考虑到后面的目标是什么。
4. Boosted Tree
i. 基学习器:分类和回归树(CART)
话题回到boosted tree,我们也是从这几个方面开始讲,首先讲模型。Boosted tree 最基本的组成部分叫做回归树(regression tree),也叫做CART5。
上面就是一个CART的例子。CART会把输入根据输入的属性分配到各个叶子节点,而每个叶子节点上面都会对应一个实数分数。上面的例子是一个预测一个人是否会喜欢电脑游戏的 CART,你可以把叶子的分数理解为有多可能这个人喜欢电脑游戏。有人可能会问它和decision tree的关系,其实我们可以简单地把它理解为decision tree的一个扩展。从简单的类标到分数之后,我们可以做很多事情,如概率预测,排序。
ii. Tree Ensemble
一个CART往往过于简单无法有效地预测,因此一个更加强力的模型叫做tree ensemble。
在上面的例子中,我们用两棵树来进行预测。我们对于每个样本的预测结果就是每棵树预测分数的和。到这里,我们的模型就介绍完毕了。现在问题来了,我们常见的随机森林和boosted tree和tree ensemble有什么关系呢?如果你仔细的思考,你会发现RF和boosted tree的模型都是tree ensemble,只是构造(学习)模型参数的方法不同。第二个问题:在这个模型中的“参数”是什么。在tree ensemble中,参数对应了树的结构,以及每个叶子节点上面的预测分数。
最后一个问题当然是如何学习这些参数。在这一部分,答案可能千奇百怪,但是最标准的答案始终是一个:定义合理的目标函数,然后去尝试优化这个目标函数。在这里我要多说一句,因为决策树学习往往充满了heuristic。 如先优化吉尼系数,然后再剪枝啦,限制最大深度,等等。其实这些heuristic的背后往往隐含了一个目标函数,而理解目标函数本身也有利于我们设计学习算法,这个会在后面具体展开。
对于tree ensemble,我们可以比较严格的把我们的模型写成是:
ˆyi=∑Kk=1fk(xi),fk∈F
其中每个f是一个在函数空间6(F)里面的函数,而F对应了所有regression tree的集合。我们设计的目标函数也需要遵循前面的主要原则,包含两部分
Obj(Θ)=∑nil(yi,ˆyi)+∑Kk=1Ω(fk)
iii. 模型学习:additive training
其中第一部分是训练误差,也就是大家相对比较熟悉的如平方误差, logistic loss等。而第二部分是每棵树的复杂度的和。这个在后面会继续讲到。因为现在我们的参数可以认为是在一个函数空间里面,我们不能采用传统的如SGD之类的算法来学习我们的模型,因此我们会采用一种叫做additive training的方式(另外,在我个人的理解里面7,boosting就是指additive training的意思)。每一次保留原来的模型不变,加入一个新的函数$f$到我们的模型中。
现在还剩下一个问题,我们如何选择每一轮加入什么f呢?答案是非常直接的,选取一个f来使得我们的目标函数尽量最大地降低8。
这个公式可能有些过于抽象,我们可以考虑当l是平方误差的情况。这个时候我们的目标可以被写成下面这样的二次函数9:
更加一般的,对于不是平方误差的情况,我们会采用如下的泰勒展开近似来定义一个近似的目标函数,方便我们进行这一步的计算。
当我们把常数项移除之后,我们会发现如下一个比较统一的目标函数。这一个目标函数有一个非常明显的特点,它只依赖于每个数据点的在误差函数上的一阶导数和二阶导数10。有人可能会问,这个材料似乎比我们之前学过的决策树学习难懂。为什么要花这么多力气来做推导呢?
因为这样做使得我们可以很清楚地理解整个目标是什么,并且一步一步推导出如何进行树的学习。这一个抽象的形式对于实现机器学习工具也是非常有帮助的。传统的GBDT可能大家可以理解如优化平法a残差,但是这样一个形式包含可所有可以求导的目标函数。也就是说有了这个形式,我们写出来的代码可以用来求解包括回归,分类和排序的各种问题,正式的推导可以使得机器学习的工具更加一般。
v. 关键步骤
接下来是最关键的一步11,在这种新的定义下,我们可以把目标函数进行如下改写,其中I被定义为每个叶子上面样本集合 Ij = { i|q(xi)=j}
那么这个目标函数可以进一步改写成如下的形式,假设我们已经知道树的结构q,我们可以通过这个目标函数来求解出最好的w,以及最好的w对应的目标函数最大的增益
Obj(t)=∑Tj=1[(∑i∈Ijgi)wj+12(∑i∈Ijhi+λ)w2j]+γT=∑Tj=1[Gjwj+12(Hj+λ)w2j]+γT
这两个的结果对应如下,左边是最好的w,右边是这个w对应的目标函数的值。到这里大家可能会觉得这个推导略复杂。其实这里只涉及到了如何求一个一维二次函数的最小值的问题12。如果觉得没有理解不妨再仔细琢磨一下
w∗j=−GjHj+λObj=−12∑Tj=1G2jHj+λ+γT
- 1: Multiple Additive Regression Trees, Jerry Friedman, KDD 2002 Innovation Award 创新奖 http://www.sigkdd.org/node/362
- 2: Introduction to Boosted Trees, Tianqi Chen
, 2014 http://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf - 3: Principles of Data Mining, David Hand et al,2001. Chapter 1.5 Components of Data Mining Algorithms, 将数据挖掘算法解构为四个组件:1)模型结构(函数形式,如线性模型),2)评分函数(评估模型拟合数据的质量,如似然函数,误差平方和,误分类率),3)优化和搜索方法(评分函数的优化和模型参数的求解),4)数据管理策略(优化和搜索时对数据的高效访问)。
- 4: 在概率统计中,参数估计量的评选标准有三:1)无偏性(参数估计量的均值等于参数的真实值),2)有效性(参数估计量的方差越小越好),3)一致性(当样本数从有限个逐渐增加到无穷多个时,参数估计量依概率收敛于参数真值)。《概率论与数理统计》,高祖新等,1999年,7.3节估计量的评选标准
- 5: Breiman, L., Friedman, J., Stone, C. J., & Olshen, R. A. (1984). Classification and regression trees. CRC press. Breiman获KDD 2005 Innovation Award 创新奖
- 6: F是泛函空间,或者叫假设空间;f是函数,或者叫假设。这里的ensemble一共有K个组件/基学习器,他们的组合方式是不带权重的累加。NOTE:【一般boosting里面(如AdaBoost)f是有权重叠加 原因是那些权重自然地被吸收到叶子的weight里面去了。】 by Chen Tianqi
- 7: Friedman等( Friedman, J., Hastie, T., & Tibshirani, R. (2000). Additive logistic regression: a statistical view of boosting (with discussion and a rejoinder by the authors). The annals of statistics, 28(2), 337-407. )在2000年为boosting这种集成学习方法范式提供了一种统计解释,即加性逻辑斯蒂回归。但是他们不能完全解释AdaBoost算法的抗过拟合性。南大周志华等人(http://www.slideshare.net/hustwj/ccl2014-keynote)从统计学习理论的间隔分布出发,较完满的解决了这个问题。
- 8: 这个思想即是AdaBoost等boosting算法的思想:串行生成一系列基学习器,使得当前基学习器都重点关注以前所有学习器犯错误的那些数据样本,如此达到提升的效果。
- 9: 注意,这里的优化搜索变量是f(即搜索当前的基学习器f),所以其他不关于f的项都被吸纳到const中,如当前的误差损失
- 10: 1). 分别作为要优化的变量f的一次系数g和二次系数1/2∗h
2). 误差函数对 ˆy(t−1)i求导时,即涉及到前t−1个基学习器,因为他们决定了当前的预测结果 - 11: 因为每个数据点落入且仅落入一个叶子节点,所以可以把n个数据点按叶子成组,类似于合并同类项,两个数据点同类指的是落入相同的叶子,即这里的指示变量集Ij
- 12: 变量是wj,关于它的二次函数是:Gj∗wj+1/2(Hj+λ)∗w2j,该函数对变量wj求导并令其等于0,即得到w∗j的表达式。
转载自:http://www.52cs.org/?p=429
机器学习之-BoostedTree相关推荐
- 机器学习,深度学习相关介绍
最近看了周志华老师的书,主要内容如下,涉及到很多机器学习的知识点: by [2017.12.29 更新 denny shenzhen 59888745@qq.com] 1.线性模型: 线性回归:多 ...
- 基于树结构的机器学习模型
基于树结构的机器学习模型 在深度学习被广泛应用之前,基于树形结构的机器学习模型,比如说决策树,随机森林,GBDT,Xgboost等等被广泛的应用到分类等常见场景中,下面总结一下常见一个一些树形结构的机 ...
- 【机器学习笔记】xgboost陈天奇PPT逐页翻译详解
xgboost是机器学习目前使用最广.效率最高的工具.之前大概了解过xgboost的原理,说实话并没有真正的理解,甚至连它和Lightgbm的优势劣势在哪里都不知道.因此这次我打算来仔细研读陈天奇大神 ...
- 机器学习——陈天奇Boosted Tree(GBDT)详解
工作了好多年,从最开始使用xgboost,到后来的lightGBM,它们的底层原理都是Boosted Tree,之前一直没有做过总结,今天我就把陈天奇的Boosted Tree翻译一下,让大家从原理了 ...
- A01_机器学习_3.集成学习
从三种基本决策树到集成学习 决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型. 本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5. ...
- 机器学习分类指标:精确率、准确率、召回率详解
混淆矩阵 在介绍具体的定义之前先了解一些混淆矩阵(confusion matrix): 一种 NxN 表格,用于总结分类模型的预测效果:即标签和模型预测的分类之间的关联.在混淆矩阵中,一个轴表示模型预 ...
- 【机器学习】RNN循环神经网络
循环神经网络归属: 领域:机器学习 方向:自然语言处理 贡献:自动文本生成 循环神经网络实际应用: 生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题, 这个时候需 ...
- 开源自动化机器学习框架
20211101 在 Airbnb 使用机器学习预测房源的价格 https://blog.csdn.net/weixin_33735077/article/details/87976278?spm=1 ...
- 机器学习常用术语词汇表
EOF是一个计算机术语,为End Of File的缩写 ,在操作系统中表示资料源无更多的资料可读取. 刚接触机器学习框架 TensorFlow 的新手们,这篇由 Google 官方出品的常用术语词汇表 ...
- 预见未来丨机器学习:未来十年研究热点
<h2 class="subheader">机器学习:未来十年研究热点 </h2><div class="gray-d1-c margin- ...
最新文章
- 光遗传学离诺奖又双叒进一步!10天后谜底将揭晓 (盘点光遗传学近年来获奖记录)...
- 【Bugly干货分享】iOS内存管理:从MRC到ARC实践
- 万字长文详解大数据应用实战案例-万亿级大数据监控平台建设方案
- [图形学]切向空间(Tangent Space)
- ASP.NET MVC 随笔汇总
- php 和风天气,【原创】彩云/和风天气插件
- cnn 示意图_Two-Stream CNN(双流CNN)介绍(NIPS2014)
- 【Computer Organization笔记25】I/O:程序直接控制,程序中断方式,直接存储访问(DMA),通道控制方式
- scala的map映射问题
- HAProxy + Keepalived实现MySQL的高可用负载均衡
- candence的图纸大小设置_标准制图图纸尺寸大小
- “安全删除硬件”图标 隐藏
- Verilog十大基本功5 (关于verilog中的signed类型)
- 基于OpenCV双边滤波器的人脸美化 .
- 银行磁条卡即将被淘汰
- Error response from daemon: Get https://192.168.x.x/v2/: x509: cannot validate certificate for
- zookeeper集群启动时配置异常 myid file is missing
- vue获取服务器路径图片显示,vue img图片路径和背景图片路径打包问题
- 计算机科学掉发,大学“越学越秃”的专业,榜首让人出乎意料,计算机竟无缘前5...
- linux ubuntu 上安装rar 压缩软件
热门文章
- Centos yum安装snmp
- windows、ubuntu下eclipse搭建java、Python环境问题总结
- 网络字节序与主机字节序 高低位
- Irrlicht引擎例子说明及中文链接
- php 处理eml,PHP读取、解析eml文件及生成网页的方法示例
- a4b5笔记本大小对比_【玩码】全新升级MX350独显 小米笔记本Pro 15 2020款为创造力而生...
- iphone流量 信息服务器,iphone几个功能必须关闭,别再让流量不够用
- 又见回文数 NYOJ781
- qpushbutton设置两个图标_苹果手机的月亮图标有什么功能?原来这么好用,不会真的太浪费了...
- 【牛客挑战赛38:E】七星阵(极角排序+dp+思维)