• 梯度提升决策树公式推导


    梯度提升决策树(GBDT,Gradient Boosting Decision Tree)

    梯度提升算法使用损失函数的负梯度在当前模型的值,
    不再去学习残差,而是学习一个损失函数关于梯度的负值。

    [egin{equation}egin{split} -left[frac {partial L(y,f(x_i))}{partial f(x_i)} ight]_{f(x)=f_{m-1}(x)} end{split}end{equation} ]

    作为回归问题提升决策树算法中残差的近似值,拟合一个回归树。
    如果xgboost在这里改进的话可以采用二阶梯度,因为一个函数泰勒展开项阶数越高精度约大。(xgboost第一个改进)

    为什么用负梯度?

    首先我们要学习的是从输入空间x到输出空间y的一个映射f。
    因为这样的f有很多个,所以构建一个F叫假设空间。
    要在假设空间F中找一个(f*)最优的映射。
    f的最终表示可以用w和b这种权重和偏置来表示。
    所以最终的学习,是学习使损失函数最小的参数的问题。
    所以除了F假设空间外,还有个P空间,也就是参数空间。
    在参数空间找w和b,由最优w和b去确定f,由f去完成映射。
    而最优参数(w*) 如何学习,就是由
    (egin{equation}egin{split} frac {partial f(w)}{partial w}=0 end{split}end{equation}) 求得 (w*)
    (w*)如何求得?
    (w^* =argmin L(w))
    就是由 (w-alphafrac {partial f(w)}{partial w}) 迭代求得,也就是梯度下降法。
    也就是在参数空间下来做的。
    那么能不能直接在假设空间F上来做?
    (F^w = argmin L(f) \ frac {partial L(f)}{partial f}=0\ f=f-etafrac {partial L(f)}{partial f} ,eta=1)

    那么没有了参数,函数如何表示?

    [egin{equation}egin{split} T(x;Theta) = sum_{j=1}^j c_jI(xin R_j) end{split}end{equation} ]

    还是决策树的本质问题,把输入空间划分为不同的离散区域,确定每个区域的输出值。这样直接对一棵树进行学习就好了。

    梯度提升算法过程:

    • 输入:训练数据集 (T=lbrace(x_1,y_1),(x_2,y_2),...,(x_N,y_N) brace)

    • 输出:梯度提升决策树(hat f(x))
      (1)初始化

      [egin{equation}egin{split} f_0(x)=argmin_csum_{i=1}^NL(y_i,c) end{split}end{equation} ]

      (2) 对 (m=1,2,...,M)

      • (a) 对 (i=1,2,...,N) 计算

        [ r_{mi} = -left[frac {partial L(y,f(x_i))}{partial f(x_i)} ight]_{f(x)=f_{m-1}(x)} ]

      • (b) 对(r_mi)拟合一个回归树,得到第m颗树的叶节点区域 (R_{mj},j=1,2,...,J)
      • (c) 对 (R_{mj},j=1,2,...,J),计算

        [c_{mj}=argmin_csum_{xin R_{mj}}L(y_i,f_{m-1}(x_i)+c) ]

      这个地方也是将来xgboost要改进的点。经验风险最小化容易导致过拟合,可以采用正则化项。(xgboost第二个改进)

      • (d) 更新(f_m(x)=f_{m-1}(x)+sum_{j=1}^J c_{mj}I(x in R_{mj}))

      (3)得到回归梯度提升决策树

      [egin{equation}egin{split} hat f(x)=f_M(x)=sum_{m=1}^Msum_{j=1}^Jc_{mj}I(x in R_{mj}) end{split}end{equation} ]

  • 相关阅读:
    Internet上的音频/视频概述
    防火墙
    数据链路层安全
    两类密码体制
    Windows Terminal 美化分享
    2019.11.14 启用了FlagCounter
    检测一个App是不是有UWP血统
    UWP 记一次x64平台无法单步调试的bug
    UWP 使用FontIcon
    Git和Github简单教程
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/14155088.html
Copyright © 2020-2023  润新知