现在的位置: 首页 > 综合 > 正文

gradient boosted regression tree

2018年02月20日 ⁄ 综合 ⁄ 共 1139字 ⁄ 字号 评论关闭

这个算法出自Greedy function Approximation – A Gradient Boosting Machine

作者实在是有够抽象,一个不复杂的算法让他讲的那么复杂

本人也参考了这篇博客

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/02/machine-learning-boosting-and-gradient-boosting.html


但是,最终让我基本明白这个算法还是看了这篇论文 web-search ranking with initialized gradient boosted regression trees


1. 首先讲下decision tree, 按照书上的算法是通过信息增益进行结点的分割和建树,这里我们是通过


建树


2. 再讲下random forest.RF与boosted trees没有多大关系。RF就是每次随机选择实例,并随机选择k个特征进行建树,决策的过程就是对所有树输出的结果的平均。

优点就是不会有过拟合。

这里说的不错:http://www.cnblogs.com/LeftNotEasy/archive/2011/03/07/random-forest-and-gbdt.html

按这种算法得到的随机森林中的每一棵都是很弱的,但是大家组合起来就很厉害了。我觉得可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数据),可以用不同的角度去看待它,最终由各个专家,投票得到结果。


3.  gradient boosted trees

和rf类似,也是建立多颗树,并且决策的过程也是所有树输出结果的平均

但是当前树的建立是基于前面所有树的建立的。


每一次建立模型是在之前建立模型损失函数的梯度下降方向。这句话有一点拗口,损失函数(loss
function)描述的是模型的不靠谱程度,损失函数越大,则说明模型越容易出错(其实这里有一个
方差、偏差均衡的问题,但是这里就假设损失函数越大,模型越容易出错)。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。


首先,前m-1个模型是

其损失函数的梯度是:

那么下一个模型m,注意,就是要等于这个梯度,使得前m个模型相加的损失函数最小

对于g的系数,完全可以不管,影响不大

让r = g

那么就可以建立一颗树,

所以,gradient tree的装B算法可以这样描述:

其实,算法很简单,就是

注意其中,r = r- aT,r就是梯度

然后在下一轮的迭代中,就是根据梯度r来建树




抱歉!评论已关闭.