提升树

提升树

http://blog.csdn.net/tuqinag/article/details/46447555?ref=myread

简介

在Adaboost算法的框架下,以决策树为基函数的提升方法称为提升树。由于树的线性组合可以很好的拟合训练数据,即使数据中的输入与输出之间的关系很复杂也是如此,提升树被认为是统计学习中性能最好的方法之一,甚至于SVM的性能不相上下。在我的理解中,因为树模型已经将输入与输出的关系变成非线性的了,所以即使是树的线性组合,也是一个非线性模型。

提升树模型

提升树模型可以表示为决策树的加法模型: 

fM(x)=m=1MT(x;Θm)

其中, T(x;Θm) 表示决策树; Θm 为决策树的参数;M为树的个数。

提升树算法采用前向分步算法。首先确定初始提升树 f0(x)=0 ,第m步的模型是 

fm(x)=fm1(x)+T(x;Θm)

其中, fm1(x) 为当前模型,通过经验风险极小化确定下一棵决策树的参数 Θm , 
Θm^=argminΘmi=1NL(yi,fm1(xi)+T(x;Θm))

不同问题的提升树学习算法,其主要区别在于使用的损失函数不同,包括用平方误差损失函数的回归问题,用指数损失函数的分类问题,以及用一般损失函数的一般决策问题。对于二分类问题,提升树算法只需要将Adaboost算法中的基本分类器限制为二分类树即可,可以说这是Adaboost算法的特殊情况,这里不再叙述。下面叙述回归问题的提升树。

提升树算法

已知一个训练数据集 T= { (x1,y1),(x2,y2),...,(xN,yN) }, xiXRn 。如果将输入空间X划分为J个互不相交的区域 R1,R2,...,RJ ,并且在每个区域上确定输出的常量 cj ,那么树可以表示为 

T(x;Θ)=j=1JcjI(xRj)

其中,参数 Θ= { (R1,c1),(R2,c2),...,(RJ,cJ) }表示树的区域划分和各区域上的常数。J是回归树的复杂度即叶结点个数。

当采用平方误差损失函数时, 

L(y,f(x))=(yf(x))2

其损失变为 
L(y,fm1(x)+T(x;Θm))=[yfm1(x)T(x;Θm)]2=[rT(x;Θm)]2

这里, 
r=yfm1(x)

是当前模型拟合数据的残差。所以对回归问题的提升树算法来说,只需要简单地拟合当前模型的残差。因为要使得损失函数最小,就要使得回归树的预测值与残差尽可能接近,所以就可以使用回归树去拟合残差。算法的具体过程如下:

(1)初始化 f0(x)=0

(2)对 m=1,2,...,M

(a)计算残差 

rmi=yifm1(xi),i=1,2,...,N

(b)拟合残差 rmi 学习一个回归树,得到 T(x;Θm)

(c)更新 fm(x)=fm1(x)+T(x;Θm)

(3)得到回归问题提升树 fM(x)=Mm=1T(x;Θm)

注意到在上述过程中,并不像一般的Adaboost算法一样,最后再来累加基本分类器来得到最终分类器,而是在一步步迭代中已经在累加基本分类器了。

梯度提升

当损失函数是平方损失或是指数损失函数时,每一步的优化是很简单的。但对于一般的损失函数而言,往往每一步优化并不容易。这里就可以使用梯度提升的方法,关键是利用损失函数的负梯度在当前模型的值 

[L(yi,f(xi))f(xi)]f(x)=fm1(x)

作为回归提升树算法中残差的近似值,拟合一个回归树。

使用该方法后,与原过程主要有两点不同:

(1)在初始化时, f0(x) 应该被初始化为 

f0(x)=argminci=1NL(yi,c)

即使用训练数据中类最多的那一个类作为预测的标签。

(2)利用损失函数的负梯度值拟合回归树,这一点在之前已经提到过了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值