Boosting
本章节讲解提升算法,主要是提升树,提升树实际上是采用加法模型和前向分步算法,并且以决策树为基学习器。下面我们就依次来介绍这几个概念
Additive Model
下面我们来看加法模型,加法模型的定义非常简单,其实就是所有基学习器的一个线性组合
H
(
x
)
=
∑
t
=
1
T
α
t
h
t
(
x
)
H(x)\ =\ \sum_{t=1}^{T}\alpha_{t}h_t(x)
H(x) = t=1∑Tαtht(x)
Boosting算法一种比较容易理解的推导方式就是基于加法模型。而加法模型的学习就是在已知损失函数
L
L
L的条件下,最小化损失函数得到最优的加法模型
m
i
n
i
m
i
z
e
∑
i
=
1
N
L
(
y
i
,
H
(
x
i
)
)
=
∑
i
=
1
N
L
(
y
i
,
∑
t
=
1
T
α
t
h
t
(
x
)
)
minimize\ \ \ \ \sum_{i=1}^{N}L(y_i,\ H(x_i)) \ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\sum_{i=1}^{N}L(y_i,\ \sum_{t=1}^{T}\alpha_{t}h_t(x))
minimize i=1∑NL(yi, H(xi)) =i=1∑NL(yi, t=1∑Tαtht(x))
Forward Stepwise Algorithm
加法模型的优化目标非常的复杂,不能直接求解,因此采用前向分布算法。前向分布算法的步骤如下:
输入:数据集
D
D
D,损失函数
L
L
L,基学习器
h
(
x
)
h(x)
h(x)
输出:加法模型
H
(
x
)
H(x)
H(x)
(1) 初始化基学习器
h
0
(
x
)
=
0
h_0(x) = 0
h0(x)=0
(2) 对于$t=1,2,\dots,T $
(a) 极小化损失函数得到本轮最优基学习器及其权重
(
α
t
,
h
t
)
=
a
r
g
m
i
n
α
,
h
∑
i
=
1
N
L
(
y
i
,
h
t
−
1
(
x
i
)
+
α
t
h
t
(
x
i
)
)
(\alpha_t,\ h_t)\ = \ argmin_{\alpha, h} \sum_{i=1}^{N}L(y_i,\ h_{t-1}(x_i) +\alpha_th_t(x_i))
(αt, ht) = argminα,h∑i=1NL(yi, ht−1(xi)+αtht(xi))
(b) 更新 h t ( x ) = h t − 1 ( x ) + α t h t ( x ) h_t(x) \ =\ h_{t-1}(x) + \alpha_{t}h_t(x) ht(x) = ht−1(x)+αtht(x)
(3) 得到加法模型: H ( x ) = ∑ t = 1 T h t ( x ) H(x)\ =\ \sum_{t=1}^{T}h_t(x) H(x) = ∑t=1Tht(x)
基于以上的知识,我们就可以推导出很多的提升树模型,例如AdaBoost就可以解释称成模型为加法模型、损失函数为指数函数、学习算法为前向分布算法的二分类模型
Boosting Tree
提升树算法采用前向分步算法,首先确定初始提升树
H
0
(
x
)
=
0
H_0(x)=0
H0(x)=0,第
t
t
t步的模型为:
H
t
(
x
)
=
H
t
−
1
(
x
)
+
T
(
x
;
θ
t
)
H_t(x)\ =\ H_{t-1}(x)\ +\ T(x;\theta_t)
Ht(x) = Ht−1(x) + T(x;θt)
其中,
T
(
x
;
θ
t
)
T(x;\theta_t)
T(x;θt)是
t
t
t时刻得到的基学习器(单棵决策树)。
提升树模型有很多,但其实也只是损失函数的不同,用于不同的任务。如分类任务常用指数损失函数或对数似然函数,回归任务常用均方误差损失或者绝对误差损失。