机器学习——Gradient Boost Decision Tree(&Treelink)

引用:http://www.cnblogs.com/joneswood/archive/2012/03/04/2379615.html

为自己的简单摘要,完整的请看上面的URL

决策树

      应用最广的分类算法之一,模型学习的结果是一棵决策树,这棵决策树可以被表示成多个if-else的规则。决策树实际上是将空间用超平面进行划分的一种方法,每次分割的时候,都将当前的空间一分为二,比如说下面的决策树

Boosting方法:

    Boosting这其实思想相当的简单,大概是,对一份数据,建立M个模型(比如分类),一般这种模型比较简单,称为弱分类器(weak learner)每次分类都将上一次分错的数据权重提高一点再进行分类,这样最终得到的分类器在测试数据与训练数据上都可以得到比较好的成绩。

Gradient Boosting方法:

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

 Treelink模型

      Treelink不像决策树模型那样仅由一棵决策树构成,而是由多棵决策树构成,通常都是上百棵树,而且每棵树规模都较小(即树的深度会比较浅)。模型预测的时候,对于输入的一个样本实例,首先会赋予一个初值,然后会遍历每一棵决策树,每棵树都会对预测值进行调整修正,最后得到预测的结果:

F0是设置的初值, Ti是一棵一棵的决策树。对于不同的问题(回归问题或者分类问题)以及选择不同的损失函数,初值的设定是不同的。比如回归问题并且选择高斯损失函数,那么这个初值就是训练样本的目标的均值。

Treelink自然包含了boosting的思想:将一系列弱分类器组合起来,构成一个强分类器。它不要求每棵树学到太多的东西,每颗树都学一点点知识,然后将这些学到的知识累加起来构成一个强大的模型。

Treelink模型的学习过程,就是多颗决策树的构建过程。在树的构建过程中,最重要的就是寻找分裂点(某个特征的某个取值)。在Treelink算法我们通过损失函数的减小程度用来衡量特征分裂点的样本区分能力,Loss减小得越多,分裂点就越好。即以某个分裂点划分,把样本分成两部分,使得分裂后样本的损失函数值减小的最多。


GBGT相关实现:

go实现的GBGT:

http://tullo.ch/articles/gradient-boosted-decision-trees-primer/
https://github.com/ajtulloch/decisiontrees     
https://spark.apache.org/docs/1.2.1/mllib-ensembles.html   spark维基百科说明
http://haifengl.github.io/smile/     一个开源的机器学习引擎,包括GBGT
https://en.wikipedia.org/wiki/Gradient_boosting   维基百科



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值