GBDT原理与Sklearn源码分析-分类篇

本文介绍了分类任务下GBDT的原理,包括选用logloss作为损失函数的算法流程,并通过实例展示了GBDT的实践过程。同时,简要分析了Sklearn中GradientBoostingClassifier的源码实现。
摘要由CSDN通过智能技术生成

摘要:

继上一篇文章,介绍完回归任务下的GBDT后,这篇文章将介绍在分类任务下的GBDT,大家将可以看到,对于回归和分类,其实GBDT过程简直就是一模一样的。如果说最大的不同的话,那就是在于由于loss function不同而引起的初始化不同、叶子节点取值不同。

正文:

GB的一些基本原理都已经在上文中介绍了,下面直接进入正题。
下面是分类任务的GBDT算法过程,其中选用的loss function是logloss。
L(yi,Fm(xi))={ yilogpi+(1yi)log(1pi)} L ( y i , F m ( x i ) ) = − { y i l o g p i + ( 1 − y i ) l o g ( 1 − p i ) }
其中 pi=11+e(Fm(xi)) p i = 1 1 + e ( − F m ( x i ) )


这里简单推导一下logloss通常化简后的式子:
L(yi,Fm(xi))={ yilogpi+(1yi)log(1pi)} L ( y i , F m ( x i ) ) = − { y i l o g p i + ( 1 − y i ) l o g ( 1 − p i ) }
(先不带入负号)
带入 pi p i => yilog(11+e(Fm(xi)))+(1yi)log(e(Fm(xi))1+e(Fm(xi))) y i l o g ( 1 1 + e ( − F m ( x i ) ) ) + ( 1 − y i ) l o g ( e ( − F m ( x i ) ) 1 + e ( − F m ( x i ) ) )
=> yilog(1+e(Fm(xi)))+(1yi){ log(e(Fm(xi)))log(1+e(Fm(xi)))} − y i l o g ( 1 + e ( − F m ( x i ) ) ) + ( 1 − y i ) { l o g ( e ( − F m ( x i ) ) ) − l o g ( 1 + e ( − F m ( x i ) ) ) }
=> yilog(1+e(Fm(xi)))+log(e(Fm(xi)))log(1+e(Fm(xi)))yilog(e(Fm(xi)))+yilog(1+e(Fm(xi))) − y i l o g ( 1 + e ( − F m ( x i ) ) ) + l o g ( e ( − F m ( x i ) ) ) − l o g ( 1 + e ( − F m ( x i ) ) ) − y i l o g ( e ( − F m ( x i ) ) ) + y i l o g ( 1 + e ( − F m ( x i ) ) )
=> yiFm(xi)log(1+eFm(xi)) y i F m ( x i ) − l o g ( 1 + e F m ( x i ) )
最后加上负号可以得:
L(yi,Fm(xi))={ yilogpi+(1yi)log(1pi)}

  • 32
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 52
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值