GBDT梯度提升之多分类算法个人理解

提升树Boosting Tree算法实例详解_程大海的博客-CSDN博客

从提升树Boosting Tree过度到梯度提升Gradient Boosting_程大海的博客-CSDN博客

GBDT梯度提升之回归算法个人理解_程大海的博客-CSDN博客_梯度回归算法

GBDT梯度提升之二分类算法个人理解_程大海的博客-CSDN博客_gbdt二分类

GBDT梯度提升之多分类算法个人理解_程大海的博客-CSDN博客_gbdt可以多分类吗

XGBoost算法个人理解_程大海的博客-CSDN博客_xgboost 叶子节点权重

交叉熵损失与极大似然估计_程大海的博客-CSDN博客_极大似然估计和交叉熵

使用泰勒展开解释梯度下降方法参数更新过程_程大海的博客-CSDN博客

AdaBoost算法实例详解_程大海的博客-CSDN博客_adaboost算法实例 


        在之前的文章用已经介绍过了GBDT处理二分类问题的原理,也分析回答了包括如何将分类问题转换为回归问题来计算残差,GBDT残差拟合的是概率值还是学习的线性回归参数模型。详细关于GBDT解决二分类问题的原理推导详见GBDT梯度提升之二分类算法个人理解,建议在学习GBDT多分类之前先把GBDT进行二分类的原理弄懂,弄懂二分类之后多分类自然就理解了。

GBDT解决多分类问题和解决二分类问题之间最主要的区别就在于损失函数,二分类使用的是逻辑斯蒂损失,多分类使用的是交叉熵损失函数。关于逻辑斯蒂损失和交叉熵损失的推导详见交叉熵损失与极大似然估计

为了便于理解GBDT如何将多分类问题转换为回归问题进行求解,这里还是先介绍一下多分类使用的交叉熵损失函数。首先给出交叉熵损失函数的计算公式:

其中是样本的真实概率标签0或1,是softmax函数的计算结果,softmax函数将学习到的多个线性模型转换为对应分类的概率,每个对应于一个分类类别,所以是样本被预测为第个分类的概率:

如果看过GBDT梯度提升之二分类算法个人理解的读者一眼就能看到,咱们这里又出现了,这玩意在之前讲过就是一个线性回归模型,既然是回归模型,那么同样可以将其作为优化学习的目标,通过对每个分类类别学习得到一个最优的线性回归模型,然后再使用softmax函数将这些线性回归模型转换为对应类别的预测概率。

为了与《GBDT梯度提升之二分类算法个人理解》的结构保持一致,下面先来看一下GBDT处理多分类问题的一些特点:

1、损失函数

咱们先来看GBDT处理多分类问题中使用的损失函数,对于多分类问题通常使用交叉熵损失函数(二分类使用逻辑斯蒂损失函数)。

其中,

       是训练样本标签的One-Hot编码,假如当前的训练集标签共分为A,B,C三类,且标签顺序也按照A, B, C的排列顺序。一个训练样本的标签label是B,那么这个样本的One-Hot编码结果就是(0, 1, 0),也就是这个样本对应属于A类的概率为0,对应属于B类的概率为1,对应属于C类的概率为0,就得到了

是样本预测为属于第类别的概率。这里的中的是一样的含义,可以直接理解为就是一个学习到的线性回归模型,只不过对于多分类问题,对于每个分类都需要学习到一个,并且这个学习到的是用来解决二分类问题的,也就是对于每个类别k需要训练一个二分类器,类别k作为正类,其余k-1个类别作为负类,这点就和将SVM等二分类模型用于多分类时采用的One-vs-Rest训练方式一样。所以GBDT多分类算法的优化目标是学习得到一个最优的线性模型,通过线性模型来计算概率,从而计算损失,而不是直接学习得到最优的概率值。这一点与Logistic Regression的优化学习方式是一样的。

2、学习目标

有了上面的损失函数,那我们也就很容易知道了,学习目标就是要学习到k个(k等于类别数量)线性回归模型,对于输入样本,使用Softmax函数将得到的k个线性回归模型转换为对应类别的预测概率值,使得上面定义的交叉熵损失函数最小。

3、残差计算

有了上面定义的损失函数,按照梯度提升方法的定义,使用损失函数对于函数的负梯度在当前学习到的函数模型处的损失值来近似代替提升树中的残差。注意,因为前面讲过,多分类模型需要训练学习k个(k等于类别数量)线性回归,所以这里的偏导数也是损失函数对于各个损失函数的的偏导数。求偏导数结果如下:

下面看一下的偏导数结果,也就是残差的近似是什么?

       前面讲了,是One-Hot编码后的结果,对于来说,只有取值为1,其余的取值均为0,所以如下:

前面讲过,对于第类的One-hot编码,且,所以:

也就是说,拟合的残差是每个二分类的预测概率与真实概率之间的差值,这点和GBDT解决二分类问题的残差是一样的。

4、模型整合

由于使用的是加法模型和前向分布算法,所以在模型整合时,直接将每一轮迭代学习的k棵回归树预测结果分别加到对应的类别分支上,最终得到k个线性模型,最终模型表示什么呢?现在前向分布算法得到的还只是k个类似于的线性回归模型。

5、模型预测

上述只是得到了k个类似于的线性回归模型,现在就需要把这k个转换为对应每个类别的分类概率了,为什么能直接使用Softmax直接将这些个转换为概率呢?因为咱们损失函数中就是这么用的,学习过程中就是这么用的,没毛病。

这里Softmax函数其实起到的是概率归一化的作用,就是将一堆实数值压缩到[0-1]之间,且符合概率分布的其他一堆实数值。选择中概率最高的类别作为分类模型预测结果。

GBDT算法用起来真香,理解起来真是脑壳疼。

参考:GBDT算法用于分类问题 - 知乎

参考:https://mp.weixin.qq.com/s/-UmOhpktgRaOF7tT2-5nsQ

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值