机器学习之集成学习:GBDT

目录

一、什么是GBDT

二、GBDT的理解

2.1、GBDT通俗解释 

2.2、GBDT详解

三、GBDT的应用

3.1、二分类问题 

3.2、多分类问题 

3.3、回归问题

四、GBDT如何选择特征

五、GBDT优缺点


一、什么是GBDT

GBDT,Gardient Boosting Decision Tree,梯度提升树,是一种属于boosting思想的迭代决策树。

提升树是采用前向分布算法训练多个弱学习器,而每个弱学习器用CART回归树构建,然后将多个弱学习器采用加法模型结合起来,作为最终的强学习器。GBDT属于boosting模型,所以每个弱分类器之间是有联系的,GBDT的后一个弱分类器训练的是前一个弱分类器损失的梯度,这样每次迭代都向着损失减小的方向,最终得到最优解。

二、GBDT的理解

2.1、GBDT通俗解释 

提升树模型可表示为以决策树为基学习器的加法模型,具体公式为:\large f(x)=f_{M}(x)=\sum_{m=1}^{M}h_{m}(x;\alpha _{m})

其中,\small h_{m}(x;\alpha _{m})表示第m棵决策树,M表示基学习器的数量,\small \alpha _{m}表示第m棵学习器的参数,比如叶子节点个数、树的深度等等。

那么如何求解加法模型呢?这里就要用到前向分布算法了,其实也就是用最直观的迭代求解。 

首先初始化:f_{0}(x)=0

第m部的模型为:f_{m}(x)=f_{m-1}(x)+h(x;\alpha _{m})

通过最小化经验风险,也就是损失函数最小化来求解:\alpha _{m}=arg min _{\alpha _{m}}\sum_{i=1}^{N}L(y_{i},f_{m}(x_{i}))

这里的L()为损失函数,回归常用的损失函数为MSE、绝对损失、Huber损失和分位数损失。分类常用的损失函数为指数损失和对数损失。

2.2、GBDT详解

上面说到要损失函数最小化,那么如何来进行损失函数最小化呢?梯度下降法是我们首先想到的,当我们进行GBDT回归时,如果损失函数为MSE,那么我们可以很方便的求梯度,找到最优解——残差。残差是指真实值与预测值之间的误差,对于损失函数:L=\frac{1}{2}\sum_{i=1}^{N}(y_{i}-f(x_{i}))^2,对其求导可得最优解为(y_{i}-f(x_{i})),这就是残差的由来。

残差是回归模型的损失为MSE的一种特殊情况,但一般情况下损失函数求导并不方便,前向分布优化并不顺利,因此利用损失函数的负梯度在当前模型的值\large -\left [\frac{\partial L(y,f(x_{i}))}{\partial f(x_{i})} \right ]_{f_{m}(x)=f_{m-1}(x)}作为回归问题提升树算法的残差近似值,拟合一个回归树,成为了GDBT的核心思想。

三、GBDT的应用

3.1、二分类问题 

二分类GBDT流程如下:

机器学习之集成学习:GBDT_第1张图片

机器学习之集成学习:GBDT_第2张图片 

机器学习之集成学习:GBDT_第3张图片 

机器学习之集成学习:GBDT_第4张图片 

3.2、多分类问题 

机器学习之集成学习:GBDT_第5张图片 

机器学习之集成学习:GBDT_第6张图片 

3.3、回归问题

 机器学习之集成学习:GBDT_第7张图片

当使用MSE时,梯度求解就变成了残差,通过后续对残差的优化来拟合训练数据。这里不做详细介绍。

四、GBDT如何选择特征

不论将GBDT用于分类任务还是回归任务,GBDT的基学习器均为CART回归树,因为要拟合每一轮迭代的残差。所以选择特征的问题就变成了CART回归树构造如何选择特征。

但是在机器学习库sklearn中,用于分类的GBDT的基学习器可以用CART回归树,其特征选择可以基于基尼系数。

五、GBDT优缺点

优点:

  • 精度高,无论是分类还是回归任务
  • 可以处理非线性数据
  • 可以处理离散值和连续值
  • 使用一些健壮的损失函数,对异常值不敏感。比如 Huber损失函数和Quantile损失函数。

缺点:由于下一个学习器需要拟合上一个学习器的残差,所以必须穿行执行,无法并行,这也导致处理大型数据时速度特别慢。因此后来的XGBoost和LightGBM都是基于GBDT但在并行性上做出了改进。           

你可能感兴趣的:(机器学习,机器学习)