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解决二分类问题,直观上不是很好理解,主要有以下两点疑问:

  1. 对于分类问题怎么计算残差?
  2. GBDT二分类的优化目标到底是直接优化预测概率,还是优化学习到的线性模型?

之前在介绍梯度提升方法的时候讲过,梯度提升方法的核心是使用损失函数对函数模型的负梯度在当前模型的值来近似残差,在此残差基础上来训练新一轮的模型。对于回归问题很好理解残差,标签值为100,预测值为90,那么残差就是10。

但是对于分类问题,分类结果不是分类正确就是错误,怎么来计算残差呢?回归问题与分类问题的区别在于回归问题预测的是数值,是数值可以很自然的计算残差或者损失函数的负梯度值。但是对于分类问题,分类结果要么正确,要么错误。

对于分类问题,首先要转换思路将分类问题也作为回归问题来考虑,这样计算的残差才有意义。我们经常使用Logistic Regression来处理二分类问题,Logistic Regression的本质是先学习一个的线性回归模型,然后在线性回归模型的基础上使用Sigmoid函数将线性回归模型得到的实数值转换为[0, 1]之间的概率值。所以说,对于使用GBDT方法解决二分类问题,也可以将分类问题先看做是一个学习的线性回归模型,然后再将回归模型的结果转换为概率。

既然有了这个线性回归模型作为中间结果,那么就可以以这个中间结果作为学习目标,使用梯度提升方法来进行拟合学习。

下面先来看一下GBDT处理二分类问题的一些特点:

1、损失函数

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

其中,

这里的中的是一样的含义,可以直接理解为就是一个学习到的线性回归模型。所以GBDT二分类算法的优化目标是学习得到一个最优的线性模型,通过线性模型来计算概率,从而计算损失,而不是直接学习得到最优的概率值。这一点与Logistic Regression的优化学习方式是一样的。

2、学习目标

有了上面的损失函数,那我们也就很容易知道了,学习目标就是要学习到这么一个线性回归模型,来使得上面定义的损失函数最小。这个其实就是二分类的对数几率,参考周志华《机器学习》3.3节

3、残差计算

有了上面定义的损失函数,按照梯度提升方法的定义,使用损失函数对于函数的负梯度在当前学习到的函数模型处的损失值来近似代替提升树中的残差。损失函数求偏导数

注意!注意!注意!相信肯定有不少人,包括我自己在内,在刚开始看到这个玩意时都容易迷糊,自以为是的认为,都说梯度提升是用这个偏导数来近似代表残差,那现在这个计算出的残差是,并且这个又代表训练样本的真是标签概率(0.0或者1.0), 代表样本的预测概率,那么这个残差不绝逼代表的是样本预测概率的残差吗?这样理解是完全没问题的,但是要注意,这要理解很容易就把思维引到了GBDT是直接优化预测概率这条歧途上。这地方计算的残差就是样本真是概率与预测概率的残差,但是并不代表最后在使用前向分布方法整合模型的时候得到的就是样本的预测概率。咱们在定义损失函数的时候也看到了,计算损失函数时是把先输入到Sigmoid函数中,得到,然后再使用和样本真是标签来计算损失的,损失函数的优化目标是线性模型,不直接优化预测概率值。

4、模型整合

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

5、模型预测

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

二分类问题和回归问题,以及二分类问题和对数几率又有什么联系?

对于二分类问题,分类标签要么是正类1,要么是负类0,使用概率表示如下(1.1):

几率反映了样本作为正类的相对可能性,几率的定义如下(1.2):

对数几率定义如下(1.3):

       对于二分类问题,通常先学习一个线性回归模型,然后在线性回归模型之上使用Sigmoid函数将线性回归模型的是数值转换为概率值,用于表示对于输入样本被判断为正类的概率,Sigmoid函数是一大类S型的函数,常用的Sigmoid函数如下式(1.4):

所以,就是式1.1中的概率

对于Sigmoid函数的输出概率,其对数几率表示如下(1.5):

通过对比式1.4和式1.5可知,Sigmoid函数和对数几率函数的本质都是关于参数的函数,式1.4逻辑回归实际上就是使用线性回归模型的线性回归模型结果去逼近样本真实标记的对数几率,所以对于上述使用Sigmoid的二分类问题叫做逻辑斯蒂回归或者对数几率回归,因为本质上学习的还是一个回归问题。

所以从对数几率的角度也可以得出“模型预测”那一步中的概率计算公式:

总结:

1、对于分类问题怎么计算残差?

答:将分类问题转换为回归问题进行计算,类似于逻辑回归的计算方法

2、GBDT二分类的优化目标到底是直接优化预测概率,还是优化学习到的线性模型?

答:GBDT二分类使用线性模型作为优化目标,优化得到一个类似于的线性模型,不直接优化概率值。

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

参考:https://mp.weixin.qq.com/s/4T6OD2Hr5MzNI0j-mT3e-g

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
梯度提升(Gradient Boosting Decision Tree,简称GBDT)是一种流行的机器学习算法,常用于回归和分类任务。下面以回归为例,详细介绍GBDT的工作原理。 在回归任务中,我们的目标是预测一个连续变量的值。GBDT通过多次迭代的方式,逐步拟合训练数据的残差,最终得到一个强大的回归模型。 首先,GBDT使用一个单独的决策作为基模型。该是通过最小化损失函数(例如均方误差)建立的,将输入特征映射到预测值上。 接下来,GBDT通过计算真实值与当前模型的预测值之间的残差,得到一个新的训练数据集。这些残差成为下一棵决策的目标。 然后,通过训练一棵新的决策来拟合残差数据。这个过程是一个迭代的过程,每迭代一次,都会拟合一棵新的决策,并更新模型的预测值。 最后,将每棵的预测结果累加,得到最终的回归模型。这个模型能够准确地预测目标变量的值。 举例来说,假设我们有一组数据,包含一些自变量(如房屋面积、房间数量等)和一个连续的因变量(如房屋价格)。我们想建立一个回归模型来预测房屋价格。 首先,我们使用一棵决策来拟合这些数据,但是预测结果可能与真实值存在差距。 然后,我们计算真实值和当前模型的预测值之间的残差。使用这些残差作为新的目标,我们训练一棵新的决策。 接着,我们将第一棵决策和第二棵决策的预测结果相加,得到一个更新后的预测值。 我们可以反复迭代这个过程,每次都拟合一棵新的决策,并更新预测值。最终,我们将所有决策的预测结果相加,得到最终的回归模型。 通过这种方式,GBDT能够逐步提升模型的性能,对于复杂的非线性关系,也能够进行有效的拟合。 总而言之,GBDT是一种基于决策的机器学习算法,通过迭代拟合残差来构建一个强大的回归模型。它在回归任务中具有广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值