GBDT原理最通俗的解释

2020-01-16  本文已影响0人  不分享的知识毫无意义

本文尽量以简洁语言说明GBDT。

1.什么是GBDT

GBDT属于集成算法的一种,基分类器是回归树(分类问题也是回归树,最后再用sigmoid或者softmax函数计算类别),是一种boosting算法,即逐步拟合逼近真实值,是一个串行的算法,可以减少bias(误差)却不能减少variance(偏差),因为每次基本都是全样本参与训练,不能消除偶然性的影响,但每次都逐步逼近真实值,可以减少误差。
GBDT包括三种基本用法,一是回归,二是二分类,三是多分类。技术细节有点差异,但是整体思路都是一样的。

2.GBDT要知道的基础知识

3.GBDT算法流程

3.1 回归问题

回归问题,其实相对比较好理解,抛开网上的流程,简单说,以平方误差为。
(1)初始化,就是所有样本值都初始化为均值,算出来第一轮残差值(残差-当前值的平方可以作为损失函数)。
(2)误差和特征值带进去构建树,划分标准为平方误差减少最多的那个特征值,然后划分到叶子节点,用均值作为这一轮的预测值,然后更新目标值和残差值,加上学习率。
(3)重复第2步,直至满足终止条件,可能是达到最大树的个数,可能是最终的目标值变化幅度不大了。
(4)更新累积目标值作为最终的预测结果。


GBDT算法原理

你看他那个学习率ρ还要学习更新实际不用更新,自己选一个经验值好了,我看0.01就不错。

3.2 二分类问题

(1)初始化
二分类问题,损失函数形式是对数形式,


二分类的损失函数


然后初始值是:


二分类初始值
(2)接下来和回归问题一样,拿残差(这里说残差不太合适,因为实际计算用的是上一轮的预测值,思想可以归到残差)去拟合一颗CART树,CART树划分的标准是均方损失最小。我们要知道叶子节点得分怎么计算,第一步是用梯度当估计值,然后根据牛顿法,算出来一个叶子节点得分值,这个公式不用推导记住咋用就行了,然后采用和回归一样的加法原理,继续计算残差继续拟合。
(3)计算概率,二分类,用sigmoid函数计算最后的预测类别。
二分类流程

3.3 多分类问题

多分类问题其实跟二分类差不多吧,只不过一轮拟合k颗树,k等于要分出来的类别。举个例子,我们要预测某个电影角色是好人或者坏人或者中立,y值有0,1,2三种,那么构造目标的值的时候,可以做一个onehot编码。假设一个人是好人,那么第一颗树的目标值是[1,0,0]带入计算的值是1,以此类推。
多分类问题用log损失作为损失函数,用MSE作为树的分裂准则。
(1)设置目标函数,这个多分类没有初始化方案,直接构建三棵树,构建完以后算那个类别。
(2)继续以残差为目标函数拟合树,拟合方案跟回归树一样,然后算函数得分值。
(3)计算三棵树的得分值,用softmax函数计算最后的分类。


多分类问题流程

这个算法流程和sklearn实现有出入的,但是这个应该,是最标准的计算方案,具体实现大家可以自己思考,反正我们知道上边的计算方法就行了。
而且悄悄说一句,最后不都是调包嘛。

上一篇 下一篇

猜你喜欢

热点阅读