决策树、GBDT、XGBoost和LightGBM之GBDT

image.png


看上图,首先对集成学习有一个宏观的认识。
三种基本的集成方法:Bagging、Boosting和Stacking。分别产生了Random Forest(随机森林),AdaBoost和GBDT。

一、集成学习(Ensemble Learning)

1.Boosting

对数据集D,首先训练一个弱分类器(学习算法),然后对着同一个数据集进行迭代。对于第一次预测错误的样本,我们增加它的权重,然后降低预测正确样本的权重,然后对这个调整过后的数据集,重新训练分类器。迭代,直到训练结束。每个基学习器都具有不同的权重。

Boosting算法是一种加法模型。

算法流程图如下所示:
image.png

简单介绍AdaBoost,背后复杂的数学公式推导不是我们的重点。后面详细介绍GBDT算法。

1.1 AdaBoost

AdaBoost是Adaptive Boosting的缩写,针对同一个训练集训练不同的学习模型,然后将不同的这n个模型,带权相加。AdaBoost是Boosting的经典算法, 主要给出了每一个权重更新的迭代公示。

具体算法如下:
image.png

2.Bagging

Bagging与Boosting有着明显的不同,主要体现在样本的选取,和基学习器的训练与相加上。

考虑数据集D,D具有m个样本,我们对数据进行有放回的随机采样(自助采样法),得到具有m个样本的数据集,重复同样的工作T次,便可以得到T个m样本数的数据集。然后对每个训练样本集训练,得到不同的基学习器,对基学习器平均,即得到总的模型。

算法流程图如下:
image.png

二者的区别:

image.png

二、GBDT(Gradient Boosting Decision Tree)

这里介绍的GBDT特指,“Greedy Function Approximation:A Gradient Boosting Machine”中提出的算法,使用了一阶展开,也就是梯度下降进行优化。通产情况下,GBDT(Gradient Boosting Decision Tree)泛指所有的梯度提升树算法,也就包括XGBoost和LightGBM。

1.模型推广:

几乎每一个人都知道梯度下降,也就是求解损失函数最小值的一种算法。通过不断迭代更新参数的值
来进行损失函数的最小化。梯度下降得参数是一个标量值,而梯度提升,就是将类似的方法从参数空间推广到函数空间。
像刚才讲过的Boosting算法,总模型是一个加法模型,由多个基学习器(函数)相加而成。
image.png
参数迭代更新,变成基函数迭代更新,目标都是求解目标函数的最小值。

2.GBDT算法原理:

算法:
image.png

猜你喜欢

转载自blog.csdn.net/linxid/article/details/80147136