BDT(提升树 Boosting Decision Tree)

提升树是以CART决策树为基学习器的集成学习方法
BDT(提升树)GBDT(梯度提升树)
提升树实际上就是加法模型和前向分布算法,将其表示为:
BDT(提升树)GBDT(梯度提升树)
在计算前向分布算法第m步时,给定当前的模型fm-1(x),求解:

BDT(提升树)GBDT(梯度提升树)
这样就得到第m颗决策树T。不同问题的提升树区别在于损失函数不同,如分类用指数损失函数,回归用平方误差损失。
当提升树采用平方损失函数时,第m次迭代时表示:
BDT(提升树)GBDT(梯度提升树)
r为残差,所以第m棵决策树Tm是对残差的拟合。要注意的是提升树算法中基学习器CART树是回归树。

BDT(提升树算法流程)

BDT(提升树)GBDT(梯度提升树)

GBDT

GBDT全称为:Gradient Boosting Decision Tree,即梯度提升决策树,理解为 梯度提升+决策树。Friedman提出了利用最速下降的近似方法,利用损失函数的负梯度拟合基学习器:
BDT(提升树)GBDT(梯度提升树)
可以通过平方损失函数来进行介绍:
为了求导方便,在损失函数前面成1/2
BDT(提升树)GBDT(梯度提升树)
求导:
BDT(提升树)GBDT(梯度提升树)
残差是梯度的相反数:
BDT(提升树)GBDT(梯度提升树)
在GBDT中使用负梯度作为残差进行拟合

GBDT的梯度提升流程

输入数据集:BDT(提升树)GBDT(梯度提升树)
1.初始化:BDT(提升树)GBDT(梯度提升树)
2. for t=1 to T do
2.1 计算负梯度:BDT(提升树)GBDT(梯度提升树)
2.2 拟合残差得到基学习器:BDT(提升树)GBDT(梯度提升树)

2.3得到基学习器的权重:BDT(提升树)GBDT(梯度提升树)
3 更新BDT(提升树)GBDT(梯度提升树)

BDT(提升树)GBDT(梯度提升树)
GBDT与提升树的区别是残差使用梯度替代,而且每个基学习器对应的参数权重。
GBDT是使用梯度提升树的决策树(CART),CART树回归将空间划分为K个不想交的区域,并且确定每个区域的输出ck,数学表达式如下:
BDT(提升树)GBDT(梯度提升树)

GBDT流程(回归)

输入训练集:BDT(提升树)GBDT(梯度提升树)
1.初始化:BDT(提升树)GBDT(梯度提升树)
2.for t =1 to T do
2.1 计算负梯度:BDT(提升树)GBDT(梯度提升树)
2.2 拟合残差得到回归树,得到第t棵树的叶节点区域:BDT(提升树)GBDT(梯度提升树)
2.3更新BDT(提升树)GBDT(梯度提升树)
3.得到加法模型:BDT(提升树)GBDT(梯度提升树)

GBDT流程(分类)

GBDT用于分类仍然使用CART回归树,使用softmax进行概率的映射,然后对概率的残差进行拟合。
BDT(提升树)GBDT(梯度提升树)
1.针对每个类别都先训练一个回归树,如三个类别,训练三棵树。就是比如对于样本Xi为第二类,则输入的三棵树分别为:
(Xi,0),(Xi,1),(Xi,0)这就是典型的多分类训练方式。而每棵树的训练过程就是CART的训练过程。这样,对于样本Xi就得到了三棵树的预测值F1(Xi),F2(Xi),F3(Xi),模拟多分类的逻辑回归,用softmax来产生概率,以类别1为例:
BDT(提升树)GBDT(梯度提升树)
2.对每个类别分别计算残差,如类别1:BDT(提升树)GBDT(梯度提升树)
类别2:BDT(提升树)GBDT(梯度提升树)
类别3:BDT(提升树)GBDT(梯度提升树)
3.开始第二轮的训练,针对第一类输入为BDT(提升树)GBDT(梯度提升树)
第二类第三类类似,继续训练三棵树。
4.重复3直到迭代M轮,就得到了最后的模型。预测的时候只要找出概率最高的即为对应的类别。

相关文章: