提升算法(2)
提升树:
提升树是以分类树或回归树为基本分类器的提升方法。提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法,以决策树为基函数的提升方法称为提升树,对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树,其根据特征x<v与x>v将根结点直接连接两个叶结点,以作为决策树桩。提升树模型可以表示为决策树的加法模型:
其中, 表示决策树,为决策树的参数;M为树的个数
提升树算法采用前向分布算法,首先确定初始提升树f0(x)=0,第m步的模型是:
其中,fm-1(x)为当前模型,通过使经验风险极小化确定下一棵决策树的参数,
(arg为返回后式取最小值时的取值)
由于树的线性组合可以很好的拟合训练数据,即使数据中的输入域输出之间的关系很复杂也是如此,所以提升树是一个高功能的学习算法。
针对不同问题的提升树学习算法主要区别在于使用的损失函数不同,包括使用平方误差损失函数的回归问题、指数损失函数的分类问题、及一般损失函数的一般决策问题。下面叙述关于回归问题的提升树。
已知一个训练数据集,为输入空间,y为输出空间,如果将输入空间划分为J个互不相交的区域,并在每个区域上确定输出的常量cj,那么树可以表示为:
其中,参数表示树的区域划分和各区域上的常数,J是回归树的复杂度即叶结点个数。
回归问题提升树使用以下向前分步算法:(该方法就是以最小化损失函数为前提得到新增决策树的参数,并将该决策树加入原多个决策树构成新的多决策树)
在向前分布算法的第m步,给定当前模型,需求解:
得到,即第m棵树的参数。
当采用平方误差损失函数时,
其损失变成:
这里是当前模型拟合数据的残差,所以对回归问题的提升树算法来说,只需要简单的拟合当前模型的残差。
回归问题的提升树算法:
输入:训练数据集
输出:提升树 fM(x)
(1) 初始化f0(x)=0
(2) 对m=1,2,...,M
1) 按照计算残差得:
2) 拟合残差rmi学习一个回归树,得到
3) 更新
(3) 得到回归问题提升树
此处给出一个书上的例子用于理解上述的回归问题的提升算法:
已知如下表所示的训练数据,x的取值范围为区间[0.5,10.5],y的取值范围为区间[5.0,10.0],学习这个回归问题的提升树模型,考虑只用树桩作为基函数
按照如上算法,第1步求f1(x)即回归树T1(x)
首先通过以下优化问题:
求解训练数据的切分点s:
容易求得在R1,R2内部使平方损失误差达到最小值的c1,c2为:
这里N1,N2是R1,R2的样本点数。
求训练数据的切分点,根据所给数据,考虑如下切分点:
1.5, 2.5, 3.5, 4.5, 5.5, 6.5 7.5 8.5 9.5
对各切分点,不难求出相应的R1,R2,c1,c2及
如当s取1.5时候,R1={1}, R2={2,3,...,10}, c1=5.56 , c2=7.50
现将s及m(s)的计算结果列表如下所示:
由上表可知。当s=6.5时,m(s)达到最小值,此时R1={1,2,...,6}, R2={7,8,9,10}, c1=6.24, c2=8.91, 所以回归树T1(x)为:
用f1(x)拟合训练数据的残差如下表所示,表中r2i=yi-f1(xi), i=1,2,...,10
用f1(x)拟合训练数据的平方损失误差:
第2步求T2(x),方法同上,只是拟合的数据是上面的残差表,并将其与上面得到的数值区间进行汇总得到:
用f2(x)拟合训练数据的平方损失误差是:
同上,可以依此类推:
由f6(x)拟合训练数据的平方损失误差是:
若以上求出的误差满足使用过程需要的误差阈值,那么该f6(x)为所求提升树。