美文网首页
GBDT模型

GBDT模型

作者: 棒棒唐_KT | 来源:发表于2017-07-22 21:04 被阅读792次

模型的基本原理不在赘述,仅结合scikit-learn中gbdt的实现,理清思路。

1 流程图

gbdt实现流程图.png

1.1 总体迭代过程

_fit_stage.png

2 损失函数

2.1 GradientBoostingRegressor的损失函数

sklearn中实现了四种目标函数:LeastSquaresErrorLeastAbsoluteErrorHuberLossFunctionQuantileLossFunction。本人只使用过LeastSquaresErrorLeastAbsoluteError这两种,因此仅对这两种目标函数展开理解。

  • LeastSquaresError
    最小均方误差函数,形式为:
    均方误差损失函数.png
    其对应的负梯度为:
    均方误差损失函数-负梯度.png
    代码中的体现为:
image.png
  • LeastAbsoluteError
    最小绝对值误差函数:形式为:
最小绝对值误差损失函数.png image.png

2.2 GradientBoostingClassifier的损失函数

sklearn中实现了两种目标函数:Deviance(二分类问题BinomialDeviance和多分类问题MultinomialDeviance)ExponentialLoss

  • BinomialDeviance损失函数为:
image.png

负梯度

image.png

代码中的体现

binomialDeviance.png
  • ExponentialLoss 损失函数为:
ExponentialLoss 损失函数.png

负梯度

image.png

代码中的体现

image.png

实际上以上两种损失函数都是偏差最小化损失函数,其一般化公式为:

image.png

值得注意的是,在Friedman的论文Greedy Function Approximation A Gradient Boosting Machine 中,描述的目标函数为

negative binomial log-likelihood-Friedman损失函数.png
该目标函数对应的标签为y = {-1,1} ,而sklearn中对应的标签为y = {0,1}, 两者是等价的: image.png

2.3 单棵回归树

在总体迭代过程一节我们已经看到,每次迭代都会建立一个回归树去拟合负梯度向量,与建树相关的点有:

  • 损失函数
    均方差损失函数
  • 节点分裂原则:


    节点分裂原则.png

    通常使用的是friedman_mse原则,公式为Greedy Function Approximation: A Gradient Boosting Machine论文中的(35)式:


    friedman_mse.png
  • 叶子节点的值
    叶子节点的值为分到该叶子节点的所有样本对应的输出yi的平均值。

Refs

相关文章

网友评论

      本文标题:GBDT模型

      本文链接:https://www.haomeiwen.com/subject/lbgqkxtx.html