多分类svm的hinge loss公式推导_GBDT处理分类问题(四)

65d7d56665e059c969054faecbcb31a1.png

  文章承接:

  1. 梯度提升框架(一)
  2. 梯度提升框架(二)
  3. GBDT+Huber loss(三)

   前面的文章都是将GBDT应用于回归问题中,因此特意准备一篇有关GBDT处理分类问题的文章。本文的主要内容有:

  1. GBDT如何处理二分类问题,以及公式推导
  2. 推广GBDT处理多分类问题

  之所以想写这篇文章是因为貌似没多少文章整理GBDT处理分类问题的具体实现。文中含有大量的公式推导,希望大家能耐心看完~

1.思路

  在sklearn中,GBDT的损失函数有:

ffb819c4589ece25e51833b0d2351fc7.png

其中前四项是处理回归问题的,前三项在之前的文章已经做过推导。后面两项就是处理分类问题的损失函数。

 考虑一下线性回归 指数损失函数,是与Adaboost相同的损失函数,官方文档也有说明,当采用该损失函数时,GBDT即为Adaboost:

6e23c4a4783bf34567e603206fa3bd5a.png

指数损失只能用于二分类,除了指数损失外,还有一种损失函数deviance,其实就是我们通常所见的对数损失函数。这也是我们后头要进行探究的损失函数,它既可以二分类也能多分类。

  有关指数损失与对数损失的比较见[参考链接6]。

2.二分类

  考虑一下线性回归

,若我们想用其做分类问题,通常做法为加上一个对数几率函数转换为逻辑回归:

GBDT同理,我们借助对数几率函数将原本的回归输出值转换为概率:

  那么接下来GBDT的训练过程需要以逻辑回归为参照。

简写为
为类标,取值为0或1。逻辑回归采用极大似然估计推导出的损失函数为:

那么同理,GBDT采用的损失函数为:

  有了损失函数我们就可以开始推导GBDT了,首先是计算伪残差:

接着训练基学习器

去拟合伪残差。最后针对树的每一个区域去训练最佳权重:

以为这样就结束了吗?在sklearn与原论文(参考链接1)中,针对

的学习均采用牛顿迭代法去展开得到一个迭代的形式。针对上式,损失函数
作泰勒二阶展开有:

为了简化,我们用

分别代替一阶导和二阶导。为了能让每次迭代后的损失值降到最低,即让
最小,对
求偏导等于0有:

其中一阶导

我们在之前求伪残差的时候已经求出,即
。对于
,我们再求偏导有:

故最后,我们得到了

迭代形式:

  总结得出,GBDT在采用对数损失函数时的形式:

______________________________________________________________________________________________

预测阶段

属于第1类的概率计算为:
;

训练阶段:第

次迭代有:
  1. 对每一个样本点计算对应的残差,构成新的数据集
  2. 以新的数据集去训练一颗CART树作为
  3. 计算
    的叶子结点区域
    的最佳输出值
    :
  4. 完成当前迭代的计算:

______________________________________________________________________________________________

3.多分类

  逻辑回归处理的是二分类问题,如果是多分类呢?就要推广到softmax,假设有

类,那么判断一个样本
属于第
类的概率计算为:

个类别就会有
个权重向量
,那么GBDT同理,如果是多分类问题,就需要训练
个学习器

  softmax回归的损失函数同样基于极大似然估计推导得出,其中

指的是第
个样本属于第
类的概率:

那么GBDT同理,其损失函数为:

  有了损失函数后,剩下的就和正常的GBDT同理了。要注意的是,在多分类问题下,GBDT共有

个学习器,故每次迭代需要针对每个学习器去做训练,即针对每一个类别都可以计算出梯度。假设当前处在第
次迭代,现在对第
个学习器做训练,先计算伪残差:

就这样,针对第

个学习器,我们可以得到其伪残差,并能训练得到基学习器
。接着是计算第
个学习器叶子结点区域的输出值,假设当前要计算第
个区域,和二分类同理,二阶展开后可得(这里没给出细节,因为推导过程中不知常数
从何而来,希望评论区能有同学指点下):

  最后,我们也得到了多分类下的GBDT:

______________________________________________________________________________________________

预测阶段:属于第

类的概率计算为:

训练阶段:

次迭代、对第
棵树有:

1. 对每一个样本点计算对应的残差,构成新的数据集

2. 以新的数据集去训练一颗CART树作为

3. 计算

的叶子结点区域
的最佳输出值
:

4. 完成当前迭代的计算:

______________________________________________________________________________________________

参考:

1. 论文《Greedy Function Approximation: A Gradient Boosting Machine》

2. https://blog.csdn.net/mmc2015/article/details/52398488

3. Scikit Binomial Deviance Loss Function

4. GBDT如何应用于二分类问题?具体如何使用logitloss?

5. sklearn源码

6. http://biostat.mc.vanderbilt.edu/wiki/pub/Main/CourseBios362/lecture-23.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值