机器学习系列之GBDT

GBDT既可以用于回归,也可以用于分类。两者本质是一样的,分析流程也大致相同,区别在于loss function不同。

首先,介绍一下提升方法,boosting就是把一系列的弱学习器反复学习,然后组合成强学习器。对于提升方法,主要需要回答两个问题:第一个是每一轮学习过程中如何改变训练数据的权值或概率分布;第二个就是如何将弱分类器组合成强分分类器。

在前面讲到的Adaboost中,根据每次训练数据的误分,将上次误分的数据增加权重,正确分类的降低权重的方式,并且同时为基模型提供权值。最后根据基模型(弱学习器)的权值组合成强学习器。

而在GBDT中,通过拟合损失函数的负梯度值在当前模型的值,基分类器全是决策树(CART回归树)。GBDT拟合的目标是一个梯度值,这个值当然是一个连续值或者说实值,所以GBDT中统统都是回归树。最后使用加法模型。

步骤1:最开始的损失函数(最小),也就是模型值得初始化;

步骤2:循环迭代;

步骤3:计算损失函数的负梯度值在当前模型的值;(更新样本对应的负梯度值)

步骤4:构建CART,计算CART的某棵树的某个叶子节点的值;

步骤5:增加学习率参数

步骤6:根据前一个模型的值,加上当前的叶子节点的值,组成模型的当前值;

             然后至步骤2,以这个模型当前的值,计算负梯度;

             直到满足迭代要求;

步骤7:退出循环,结束。

不同的loss function对应不同的负梯度不同:

GBDT回归与分类的区别:下图损失函数为(logloss)

相比回归任务讲,分类任务需要把最后累加的结果转为概率。

参考:下面两篇文章,写的非常棒。详细的内容和例子,我没有写。请查阅下面的文章。

https://blog.csdn.net/qq_22238533/article/details/79185969

https://blog.csdn.net/qq_22238533/article/details/79192579

猜你喜欢

转载自blog.csdn.net/weixin_41512727/article/details/81501404
今日推荐