提升树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二分类的优化目标到底是直接优化预测概率,还是优化学习到的线性模型?
之前在介绍梯度提升方法的时候讲过,梯度提升方法的核心是使用损失函数对函数模型的负梯度在当前模型的值来近似残差,在此残差基础上来训练新一轮的模型。对于回归问题很好理解残差,标签值为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二分类使用线性模型作为优化目标,优化得到一个类似于的线性模型,不直接优化概率值。
参考:https://mp.weixin.qq.com/s/4T6OD2Hr5MzNI0j-mT3e-g