zoukankan      html  css  js  c++  java
  • GBDT

    一、基本概念

    GBDT (Gradient Boosting Decision Tree) 梯度提升迭代决策树。 GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。 弱分类器一般会选择为CART TREE(也就是分类回归树)。

    每一轮预测和实际值有残差,下一轮根据残差再进行预测,最后将所有预测相加,就是结果。

    如下例子:给定目标值是30,而最终预测的值把各个预测的值相加,即20+6+3+1=30

    最终的决策树加法模型:

    $F(x)=∑_{m=1}^M T(x; heta_m)$

    其中,$T(x; heta_m)$表示决策树;$ heta_m$为决策树的参数; M为树的个数或者也可以称为训练的次数。

    二、gbdt 如何选择特征 

      下面我们具体来说CART TREE(是一种二叉树) 如何生成。CART TREE 生成的过程其实就是一个选择特征的过程。假设我们目前总共有 M 个特征。第一步我们需要从中选择出一个特征 j,做为二叉树的第一个节点。然后对特征 j 的值选择一个切分点 m. 一个 样本的特征j的值 如果小于m,则分为一类,如果大于m,则分为另外一类。如此便构建了CART 树的一个节点。其他节点的生成过程和这个是一样的。

      现在的问题是在每轮迭代的时候,如何选择这个特征 j,以及如何选择特征 j 的切分点 m:

    • 这个可以暴力求解,首先遍历每个特征,然后遍历每个特征所有可能的切分点,找到最优特征j对应的最优特征m。可以使用平方误差最小的准则求解最优值。

    三、回归树 

    1.最终函数模型

    $f(x)=∑_{m=1}^M c_m I(x in R_m)$

    其中$I(x in R_m)$表示x属于$R_m$区域,$hat{c_m}$是一个区域的输出$y_i$平均值。详细下图

    2.切分点选择方法

    选择切分特征和切分点,其中$c_1$是$R_1$内的输出值,$c_1$应该是$hat{c_1}$,因为此时$c_1$表示$R_1$内的最优值,其中$c_2$是$R_2$内的输出值。选用平方误差作为切分准则。

     

    3.整个算法流程

    4.拟合残差是怎么回事?

    假设当前轮的输出是$y'$,对应的标签是$y_i$,当选用均方误差作为损失函数时,

    $L=frac{1}{2}(y_i-y')^2$

    此时的负梯度,因为导数的负方向可以减少损失

    $-frac{partial L}{partial  y'}=y_i-y'$

    那么下一轮迭代的$y_i=y_i-y'$,所以下一轮拟合的就是上一轮对应的残差

    三、分类树 

    1.特征选择

    和熵的意义一样,表示集合的不确定性,所以基尼系数越小,代表越确定。

     2.算法流程

     

     3.如何拟合残差

    假设$h_m(x)$ 就是学习到的决策树。

    单样本$(x_i,y_i)$ ,其中$hat{y_i}$ 表示决策树生成的标签,对应的损失函数可以表达为交叉熵:

    [公式]

    假设第k步迭代之后当前学习器为$F(x)=sum_{m=0}^M h_m(x)$  ,将$hat y_i$  的表达式带入之后, 可将损失函数写为:

    [公式]

    可以求得损失函数相对于当前学习器的负梯度为:

    [公式]

    可以看到,同回归问题很类似,下一棵决策树的训练样本为:{x_i,y_i-hat y_i}  ,其所需要拟合的残差为真实标签与预测概率之差。

     4.多分类问题合残差

    假设共有K=3类。

    我们在训练的时候,是针对样本 X 每个可能的类都训练一个分类回归树。举例说明,目前样本有三类,也就是 K = 3。样本 x 属于 第二类。那么针对该样本 x 的分类结果,其实我们可以用一个 三维向量 [0,1,0] 来表示。0表示样本不属于该类,1表示样本属于该类。由于样本已经属于第二类了,所以第二类对应的向量维度为1,其他位置为0。

    针对样本有 三类的情况,我们实质上是在每轮的训练的时候是同时训练三颗树。

    参考:

    统计学习方法

    https://www.cnblogs.com/bnuvincent/p/9693190.html

    https://www.jianshu.com/p/405f233ed04b

    https://zhuanlan.zhihu.com/p/46445201

  • 相关阅读:
    移动端事件
    移动端的三种布局
    bootstrap自定义——栅格列数修改
    less文件的运行
    lessc的安装
    nodejs的安装
    jquery插件之jquery-ui
    指定网卡进行ping操作
    汇编语言从入门到精通-4标识符和表达式
    汇编语言从入门到精通-3操作数的寻址方式
  • 原文地址:https://www.cnblogs.com/AntonioSu/p/12470366.html
Copyright © 2011-2022 走看看