【零基础学习(面试考点/竞赛不用)】GBDT Gradient-Boosting-Decision-Tree 梯度下降树

1. 什么是GBDT

这个就是一个集成算法,希望通过多个弱分类器的结合来训练出一个强分类器。这个弱分类器打个比方——决策树。用决策树作为弱分类器,然后训练10个决策树,这10个决策树组成的就是一个强分类器。

GBDT是怎么运作的呢?GBDT是预测残差的。第一棵训练的决策树预测出来的结果肯定和目标值是存在偏差的,毕竟是一个弱分类器,出现偏差很正常。这个偏差,我们管它叫做残差。第二棵树预测的就是基于第一棵树得到的这个残差。可以把第二棵树看成对第一棵树的补充,单纯的第二棵树没有意义。
在这里插入图片描述
第一个模型预测年龄,虽然真实值是30岁,第一个模型只给出了20岁的估计值;第二棵树要预测的就是这个10岁的残差,但是第二棵树只给出了6岁的估计值;第三棵树预测的是第二棵树的4岁的残差,但是………………(禁止套娃)

2. GDBT如何选择特征

其实这个问题看起来问的不明所以,其实是问你决策树如何选择特征的。从上面的例子可以看出来,GDBT应该是处理回归问题的(处理连续数据的)。当然,GDBT也有办法处理分类问题,只是这里就不说了,这里主要说GDBT怎么处理回归问题的,回归问题能处理,那么总有回归离散化的办法的

这个问题是在问:CART TREE如何选择特征的CART TREE就是回归决策树,就是之前提到的弱分类器。

一个决策树,希望读者已经有一个大概的理解了。简单说就是:样本可以根据的特征A是否超过某一个阈值划分成两部分,然后划分之后的每一个部分又可以根据某一个特征是否超过某一个阈值再分成两部分……

这样我们就要做出选择了:每一个部分是根据哪一个特征去划分?根据这个特征的哪一个数值作为阈值划分?

如果我们算力无穷,那么自然可以遍历每一个特征,然后穷举每一种可能的分割点,然后对比找到最优分割点。

那么如何判断分割的点的好坏呢?得给出一个cost函数,或者叫做loss函数这样的东西吧。
l o s s = ( y i m e a n ( y ) ) 2 + ( y i m e a n ( y ) ) 2 loss= \sum_{第一部分}{(y_i-mean(y_{第一部分}))^2}+\sum_{第二部分}{(y_i-mean(y_{第二部分}))^2}
看一下这个公式,我把公式写的太丑了。其实这个公式非常的好理解:现在根据某一个特征值,根据某一个阈值把样本分成了两个部分:第一部分和第二部分。然后计算每一个部分的样本的label的均值,也就是公式中的: m e a n ( y ) mean(y_{第一部分}) , m e a n ( y ) mean(y_{第二部分}) ,然后计算第一部分中所有样本的label与第一部分label均值之间的差的平方和,同样的过程计算第二个部分的,两个相加起来就是这个loss。选择能够让这个loss最小的分割特征和分割阈值,就是我们要找的东西。

其实我在学这一块的时候,发现这个过程像是什么?像不像聚类算法,通过上面的loss的最小化的过程,把一堆样本分成两类,让两类的类内距离最小。那个均值就像是求类中心点,计算每一个label距离类中心点的距离。(这一段看不懂也没事

原创文章 94 获赞 27 访问量 41万+

猜你喜欢

转载自blog.csdn.net/qq_34107425/article/details/105986229
今日推荐