GBDT的介绍

一.GBDT简介:

        GDBT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终结果。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起广泛关注。

        GBDT是一个应用很广泛的算法,可以用来做分类、回归。在很多的数据上都有很不错的效果。GBDT这个算法还有一些其他的名称。比如MART(Multiple Additive Regression Tree),GBRT(Gradient Boost Regression Tree),Tree Net等

二.相关基础知识

        1.决策树

        决策树分为俩大类,分类树和回归树。分类树是我们比较熟悉的决策树,比如C4.5分类决策树。分类树用于分类标签值,如晴天/阴天、用户性别、网页是否是垃圾页面。而回 归树用于预测实数值,如明天的温度、用户的年龄、网页的相关程度。也就是分类树的输出是定性的,而回归树的输出是定量的。

         GBDT的核心在于累加所有树的结果作为最终结果,比如对年龄的累加来预测年龄,而分类树的结果显然是没办法累加的,所以GBDT中的树都是回归树,不是分类树。

        1.1.分类树

       以C4.5分类树为例,C4.5分类树在每次分枝时,是穷举每一个feature的每一个阈值,找到使得按照feature<=阈值,和feature>阈值分成的两个分枝的熵最大的阈值(熵最大的概念可理解成尽可能每个分枝的男女比例都远离1:1),按照该标准分枝得到两个新节点,用同样方法继续分枝直到所有人都被分入性别唯一的叶子节点,或达到预设的终止条件,若最终叶子节点中的性别不唯一,则以多数人的性别作为该叶子节点的性别。      

         1.2.回归树  

          回归树总体流程也是类似,区别在于,回归树的每个节点(不一定是叶子节点)都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差即(每个人的年龄-预测年龄)^2 的总和 / N。也就是被预测出错的人数越多,错的越离谱,均方差就越大,通过最小化均方差能够找到最可靠的分枝依据。分枝直到每个叶子节点上人的年龄都唯一或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄。

       2.梯度迭代(Gradient Boosting)

        Boosting,迭代,即通过迭代多棵树来共同决策。GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学习。

        2.1 Shrinkage

        Shrikage(缩减)的思想认为:每次走一小步逐渐逼近结果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合。即它不完全信任每一个棵残差树,它认为每棵树只学到了结果的一小部分,累加的时候只累加一小部分,通过多学几棵树弥补不足。假设yi表示第i棵树上y的预测值,y(1~i)表示前i棵树y的综合预测值。

      y(i+1)= f(残差(y(1~i)))    其中,残差(y(1~i))=y真实值 - y(1~i)

      y_(1~i)= SUM(y_1,…, y_i)  

      引入Shrinkage后,y(1~i) = y(1~i-1)+step *yi

      step可以认为是学习速度,越小表示学习越慢,越大表示学习越快。step一般都比较小,导致各个树的残差是渐变的而不是陡变的。

        3.GBDT适用范围

        机器学习可以解决很多问题,其中最为重要的两个是 回归与分类。GBDT可用于回归问题,相对logistic regression仅能用于线性回归,GBDT能用于线性回归和非线性回归,GBDT的适用面非常广。GBDT也可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)。

       4.搜索引擎排序应用RankNet

       RankNet是基于样本对级别(机器学习按照误差函数的设计分为3种:点方式、对方式、列表方式)方法的一种典型的网页排序算法,是利用梯度下降的原理,基于神经网络来进行模型的构造和应用的。

就像所有的机器学习一样,搜索排序的学习也需要训练集,RankNet一般是用人工标注实现,即对每一个文档给定一个分值(1,2,3,4),分值越高表示越相关,越应该排到前面。然而这些绝对的分值本身意义不大,例如很难说1分和2分文档的相关程度差异是1分和3分文档相关程度差距的一半。相关度是一个很主观的评判,人工无法做到这种定量标注,这种标准也无法制定。但人工容易做到的是“A和B与查询词都很相关,但文档A比文档B更相关,所以A比B的分高”。

       利用RankNet进行网页排序,首先对训练样本进行转化。

        

      利用神经网络进行训练。假设在训练样本中对于查询q存在<xi, xj>文档序列对,需要计算2个概率值P1和P2。

          P1这个概率是由神经网络模型计算出来的,函数如下

          P2=e^(o_ij )/(1+e^(o_ij ) )

          其中,对于文档xi, xj,神经网络模型f对其打分分别为o_i=f(xi), o_j=f(xj),并记o_ij=o_i-o_j。

          模型f:R^d→R  R^d是文档的特征空间,R是实数。

      对于概率P2,它表示真实存在的概率,标记了文档x_i和x_j的真实优先关系。根据人工对文档的打分,若文档xi 与查询q的相关度大于文档xj,则记P2=1;反之记P2=0;若文档xi 与查询q的相关度等于文档xj,则记P2=0.5。神经网络模型的目的是使计算出来的P1符合P2。

定义误差函数,使用交叉熵来计算误差,文档x_i 与x_j的交叉熵计算公式为:

     C_ij=-P2  log?〖P1 〗-(1-P2 )  log?〖P1 〗 

          = -P2 o_ij  + log?〖(1+e^(o_ij ))〗

      对于整个模型的误差,只需要将所有文档序对的误差进行求和就可以得到。得到误差后,利用梯度下降的原理,计算出其梯度。然后利用BP型神经网络,就可以对其样本进行训练(每次对两个样本的输入进行一次神经网络的权重调整)。最后,每个样本通过Shrinkage累加都会得到一个最终分数,直接按分数从大到小对样本进行排序。

       

        

 

 

     

 

 

 

 

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值