前言
- Boosting是机器学习技术,与单纯随机森林依靠累加模型不同,它每一步产生一个弱预测模型,并且加权累加到总模型中。如果每一步的弱模型生成方向都是依据损失函数的梯度方向,则称之为梯度提升(Gradient Boosting)。
- 梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数);通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部极小值。
- 如果一个问题存在弱分类器,则可以通过Boosting方法得到强分类器。
模型建立
对于输入训练样本
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
\left( \mathbf{x}_{\mathbf{1}},\mathrm{y}_1 \right) ,\left( \mathbf{x}_{\mathbf{2}},\mathrm{y}_2 \right) ,...,\left( \mathbf{x}_{\mathbf{n}},\mathrm{y}_{\mathrm{n}} \right)
(x1,y1),(x2,y2),...,(xn,yn)
来说,boosting的目标是找到近似函数,使得损失函数值最小,
L
(
y
,
F
(
x
⃗
)
)
L(y,F(\vec{x}))
L(y,F(x))的一般定义为:
L
(
y
,
F
(
x
⃗
)
)
=
1
2
(
y
−
F
(
x
⃗
)
)
2
L(y,F(\vec{x}))=\frac{1}{2}(y-F(\vec{x}))^2
L(y,F(x))=21(y−F(x))2
或者
L
(
y
,
F
(
x
⃗
)
)
=
∣
y
−
F
(
x
⃗
)
∣
L(y,F(\vec{x}))=|y-F(\vec{x})|
L(y,F(x))=∣y−F(x)∣
需要求出最优近似函数:
F
∗
(
x
⃗
)
=
a
r
g
min
F
E
(
x
,
y
)
[
L
(
y
,
F
(
x
⃗
)
)
]
F^*(\vec{x})=\underset{F}{\mathrm{arg}\min}E_{(x,y)}[L(y,F(\vec{x}))]
F∗(x)=FargminE(x,y)[L(y,F(x))]
但是有别于随机森林的是,这里的最优函数不是简单的叠加,而是基函数
f
i
(
x
)
f_i(x)
fi(x)的加权和:
F
(
x
⃗
)
=
∑
i
=
1
M
γ
i
f
i
(
x
)
+
c
o
n
s
t
F(\vec{x})=\sum_{i=1}^M{\gamma _i}f_i(x)+const
F(x)=i=1∑Mγifi(x)+const
模型求解
在梯度提升的方法下求最优解,首先给定常函数:
F
0
(
x
⃗
)
=
a
r
g
min
γ
∑
i
=
1
n
L
(
y
i
,
γ
)
F_0(\vec{x})=\underset{\gamma}{\mathrm{arg}\min}\sum_{i=1}^n{L}\left( y_i,\gamma \right)
F0(x)=γargmini=1∑nL(yi,γ)
以贪心算法的思路扩展得到:
F
m
(
x
⃗
)
=
F
m
−
1
(
x
⃗
)
+
a
r
g
min
f
∈
H
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
⃗
i
)
+
f
(
x
⃗
i
)
)
F_m(\vec{x})=F_{m-1}(\vec{x})+\underset{f\in H}{\mathrm{arg}\min}\sum_{i=1}^n{L}\left( y_i,F_{m-1}\left( \vec{x}_i \right) +f\left( \vec{x}_i \right) \right)
Fm(x)=Fm−1(x)+f∈Hargmini=1∑nL(yi,Fm−1(xi)+f(xi))
也就是说,下一次迭代的总函数,需要在上一次迭代的基础上加入新的基函数。但是贪心算法并不能完全满足基函数的选择,这里使用梯度下降的方法近似计算。将训练样本
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
\left( \mathbf{x}_{\mathbf{1}},\mathrm{y}_1 \right) ,\left( \mathbf{x}_{\mathbf{2}},\mathrm{y}_2 \right) ,...,\left( \mathbf{x}_{\mathbf{n}},\mathrm{y}_{\mathrm{n}} \right)
(x1,y1),(x2,y2),...,(xn,yn)代入基函数得到
f
(
x
1
)
,
f
(
x
2
)
,
.
.
.
,
f
(
x
n
)
\mathrm{f}\left( \mathbf{x}_1 \right) ,\mathrm{f}\left( \mathbf{x}_{\mathbf{2}} \right) ,...,\mathrm{f}\left( \mathbf{x}_{\mathbf{n}} \right)
f(x1),f(x2),...,f(xn),从而L退化为向量
L
(
y
1
,
f
(
x
1
)
)
,
L
(
y
2
,
f
(
x
2
)
)
,
.
.
.
,
L
(
y
n
,
f
(
x
n
)
)
\mathrm{L}\left( \mathrm{y}_1,\mathrm{f}\left( \mathbf{x}_1 \right) \right) ,\mathrm{L}\left( \mathrm{y}_2,\mathrm{f}\left( \mathbf{x}_2 \right) \right) ,...,\mathrm{L}\left( \mathrm{y}_{\mathrm{n}},\mathrm{f}\left( \mathbf{x}_{\mathrm{n}} \right) \right)
L(y1,f(x1)),L(y2,f(x2)),...,L(yn,f(xn))
有:
F
m
(
x
⃗
)
=
F
m
−
1
(
x
⃗
)
−
γ
m
∑
i
=
1
n
∇
f
L
(
y
i
,
F
m
−
1
(
x
⃗
i
)
)
F_m(\vec{x})=F_{m-1}(\vec{x})-\gamma _m\sum_{i=1}^n{\nabla _f}L\left( y_i,F_{m-1}\left( \vec{x}_i \right) \right)
Fm(x)=Fm−1(x)−γmi=1∑n∇fL(yi,Fm−1(xi))
其中
γ
\gamma
γ为步长,使用线性搜索可以求出最优的步长:
γ
m
=
a
r
g
min
γ
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
⃗
i
)
−
γ
⋅
∇
f
L
(
y
i
,
F
m
−
1
(
x
⃗
i
)
)
)
\gamma _m=\underset{\gamma}{\mathrm{arg}\min}\sum_{i=1}^n{L}\left( y_i,F_{m-1}\left( \vec{x}_i \right) -\gamma \cdot \nabla _fL\left( y_i,F_{m-1}\left( \vec{x}_i \right) \right) \right)
γm=γargmini=1∑nL(yi,Fm−1(xi)−γ⋅∇fL(yi,Fm−1(xi)))
这里不再赘述。