sklearn的GBDT源码笔记

本文深入探讨了sklearn中GBDT的源码,涉及loss类如LeastSquaresError、LeastAbsoluteError、BinomialDeviance等,以及estimator类如LogOddsEstimator、PriorProbabilityEstimator。重点解析了BaseGradientBoosting、GradientBoostingClassifier和GradientBoostingRegressor的实现,包括fit方法、残差计算和决策树训练过程。同时,介绍了分类和回归任务中不同loss函数的转换和应用。
摘要由CSDN通过智能技术生成

参考:http://www.jianshu.com/p/1fa837221360

代码主要在gradient_boosting.py里面,定义了各种loss类以及estimator类,前者定义了loss的计算方式,后者是一些简单基本的estimator类,主要用于LossFunction中init_estimator的计算,即初始预测值的计算。

loss类

loss的类层级关系为:

  • LossFunction
    • RegressionLossFunction
      • LeastSquaresError(负梯度是目标值y和预测值pred的差)
      • LeastAbsoluteError(负梯度是目标值y和预测值pred的差的符号,适用于 稳健回归 ,PS:数据出现异常点时最小二乘法的替代方法)
      • HuberLossFunction( 一种适用于稳健回归Robust Regression的损失函数,init_estimator是QuantileEstimator(alpha=0.5))
      • QuantileLossFunction(分位数回归的损失函数,分位数回归允许估计目标值条件分布的百分位值)
    • ClassificationLossFunction
      • BinomialDeviance(logistic regression,二分类问题损失函数,init_estimator是LogOddsEstimator)
      • MultinomialDeviance(softmax, 多分类问题损失函数,init_estimator是PriorProbabilityEstimator)
      • ExponentialLoss(二分类问题指数损失,AdaBoost用的loss。init_estimator是ScaledLogOddsEstimator)

注意:对于ClassificationLossFunction, 代码里计算loss和负梯度的时候,并不是用概率计算而是用决策树的直接累计输出score(pred)计算。

以BinomialDeviance为例,score转成概率要经过sigmoid转化。设p为概率,P为预测值,则BinomialDeviance的loss公式为

ylog(p)+(1y)log(1p)=log(1p)+ylog(p1p<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值