提升算法

Posted 小丑_jk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提升算法相关的知识,希望对你有一定的参考价值。

提升树:

提升树是以分类树或回归树为基本分类器的提升方法。提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法,以决策树为基函数的提升方法称为提升树,对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树,其根据特征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)为所求提升树。

以上是关于提升算法的主要内容,如果未能解决你的问题,请参考以下文章

数据挖掘十大算法之AdaBoost提升算法

玩转算法面试 从真题到思维全面提升算法思维

李航统计学习方法--8. 提升方法(详细推导)

GBDT —— 梯度提升决策树

提升算法

玩转算法面试 从真题到思维全面提升算法思维