Adaboost、GBDT、xgboost、lightGBM的区别

  • 这4种模型是集成模型中的提升树类别。(其他的类别还有装袋树(如RandomForest)、模型堆叠(stack))
  • 其中xgboost、lightgbm在众多的数据竞赛中表现出优秀的预测能力。

本文通俗地描述对比几种算法的原理和区别


  1. Adaboost

        Adaboost是各类数据挖掘、机器学习、统计学习书籍中都在介绍的算法。它每次迭代都会根据新的基学习器的误差$\epsilon_t$去更新基学习器的权重,然后根据基学习器权重去更新样本的权重,新的加权后的样本流入下一步的迭代。参考周志华《机器学习》P174中的算法描述(以分类为例):

算法描述

输入:训练集$D=\left\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\right\}$;基学习器$h$;建立的基学习器数目$T$

步骤:

[1]$D_1(x)= \frac{1}{m}$ 

[2]$for \quad t  \quad in \quad range(T):$

[3]$\qquad \epsilon_t=P_{x\sim D_t}(h_t(x) \neq f(x));$

[4]$\qquad if \epsilon_t > 0.5 : break;$

[5]$\qquad \alpha=\frac{1}{2} ln(\frac{1-\epsilon}{\epsilon});$


[6]$ \begin{aligned} \qquad D_{t+1}(x)&=\frac{D_t(x)}{Z_t} \times \left\{ \begin{array}{} exp(-\alpha_t),\quad if \quad h_t(x) = f(x)&\\ exp(\alpha_t),\quad if \quad h_t(x) \neq f(x) \\ \end{array} \right. \\ &=\frac{D_t(x)exp(-\alpha_tf(x)h_t(x))}{Z_t} \end{aligned} $ 

输出:$H(x)=sign(\sum_{t=1}^{T}\alpha_t h_t(x))$

解释

[1]初始化样本权重为$\frac{1}{m}$

[3]基于t轮迭代时的样本权重,将加权样本喂入t时刻基学习器,计算所有样本预测值和真实值不相等的概率的均值

[4] 如果这个概率的均值大于0.5,说明这轮迭代的基学习器比随机猜测更差,舍去

[5]否则,用这个错误率去计算正确/错误的优势比,并以此更新该轮基学习器的权重

[6]用计算得到的基学习器权重去更新样本权重:预测命中的样本减少其权重,预测错误的样本增加其权重,从而获得新的样本权重,用于下一轮迭代的数据输入

输出:集成模型的预测结果是每轮迭代训练出来的基学习器与之权重的加权平均,再经过符号函数处理,获取类别判定

猜你喜欢

转载自www.cnblogs.com/mx0813/p/12636948.html