提升树
简介
在Adaboost算法的框架下,以决策树为基函数的提升方法称为提升树。由于树的线性组合可以很好的拟合训练数据,即使数据中的输入与输出之间的关系很复杂也是如此,提升树被认为是统计学习中性能最好的方法之一,甚至于SVM的性能不相上下。在我的理解中,因为树模型已经将输入与输出的关系变成非线性的了,所以即使是树的线性组合,也是一个非线性模型。
提升树模型
提升树模型可以表示为决策树的加法模型:
其中, T(x;Θm) 表示决策树; Θm 为决策树的参数;M为树的个数。
提升树算法采用前向分步算法。首先确定初始提升树
f0(x)=0
,第m步的模型是
其中, fm−1(x) 为当前模型,通过经验风险极小化确定下一棵决策树的参数 Θm ,
不同问题的提升树学习算法,其主要区别在于使用的损失函数不同,包括用平方误差损失函数的回归问题,用指数损失函数的分类问题,以及用一般损失函数的一般决策问题。对于二分类问题,提升树算法只需要将Adaboost算法中的基本分类器限制为二分类树即可,可以说这是Adaboost算法的特殊情况,这里不再叙述。下面叙述回归问题的提升树。
提升树算法
已知一个训练数据集
T=
{
(x1,y1),(x2,y2),...,(xN,yN)
},
xi∈X⊆Rn
。如果将输入空间X划分为J个互不相交的区域
R1,R2,...,RJ
,并且在每个区域上确定输出的常量
cj
,那么树可以表示为
其中,参数 Θ= { (R1,c1),(R2,c2),...,(RJ,cJ) }表示树的区域划分和各区域上的常数。J是回归树的复杂度即叶结点个数。
当采用平方误差损失函数时,
其损失变为
这里,
是当前模型拟合数据的残差。所以对回归问题的提升树算法来说,只需要简单地拟合当前模型的残差。因为要使得损失函数最小,就要使得回归树的预测值与残差尽可能接近,所以就可以使用回归树去拟合残差。算法的具体过程如下:
(1)初始化 f0(x)=0
(2)对 m=1,2,...,M
(a)计算残差
(b)拟合残差 rmi 学习一个回归树,得到 T(x;Θm)
(c)更新 fm(x)=fm−1(x)+T(x;Θm)
(3)得到回归问题提升树 fM(x)=∑Mm=1T(x;Θm)
注意到在上述过程中,并不像一般的Adaboost算法一样,最后再来累加基本分类器来得到最终分类器,而是在一步步迭代中已经在累加基本分类器了。
梯度提升
当损失函数是平方损失或是指数损失函数时,每一步的优化是很简单的。但对于一般的损失函数而言,往往每一步优化并不容易。这里就可以使用梯度提升的方法,关键是利用损失函数的负梯度在当前模型的值
作为回归提升树算法中残差的近似值,拟合一个回归树。
使用该方法后,与原过程主要有两点不同:
(1)在初始化时,
f0(x)
应该被初始化为
即使用训练数据中类最多的那一个类作为预测的标签。
(2)利用损失函数的负梯度值拟合回归树,这一点在之前已经提到过了。