1.提升树

提升方法采用加法模型与前向分步算法,是以决策树为基分类器。

ps:这里的决策树指CART树。

主要思想:对于提升树算法,简单来说就是每一步会拟合前一步的残差。

极端梯度提升树模型参数优化python 梯度提升分类树_子节点

ps:只有当损失函数是均方误差的时候,每一步是拟合的残差,对于其他损失函数却不是。

提升树模型:

极端梯度提升树模型参数优化python 梯度提升分类树_极端梯度提升树模型参数优化python_02

计算每个数据的残差:

极端梯度提升树模型参数优化python 梯度提升分类树_子节点_03

通过残差学习一颗回归树:(构建树的过程)

极端梯度提升树模型参数优化python 梯度提升分类树_拟合_04

然后更新树模型:

极端梯度提升树模型参数优化python 梯度提升分类树_极端梯度提升树模型参数优化python_05

一直迭代直到构建出M颗树!

 

2.梯度提升树(GBDT)

引出GBDT:

在原有提升树上进行改进,在一些复杂的损失函数上我们并不能得到残差,为了解决这一问题引出了使用梯度的负方向来拟合残差并且适用于各种复杂的损失函数。

ps:梯度的负方向思想类似于梯度下降法,减去梯度方向相当于加上一个负梯度方向。

ps:基分类器仅支持CART树。

构建基分类器的过程:

首先gbdt对分类和回归问题进行了统一,回归因为标签有大小的意义利用残差有物理意义,分类的标签没有大小意义但是通过转化为概率的问题可以解决。

其次构建的时候每次分裂节点都会遍历每一个特征和对应的所有切分点找出最好的特征和对应的切分点。

ps:多分类问题,通过训练K个二分类模型。

ps:构建的过程也适用于提升树。

ps:构建的过程基于深度优先或者广度优先构建树。

计算每个数据的负梯度:

极端梯度提升树模型参数优化python 梯度提升分类树_极端梯度提升树模型参数优化python_06

拟合负梯度,来构建一颗树:(构建树的过程)

极端梯度提升树模型参数优化python 梯度提升分类树_子节点_07

更新梯度提升树模型:

极端梯度提升树模型参数优化python 梯度提升分类树_子节点_08

一直迭代直到构建出M颗树!

gbdt用于构造特征:一共记录m个叶子节点和k个模型,只要该样本落在第i颗树对应的叶子节点那么就把该节点的值置为1,代表这个样本在对应的叶子节点位置出现过。

ps:最终可以构建K*M个特征。