【2】GBDT
1 GBDT
GBDT(Gradient Bootsting Decision Tree)梯度提升决策树作为boosting算法中的另一个重要代表,主要由三个部分构成
- 回归树 Regression Decision Tree
- GB:梯度迭代 Gradient Boosting
- Shrinkage
2 前向分步算法
考虑加法模型:
f
(
x
)
=
∑
m
M
β
m
b
(
x
;
γ
m
)
f(x)=\sum_m^M\beta_mb(x;\gamma_m)
f(x)=m∑Mβmb(x;γm)
其中,
b
(
x
;
γ
m
)
b(x;\gamma_m)
b(x;γm)为基函数,
γ
m
\gamma_m
γm为基函数的参数,
β
m
\beta_m
βm为基函数的系数
在给定训练集数据及损失函数
L
(
y
,
f
(
x
)
)
L(y,f(x))
L(y,f(x))的条件下,学习加法模型
f
(
x
)
f(x)
f(x)成为经验风险极小化即损失函数极小化问题:
min
β
m
,
γ
m
∑
i
=
1
M
L
(
y
i
,
∑
m
M
β
m
b
(
x
;
γ
m
)
)
\min\limits_{\beta_m,\gamma_m}\sum_{i=1}^ML(y_i,\sum_m^M\beta_mb(x;\gamma_m))
βm,γmmini=1∑ML(yi,m∑Mβmb(x;γm))
前向分步算法求解这个优化问题的思路是:因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数
具体地,每步只需要优化如下损失函数:
min
β
,
γ
∑
i
=
1
M
L
(
y
i
,
β
b
(
x
;
γ
)
)
\min\limits_{\beta,\gamma}\sum_{i=1}^ML(y_i,\beta b(x;\gamma))
β,γmini=1∑ML(yi,βb(x;γ))
3 损失函数
-
1.分类问题损失函数
对于分类算法,其损失函数一般有对数损失函数和指数损失函数两种:- 如果是指数损失函数,则损失函数表达式
- 如果是对数损失函数,分为二元分类和多元分类两种,
对于二元分类
-
2.回归问题损失函数
对于回归算法,常用损失函数有如下4种:- 均方差,这个是最常见的回归损失函数了
- 绝对损失,这个损失函数也很常见
- Huber损失,它是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。
- 分位数损失。它对应的是分位数回归的损失函数
4 负梯度拟合回归模型
5 分类算法
6 正则化
和Adaboost一样,我们也需要对GBDT进行正则化,防止过拟合。GBDT的正则化主要有三种方式。
-
步长设置(learning rate)
-
子采样比例(subsample)
-
取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。
-
使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,程序可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。
-
7 优缺点
-
GBDT主要的优点有:
(1)可以灵活处理各种类型的数据,包括连续值和离散值。
(2)在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
(3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。 -
GBDT的主要缺点有:
(1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
8 sklearn参数
9 应用场景
GBDT几乎可用于所有回归问题(线性/非线性),相对logistic regression仅能用于线性回归,GBDT的适用面非常广。亦可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)