数据挖掘面试题之gbdt

 1、梯度提升树GBDT回归

GBDT模型数据型不做任何限制,既可以是连续的数型,也可以是离散的字符型
(但在Python的落地程中,需要将字符型量做数理或哑变理)。相SVM模型
少参数的GBDT具有更高的准确率和更少的运算时间GBDT模型在面异常数据
具有更定性。由于上面的种种点,使得越来越多的企或用在数据挖掘或机器学
习过程中选择使用,同时该算法也是常出没于各种大数据竞赛中,并且好的成
 
 
 
 

数据挖掘面试题之gbdt

2. GBDT分类算法


GBDT无论用于分类还是回归,一直使用的是CART回归树。GBDT不会因为我们所选择的任务是分类任务就选用分类树,这里的核心原因是GBDT每轮的训练是在上一轮训练模型的负梯度值基础之上训练的。这就要求每轮迭代的时候,真实标签减去弱分类器的输出结果是有意义的,即残差是有意义的。如果选用的弱分类器是分类树,类别相减是没有意义的。对于这样的问题,可以采用两种方法来解决:

采用指数损失函数,这样GBDT就退化成了Adaboost,能够解决分类的问题;
使用类似于逻辑回归的对数似然损失函数,如此可以通过结果的概率值与真实概率值的差距当做残差来拟合;
下面我们就通过二分类问题,去看看GBDT究竟是如何做分类的。

数据挖掘面试题之gbdt 

数据挖掘面试题之gbdt 

 

GBDT的优点:

(1)可用于所有回归问题(包括线性和非线性问题)

(2)可构造组合特征,通常用GBDT构造的组合特征加上原来的特征一起输入LR模型做分类

(3)可得到特征的重要权重值

GBDT正则化


和Adaboost一样,我们也需要对GBDT进行正则化,防止过拟合。GBDT的正则化主要有三种方式。 
   

  1. 第一种是和Adaboost类似的正则化项,即步长(learning rate)。对于同样的训练集学习效果,较小的νν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。 
  2. 第二种正则化的方式是通过子采样比例(subsample)。取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。 使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,程序可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。这里其实引入了bagging的思想,所以GBDT能够有效地抵御训练数据中的噪音,具有更好的健壮性。(降低方差)
  3. 第三种是对于弱学习器即CART回归树进行正则化剪枝。在决策树原理篇里我们已经讲过,这里就不重复了。

 

参考:这几篇gbdt就比较深刻理解了

 

https://www.cnblogs.com/peizhe123/p/6105696.html  CART分类与回归树与GBDT(Gradient Boost Decision Tree)

https://www.cnblogs.com/moonyue/p/11214186.html  Boosting算法之Adaboost和GBDT  

https://blog.****.net/program_developer/article/details/103060416  深入理解GBDT二分类算法

 https://blog.****.net/qq_32742009/article/details/81346636 【机器学习】集成学习之梯度提升树GBDT