美文网首页
决策【GDBT】在kaggle上的利器(三)

决策【GDBT】在kaggle上的利器(三)

作者: 雍珑庚 | 来源:发表于2020-07-05 10:12 被阅读0次

08 BDT(提升树)

我们先看下简单的提升树(Boosting Decision Tree),提升树是以 CART 决策树为基学习器的集成学习方法

image-20200625222758864

提升树实际上就是加法模型和前向分布算法,将其表示为
f_0(x)=0\\ f_m(x)=f_{m-1}+T(x,\Theta_m)\\ f_M=\sum_{m=1}^MT(x,\Theta_m)
在前向分布算法第 m 步时,给定当前的模型 f_{m-1}(x),求解
min(\sum_{i=1}^NL(y_i,f_{m-1}(x)+T(x,\Theta_m)))
得到第 m 棵决策树T(x,\Theta_m)。不同问题的提升树的区别在于损失函数的不同,如分类用指数损失函数,回归使用平方误差损失

当提升树采用平方损失函数时,第 m 次迭代时表示为
L(y,.f_{m-1}(x)+T(x,\Theta_m))=(y-f_{m-1}(x)-T(x,\Theta_m))^2\\ =(r-T(x,\Theta_m))^2
称 r 为残差,所以第 m 棵决策树T(x,\Theta_m)是对该残差的拟合。要注意的是提升树算法中的基学习器 CART 树是回归树

09 GBDT(梯度提升树)

GBDT 全称为:Gradient Boosting Decision Tree,即梯度提升决策树,理解为梯度提升+决策树。Friedman 提出了利用最速下降的近似方法,利用损失函数的负梯度拟合基学习器:
-[\frac{\partial L(y_i,F(x_i))}{\partial F(x_i)}]_{F(x)=F_{t-1}(x)}
为了求导方便,在损失函数前面乘以 1/2
L(y_i,F(x_i))=\frac{1}{2}(y_i-F(x_i))^2
对 F (Xi)求导,则有

\frac{\partial (y_i, F(x_i))}{\partial F(x_i)}=F(x_i)-y_i
残差是梯度的相反数,即

r_{ti}=y_i-F_{t-1}=-[\frac{\partial L(y_i,F(x_i))}{\partial F(x_i)}]_{F(x)=F_{t-1}(x)}
在BDT 中使用负梯度作为残差进行拟合。

GBDT 的梯度提升流程

输入:训练集:Data=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},y_i\in \{+1,-1\}

初始化:F_0(x)=argmin_{h_0}\sum_{i=1}^NL(y_i,h_0(x))

for t=1 to T do

  • 计算负梯度\widetilde{y_i}=-[\frac{\partial L(y_i,F(x)i)}{\partial F(x_i)}]_{F(x)=F_{t-1}(x)},i=1,2,3...,N
  • 拟合残差得到基学习器w_t=arg min_{w_t}\sum_{i=1}^N(\widetilde{y_i}-h_t(x;w_t))^2
  • 得到基学习的权重:\alpha_t=argmin_{\alpha_t}\sum_{i=1}^NL(y_i,f_{t-1}(x_i)+\alpha_t h_t(x;w_t))
  • 更新F_t(x)=F_{t-1}(x_i)+\alpha_th_t(x;w_t)
image

GBDT 与提升树的区别是残差使用梯度替代,而且每个基学习器有对应的参数权重

GBDT 的流程

GBDT 是使用梯度提升的决策树(CART), CART 树回归将空间划分为 K 个不相交的区域,并确定每个区域的输出 k,数学表达如下
f(X)=\sum_{k=1}^Kc_kI(X\in R_k)

GBDT 的流程(回归)

输入:训练集:Data=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},y_i\in \{+1,-1\}

初始化:F_0(x)=argmin_{h_0}\sum_{i=1}^NL(y_i,h_0(x))=argmin_c\sum_{i=1}^NL(y_i,c)

for t-1 to T do

  • 计算负梯度:\widetilde{y_i}=-[\frac{\partial L(y_i,F(x)i)}{\partial F(x_i)}]_{F(x)=F_{t-1}(x)},i=1,2,3...,N

  • 拟合残差得到回归树,得到第t颗树的叶节点区域h_t(x)=\sum_{k=1}^Kc_kI(X\in R_{tk})

  • 更新F_t(x)=F_{t-1}(x_i)+h_t(x)=F_{t-1}(x_i)+\sum_{k=1}^Kc_kI(X\in R_{tk})

得到加法模型F(X)=\sum_{t-1}^Th_t(x)

GBDT 的流程(分类)

GBDT 用于分类仍然使用 CART 回归树,使用 softmax 进行概率的映射,然后对概率的残差进行拟合。

F_{k0}(x)=0,k=1,K

For m=1 to M do:

  • p_k(x)=\exp(F_k(x))/\sum_{l=1}^K\exp(F_t(X)),k=1,K
  • For k=1 to K do:
    • \widetilde{y_{ik}}=y_{ik}-p_k(x_i),i=1,N
    • \{R_{jkm}\}_{j=1}^J=J-terminal nodetree(\{\widetilde{y_{ik}},x_i\}_1^N)
    • \gamma_{ikm}=\frac{K-1}{K}\frac{\sum_{x_i \in R_{jkm}}\widetilde{y_{ik}}}{s\sum_{x_i \in R_{jkm}}|\widetilde{y}_{ik}|(1-|\widetilde{y_{ik}}|)},j=1,N
    • F_{km}(x)=F_{k,{m-1}}(x)+\sum_{j=1}^J\gamma_{jkm}1(x\in R_{jkm})
  • endFor

相关文章

  • 决策【GDBT】在kaggle上的利器(三)

    08 BDT(提升树) 我们先看下简单的提升树(Boosting Decision Tree),提升树是以 CAR...

  • 机器学习算法:GBDT之二

    GDBT的概论 Gradient Boosting基本的结构:Gradient Boosting + 决策树 = ...

  • 机器学习之决策树

    刚刚在kaggle上练习了决策树的回归训练, 预测房价决策树图示: 决策树通过分类的方法得到样本的预测值, 叶子结...

  • 数据挖掘-分类

    分类--逻辑回归,朴素贝叶斯,决策树,随机森林,GDBT,XGBoost 分类评估--正确率,精度,召回率,F1值...

  • Kaggle入门

    如何下载Kaggle上的数据集? 首先要下载Kaggle上对应的API工具,需要先安装Kaggle。 在vsc中输...

  • XGBoost的GPU加速插件

    XGBoost是诸如Kaggle等数据科学竞赛选手的利器。在特征属于许多不同范畴时,XGBoost的表现通常优于神...

  • 使用Kaggle python 包下载Kaggle 数据

    1 在目标服务器上安装 Kaggle Python 包 2 生成Kaggle API Token文件 在Kagg...

  • Kaggle如何入门?

    从下面5个方面系统聊聊: 1)Kaggle是个什么东东? 2)什么人会使用Kaggle? 3)在Kaggle上做项...

  • 图像分类案例2 ;GAN;DCGAN 2020-02-25

    图像分类案例2 Kaggle上的狗品种识别(ImageNet Dogs) 在本节中,我们将解决Kaggle竞赛中的...

  • XGBoost

    1.XGBoost算法原理 XGBoost是GDBT算法的应用,GDBT是根据损失函数负梯度来进行拟合每一个弱学习...

网友评论

      本文标题:决策【GDBT】在kaggle上的利器(三)

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