1. GBDT简介
建议看这个之前,先看看这个通俗易懂版本的GBDT。
1.1 与随机森林的区别
随机森林中的决策树时分别采样建立的,相对独立,最后的结果由所有弱学习器投票决定。类似于并联结构
GBDT模型中,后一个模型受限于前面模型的结果,类似于串联结构
1.2 应用
GBDT可应用于回归和分类问题,每一步产生一个弱学习器,并且加权累加到总的模型中,如果每一步的弱学习器都是根据损失函数的梯度方向生成的,那么成为梯度提升(Gradient Boosting)
1.3 基本思路
首先给定一个目标损失函数,它的定义域是所有可行的弱学习器的集合,提升算法通过迭代的选择一个负梯度方向上的奇函数来逐渐逼近局部极小值。
1.4 理论依据
如果一个问题存在弱学习器,则可以通过提升的方法得到强学习器。
2. GBDT公式推导
假设输入数据为
D
=
{
(
x
1
,
y
1
)
,
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
D=\{(\boldsymbol{x_1}, y_1), \boldsymbol{x_2}, y_2),..., (\boldsymbol{x_n}, y_n)\}
D={(x1,y1),x2,y2),...,(xn,yn)},其中第
i
i
i条数据表示为
(
x
i
,
y
i
)
(\boldsymbol{x_i}, y_i)
(xi,yi),每条数据共有
d
d
d维特征。模型在所有数据上的损失函数记为
L
(
y
,
F
(
x
)
)
L(y, F(\boldsymbol{x}))
L(y,F(x))。
2.1 目标
找到一个近似函数
F
^
(
x
)
\hat{F}(\boldsymbol{x})
F^(x),使得损失函数
L
(
y
,
F
(
x
)
)
L(y, F(\boldsymbol{x}))
L(y,F(x))最小。
假定
F
^
(
x
)
\hat{F}(\boldsymbol{x})
F^(x)是一组若学习器共有M个
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)的加权和(
γ
m
\gamma_m
γm为第
m
m
m个弱学习器的权值):
F
^
(
x
)
=
∑
m
=
1
M
γ
m
f
m
(
x
)
+
c
o
n
s
t
(2.1)
\hat{F}(\boldsymbol{x})=\sum_{m=1}^{M}\gamma_mf_m(\boldsymbol{x})+const \tag{2.1}
F^(x)=m=1∑Mγmfm(x)+const(2.1)
2.2 初始化
首先给定常函数
F
0
(
x
)
F_0(\boldsymbol{x})
F0(x)
F
0
(
x
)
=
arg min
γ
∑
i
=
1
n
L
(
y
i
,
γ
)
(2.2)
F_0(\boldsymbol{x})=\argmin_{\gamma}\sum_{i=1}^{n}L(y_i,\gamma) \tag{2.2}
F0(x)=γargmini=1∑nL(yi,γ)(2.2)
在公式(2.2)中,首先找一个常数,记为
γ
\gamma
γ,能够使得损失函数值最小。这个常数依据不同的损失函数有不同的取值方法:
- 如果损失函数为 L ( y i , γ ) = ∑ i = 1 n 1 2 ( y i − γ ) 2 L(y_i, \gamma)=\sum_{i=1}^{n}\frac{1}{2}(y_i-\gamma)^2 L(yi,γ)=∑i=1n21(yi−γ)2,则当 γ = y ‾ \gamma=\overline{y} γ=y,时有最小值(对 γ \gamma γ求导令其为0即可)。
- 如果损失函数为 L ( y i , γ ) = ∑ i = 1 n ∣ y i − γ ∣ L(y_i, \gamma)=\sum_{i=1}^{n}|y_i-\gamma| L(yi,γ)=∑i=1n∣yi−γ∣,则当 γ \gamma γ取所有 y y y值的中位数即可)。
2.2.1 初始化之后考虑的事
假定经过
m
−
1
m-1
m−1迭代之后的模型为:
F
m
−
1
(
x
)
F_{m-1}(\boldsymbol{x})
Fm−1(x),则第
m
m
m次模型为:
F
^
(
x
)
=
F
m
−
1
(
x
)
+
arg min
f
m
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
i
)
+
f
^
m
(
x
i
)
)
(2.3)
\hat{F}(\boldsymbol{x})=F_{m-1}(\boldsymbol{x})+\argmin_{f_m}\sum_{i=1}^{n}L(y_i,F_{m-1}(\boldsymbol{x_i})+\hat{f}_m(\boldsymbol{x_i})) \tag{2.3}
F^(x)=Fm−1(x)+fmargmini=1∑nL(yi,Fm−1(xi)+f^m(xi))(2.3)
针对第 m m m个弱学习器而言,将训练集代入弱学习器模型 f ^ m ( x ) \hat{f}_m(\boldsymbol{x}) f^m(x)中可以得到 n n n个结果,现在要确定生成的第 m m m个弱分类器满足一个条件,那就是能够使得该模型对应的 n n n个误差: [ L ( y 1 , f ^ m ( x 1 ) ) , L ( y 2 , f ^ m ( x 2 ) ) , . . . , L ( y n , f ^ m ( x n ) ) ] [L(y_1, \hat{f}_m(\boldsymbol{x_1})), L(y_2, \hat{f}_m(\boldsymbol{x_2})),...,L(y_n, \hat{f}_m(\boldsymbol{x_n}))] [L(y1,f^m(x1)),L(y2,f^m(x2)),...,L(yn,f^m(xn))]最小。
问题来了:
因为 ∑ i = 1 n L ( y i , F m − 1 ( x i ) + f ^ m ( x i ) ) \sum_{i=1}^{n}L(y_i,F_{m-1}(\boldsymbol{x_i})+\hat{f}_m(\boldsymbol{x_i})) ∑i=1nL(yi,Fm−1(xi)+f^m(xi))的最小很难直接求,所以,利用梯度下降的方法逼近其最小值。
换句话说:就是第 m m m个分类器可能有无数种参数,分别记为 f m 1 , f m 2 . . . . f_{m_1},f_{m_2}.... fm1,fm2....,怎么样找到一个最合适的弱分类器呢?一般来说,我们是找不到的,这时候咋办,只能挑一个弱分类器,告诉它怎么才能够变成那个最合适的弱分类器,然后让它慢慢成长。如果它能力有限不能一次变到最好怎么办?没关系,你只要迈出一小步即可,剩下的有人会完成你未尽的事业。(经过无数弱分类器的努力,总能达到那个比较好的程度)
此时,就把问题从找最好转变成了怎么样变成最好?
这个时候,根据梯度的特点:负梯度方向是函数值下降最快的方向。可知,如果先看看 F m − 1 ( x i ) F_{m-1}(\boldsymbol{x_i}) Fm−1(xi)往最优点移动了多少后,再做决定是比较合理的。于是,让 L ( y i , F m − 1 ( x i ) ) L(y_i,F_{m-1}(\boldsymbol{x_i})) L(yi,Fm−1(xi))对 F m − 1 ( x i ) F_{m-1}(\boldsymbol{x_i}) Fm−1(xi)求导的结果加负号,即可知道 F m − 1 ( x i ) F_{m-1}(\boldsymbol{x_i}) Fm−1(xi)达成的成就以及方向,剩下的误差,交给其他的弱学习器就好了。
让我们再分解一下函数 f ^ m ( x n ) \hat{f}_m(\boldsymbol{x_n}) f^m(xn),其实 f ^ m ( x n ) = γ m f m ( x n ) \hat{f}_m(\boldsymbol{x_n})=\gamma_{m}f_m(\boldsymbol{x_n}) f^m(xn)=γmfm(xn):
- 对于 f m ( x n ) f_m(\boldsymbol{x_n}) fm(xn)来说,无法找到一个最好的,但是我们能够“造”出一个最合适的弱分类器。
- 对于 γ m \gamma_{m} γm来说,在“造出”一个合适的 f m ( x n ) f_m(\boldsymbol{x_n}) fm(xn)之后,通过 arg min γ m ∑ i = 1 n L ( y i , F m − 1 ( x i ) + γ m f m ( x i ) ) \argmin_{\gamma_m}\sum_{i=1}^{n}L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma_mf_m(\boldsymbol{x_i})) γmargmin∑i=1nL(yi,Fm−1(xi)+γmfm(xi))找到最合适(小)的 γ m \gamma_{m} γm即可。
2.3 计算伪残差(pseudo residuals)
相当于前 m − 1 m-1 m−1个若学习器达成的成就(距离完美程度还差多少)
2.4 训练拟合残差的弱学习器
前 m − 1 m-1 m−1个弱学习器未完成的事业,交给第 m m m个学习器。
使用数据 { ( x 1 , r 1 m ) , ( x 2 , r 2 m ) , . . . , ( x n , r n m ) } \{(\boldsymbol{x_1}, r_{1m}), (\boldsymbol{x_2}, r_{2m}),..., (\boldsymbol{x_n}, r_{nm})\} {(x1,r1m),(x2,r2m),...,(xn,rnm)}训练弱分类器 f m ( x ) f_m(\boldsymbol{x}) fm(x),找到弱分类器的最佳参数。
2.5 找一个合适该弱学习器的权重
此时我们找到了
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x),但是还有一个问题,就是应该给它分配多大的权重,因此需要考虑能够使
arg min
γ
m
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
i
)
+
γ
m
f
m
(
x
i
)
)
\argmin_{\gamma_m}\sum_{i=1}^{n}L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma_mf_m(\boldsymbol{x_i}))
γmargmini=1∑nL(yi,Fm−1(xi)+γmfm(xi))
最小的
γ
m
\gamma_m
γm。
2.6 更新模型
F
m
(
x
)
=
F
m
−
1
(
x
)
+
ν
γ
m
f
m
(
x
)
F_m(\boldsymbol{x})=F_{m-1}(\boldsymbol{x})+\nu \gamma_mf_m(\boldsymbol{x})
Fm(x)=Fm−1(x)+νγmfm(x)
上式中,
ν
\nu
ν为学习率。重复上述模型,直到指定次数。
3 在回归方面的应用
3.1 初始化
首先给定常函数 F 0 ( x ) F_0(\boldsymbol{x}) F0(x)
F 0 ( x ) = arg min γ ∑ i = 1 n L ( y i , γ ) (2.2) F_0(\boldsymbol{x})=\argmin_{\gamma}\sum_{i=1}^{n}L(y_i,\gamma) \tag{2.2} F0(x)=γargmini=1∑nL(yi,γ)(2.2)
在公式(2.2)中, F 0 ( x ) F_0(\boldsymbol{x}) F0(x)是一个常数,记为 γ \gamma γ,这个常数依据不同的损失函数有不同的取值方法:
- 如果损失函数为 L ( y i , γ ) = ∑ i = 1 n 1 2 ( y i − γ ) 2 L(y_i, \gamma)=\sum_{i=1}^{n}\frac{1}{2}(y_i-\gamma)^2 L(yi,γ)=∑i=1n21(yi−γ)2,则当 γ = y ‾ \gamma=\overline{y} γ=y,时有最小值(对 γ \gamma γ求导令其为0即可)。
- 如果损失函数为 L ( y i , γ ) = ∑ i = 1 n ∣ y i − γ ∣ L(y_i, \gamma)=\sum_{i=1}^{n}|y_i-\gamma| L(yi,γ)=∑i=1n∣yi−γ∣,则当 γ \gamma γ取所有 y y y值的中位数即可)。
在回归模型中,采用的损失函数为:
L
(
y
i
,
γ
)
=
∑
i
=
1
n
1
2
(
y
i
−
γ
)
2
(3.1)
L(y_i, \gamma)=\sum_{i=1}^{n}\frac{1}{2}(y_i-\gamma)^2 \tag{3.1}
L(yi,γ)=i=1∑n21(yi−γ)2(3.1)
取一个能够使得
L
(
y
i
,
γ
)
L(y_i, \gamma)
L(yi,γ)达到最小的
γ
\gamma
γ值。于是有:
∂
L
∂
F
=
∑
i
n
(
−
y
i
+
γ
)
\frac{\partial L}{\partial F}=\sum_i^n(-y_i+\gamma)
∂F∂L=i∑n(−yi+γ)
令其为0则有:
γ
=
1
n
∑
i
n
y
i
(3.2)
\gamma=\frac{1}{n}\sum_{i}^{n}y_i \tag{3.2}
γ=n1i∑nyi(3.2)
所以,初始化
F
0
(
x
)
=
γ
=
1
n
∑
i
n
y
i
F_0(\boldsymbol{x})=\gamma=\frac{1}{n}\sum_{i}^{n}y_i
F0(x)=γ=n1∑inyi。
3.2 计算伪残差(pseudo residuals)
相当于前 m − 1 m-1 m−1个若学习器达成的成就(距离完美程度还差多少)
每个样本的损失函数为
L
i
(
y
i
,
F
(
x
i
)
)
=
1
2
(
y
i
−
F
(
x
i
)
)
2
L_i(y_i, F(\boldsymbol{x_i}))=\frac{1}{2}(y_i-F(\boldsymbol{x_i}))^2
Li(yi,F(xi))=21(yi−F(xi))2,则:
r
i
m
=
y
i
−
F
m
−
1
(
x
i
)
,
i
=
1
,
2
,
.
.
.
,
n
(3.3)
r_{im}=y_i-F_{m-1}(\boldsymbol{x_i}), i=1,2,...,n\\ \tag{3.3}
rim=yi−Fm−1(xi),i=1,2,...,n(3.3)
r
i
m
r_{im}
rim表示:前
m
m
m个模型在第
i
i
i个样本上的表现(与完美程度的差距)。
3.3 训练拟合残差的弱学习器
使用数据 { ( x 1 , r 1 m ) , ( x 2 , r 2 m ) , . . . , ( x n , r n m ) } \{(\boldsymbol{x_1}, r_{1m}), (\boldsymbol{x_2}, r_{2m}),..., (\boldsymbol{x_n}, r_{nm})\} {(x1,r1m),(x2,r2m),...,(xn,rnm)}训练弱分类器 f m ( x ) f_m(\boldsymbol{x}) fm(x),找到弱分类器的最佳参数。
3.4 找一个合适该弱学习器的权重
此时我们找到了 f m ( x ) f_m(\boldsymbol{x}) fm(x),但是还有一个问题,就是应该给它分配多大的权重,因此需要考虑能够使
arg min γ m ∑ i = 1 n L ( y i , F m − 1 ( x i ) + γ m f m ( x i ) ) \argmin_{\gamma_m}\sum_{i=1}^{n}L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma_mf_m(\boldsymbol{x_i}))\\ γmargmini=1∑nL(yi,Fm−1(xi)+γmfm(xi))
最小的 γ m \gamma_m γm
对于普通的回归模型:
γ
m
=
arg min
γ
∑
x
i
∈
D
1
2
(
y
i
−
F
m
−
1
(
x
i
)
+
γ
)
2
0
=
∂
γ
m
∂
γ
=
∑
x
i
∈
D
y
i
−
F
m
−
1
(
x
i
)
+
γ
γ
=
1
n
∑
x
i
∈
D
F
m
−
1
(
x
i
)
−
y
i
(3.4)
\begin{aligned} \gamma_{m}=&\argmin_{\gamma}\sum_{x_i \in D}\frac{1}{2}(y_i-F_{m-1}{(\boldsymbol{x_i})+\gamma})^2\\ 0=&\frac{\partial{\gamma_{m}}}{\partial{\gamma}}=\sum_{x_i \in D}y_i-F_{m-1}{(\boldsymbol{x_i})+\gamma}\\ \gamma=&\frac{1}{n}\sum_{x_i \in D}F_{m-1}{(\boldsymbol{x_i})-y_i}\\ \tag{3.4} \end{aligned}
γm=0=γ=γargminxi∈D∑21(yi−Fm−1(xi)+γ)2∂γ∂γm=xi∈D∑yi−Fm−1(xi)+γn1xi∈D∑Fm−1(xi)−yi(3.4)
但是在回归树中,由于其模型特点:不同的叶子结点可以看做是不同的回归方程,所以,其对最小值的寻找范围并非在整个数据集上,而是在当前输出的叶子节点上,因此,不同的叶子节点有不同的权重,假定这样的叶子结点共有
J
J
J个,则有:
γ
J
m
=
arg min
γ
∑
x
i
,
y
i
∈
D
J
m
1
2
(
y
i
−
F
m
−
1
(
x
i
)
+
γ
)
2
0
=
∂
γ
J
m
∂
γ
=
∑
x
i
,
y
i
∈
D
J
m
y
i
−
F
m
−
1
(
x
i
)
+
γ
γ
J
m
=
1
n
D
J
m
∑
x
i
,
y
i
∈
D
J
m
F
m
−
1
(
x
i
)
−
y
i
(3.5)
\begin{aligned} \gamma_{Jm}=&\argmin_{\gamma}\sum_{x_i,y_i \in D_{Jm}}\frac{1}{2}(y_i-F_{m-1}{(\boldsymbol{x_i})+\gamma})^2\\ 0=&\frac{\partial{\gamma_{Jm}}}{\partial{\gamma}}=\sum_{x_i,y_i \in D_{Jm}}y_i-F_{m-1}{(\boldsymbol{x_i})+\gamma}\\ \gamma_{Jm}=&\frac{1}{n_{D_{Jm}}}\sum_{x_i,y_i \in D_{Jm}}F_{m-1}{(\boldsymbol{x_i})-y_i}\\ \tag{3.5} \end{aligned}
γJm=0=γJm=γargminxi,yi∈DJm∑21(yi−Fm−1(xi)+γ)2∂γ∂γJm=xi,yi∈DJm∑yi−Fm−1(xi)+γnDJm1xi,yi∈DJm∑Fm−1(xi)−yi(3.5)
n
D
J
m
n_{D_{Jm}}
nDJm表示:经过前
m
m
m个模型后,聚集在第
J
J
J个叶子上的样本数据的个数。
γ
J
m
\gamma_{Jm}
γJm表示:经过前
m
m
m个模型后,聚集在第
J
J
J个叶子上的最佳权重。
γ
\gamma
γ表示:经过前
m
m
m个模型后,聚集在第
J
J
J个叶子上的权重,不一定是最佳的。
3.5 更新模型
F m ( x ) = F m − 1 ( x ) + ν γ m f m ( x ) F_m(\boldsymbol{x})=F_{m-1}(\boldsymbol{x})+\nu \gamma_m f_m(\boldsymbol{x}) Fm(x)=Fm−1(x)+νγmfm(x)
上式中, ν \nu ν为学习率。
重复上述模型,直到指定次数。
在回归树中,
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)则变成了indication function,即
函数
I
I
I的含义为:
I
(
x
i
)
=
{
1
i
f
:
i
=
j
0
o
t
h
e
r
:
i
≠
j
I(\boldsymbol{x_i})= \left\{\begin{matrix} 1 & if:i=j\\ 0 & other:i \neq j & \end{matrix}\right.
I(xi)={10if:i=jother:i=j
对于所有的叶子节点而言,如果
x
i
\boldsymbol{x_i}
xi不属于该叶子节点,则
I
(
x
i
)
=
0
I(\boldsymbol{x_i})=0
I(xi)=0,否则为1。
4 在二分类方面的应用
4.1 初始化
采用的损失函数为:
L
i
(
y
i
,
F
(
x
i
)
)
=
−
y
i
∗
F
(
x
i
)
+
ln
(
1
+
exp
(
F
(
x
i
)
)
)
(4.1)
L_i(y_i, F(\boldsymbol{x_i}))=-y_i*F(\boldsymbol{x_i})+\ln(1+\exp(F(\boldsymbol{x_i}))) \tag{4.1}
Li(yi,F(xi))=−yi∗F(xi)+ln(1+exp(F(xi)))(4.1)
其中
F
(
x
)
=
ln
(
p
1
−
p
)
F(x)=\ln(\frac{p}{1-p})\\
F(x)=ln(1−pp)
公式(4.1)的来源,见注脚。1
对函数
F
(
x
i
)
F(\boldsymbol{x_i})
F(xi)求导:
∂
L
i
∂
F
(
x
i
)
=
−
y
i
+
exp
(
F
(
x
i
)
)
1
+
exp
(
F
(
x
i
)
)
=
−
y
i
+
p
(4.2)
\begin{aligned} \frac{\partial L_i}{\partial F(\boldsymbol{x_i})}=&-y_i+\frac{\exp(F(\boldsymbol{x_i}))}{1+\exp(F(\boldsymbol{x_i}))}\\ =&-y_i+p \tag{4.2} \end{aligned}
∂F(xi)∂Li==−yi+1+exp(F(xi))exp(F(xi))−yi+p(4.2)
即
p
=
exp
(
F
(
x
i
)
)
1
+
exp
(
F
(
x
i
)
)
(4.3)
p=\frac{\exp(F(\boldsymbol{x_i}))}{1+\exp(F(\boldsymbol{x_i}))} \tag{4.3}
p=1+exp(F(xi))exp(F(xi))(4.3)
但是,由于数据是离散型数据,不同类之间没有可加性,因此,当 p p p取某类数据的概率时,能够使损失函数最小。
也就是说,能使得
L
i
(
y
i
,
F
(
x
i
)
)
L_i(y_i, F(\boldsymbol{x_i}))
Li(yi,F(xi))最小的表达方式有两种:
p
=
1
n
∑
i
=
1
n
y
i
(4.4-1)
p=\frac{1}{n}\sum_{i=1}^ny_i \tag{4.4-1}
p=n1i=1∑nyi(4.4-1)
y
i
=
exp
(
F
(
x
i
)
)
1
+
exp
(
F
(
x
i
)
)
(4.4-2)
y_i=\frac{\exp(F(\boldsymbol{x_i}))}{1+\exp(F(\boldsymbol{x_i}))} \tag{4.4-2}
yi=1+exp(F(xi))exp(F(xi))(4.4-2)
因此,初始化
F
0
(
x
)
F_0(x)
F0(x)为:
F
0
(
x
)
=
ln
(
p
1
−
p
)
\begin{aligned} F_0(\boldsymbol{x})=&\ln(\frac{p}{1-p})\\ \end{aligned}
F0(x)=ln(1−pp)
其中,
p
p
p为某一类的概率。
4.2 计算伪残差(pseudo residuals)
由公式(2.7)可知,
r
i
m
=
y
i
−
p
r_{im}=y_i-p
rim=yi−p
r
i
m
r_{im}
rim表示:前
m
m
m个模型在第
i
i
i个样本上的表现(与完美程度的差距)。
4.3 训练拟合残差的弱学习器
使用数据 { ( x 1 , r 1 m ) , ( x 2 , r 2 m ) , . . . , ( x n , r n m ) } \{(\boldsymbol{x_1}, r_{1m}), (\boldsymbol{x_2}, r_{2m}),..., (\boldsymbol{x_n}, r_{nm})\} {(x1,r1m),(x2,r2m),...,(xn,rnm)}训练弱分类器 f m ( x ) f_m(\boldsymbol{x}) fm(x),找到弱分类器的最佳参数。
4.4 找一个合适该弱学习器的权重
此时我们找到了 f m ( x ) f_m(\boldsymbol{x}) fm(x),但是还有一个问题,就是应该给它分配多大的权重,因此需要考虑能够使
arg min γ m ∑ i = 1 n L ( y i , F m − 1 ( x i ) + γ m f m ( x i ) ) \argmin_{\gamma_m}\sum_{i=1}^{n}L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma_mf_m(\boldsymbol{x_i})) γmargmini=1∑nL(yi,Fm−1(xi)+γmfm(xi))
最小的 γ m \gamma_m γm
在决策树中,由于其模型特点:不同的叶子结点可以看做是不同的方程,所以,其对最小值的寻找范围并非在整个数据集上,而是在当前输出的叶子节点上,因此,不同的叶子节点有不同的权重,假定这样的叶子结点共有
J
J
J个,则有:
γ
J
m
=
arg min
γ
∑
x
i
,
y
i
∈
D
J
m
L
(
y
i
,
F
m
−
1
(
x
i
)
+
γ
)
=
arg min
γ
∑
x
i
,
y
i
∈
D
J
m
−
y
i
∗
[
F
m
−
1
(
x
i
)
+
γ
]
+
ln
(
1
+
exp
(
[
F
m
−
1
(
x
i
)
+
γ
]
)
)
(4.5)
\begin{aligned} \gamma_{Jm}=&\argmin_{\gamma}\sum_{x_i,y_i \in D_{Jm}}L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma)\\ =&\argmin_{\gamma}\sum_{x_i,y_i \in D_{Jm}}-y_i*[F_{m-1}(\boldsymbol{x_i})+\gamma]+\ln(1+\exp([F_{m-1}(\boldsymbol{x_i})+\gamma]))\\ \tag{4.5} \end{aligned}
γJm==γargminxi,yi∈DJm∑L(yi,Fm−1(xi)+γ)γargminxi,yi∈DJm∑−yi∗[Fm−1(xi)+γ]+ln(1+exp([Fm−1(xi)+γ]))(4.5)
在公式(4.5)中,
γ
J
m
\gamma_{Jm}
γJm表示:经过前
m
m
m个模型后,聚集在第
J
J
J个叶子上的最佳权重。
F
m
−
1
(
x
i
)
F_{m-1}(\boldsymbol{x_i})
Fm−1(xi)表示:经过前
m
−
1
m-1
m−1个模型后,第
i
i
i个样本对应的模型结果(不是概率值,是分类结果)。
y
i
y_i
yi表示:第
i
i
i个样本对应的模型结果(不是概率值,是分类结果)。
在这样的情况下,要求 γ \gamma γ非常难,所以采用泰勒公式将公式(3.5)展开,于是有:
L
(
y
i
,
F
m
−
1
(
x
i
)
+
γ
)
≈
L
(
y
i
,
F
m
−
1
(
x
i
)
)
+
∂
L
∂
F
m
−
1
(
x
i
)
γ
+
1
2
∂
2
L
∂
2
F
m
−
1
(
x
i
)
γ
2
(4.6)
\begin{aligned} L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma) \approx &L(y_i,F_{m-1}(\boldsymbol{x_i}))+\frac{\partial L}{\partial F_{m-1}(\boldsymbol{x_i})}\gamma+\frac{1}{2}\frac{\partial^2 L}{\partial^2 F_{m-1}(\boldsymbol{x_i})}\gamma^2 \tag{4.6} \end{aligned}
L(yi,Fm−1(xi)+γ)≈L(yi,Fm−1(xi))+∂Fm−1(xi)∂Lγ+21∂2Fm−1(xi)∂2Lγ2(4.6)
让公式(3.6)对
γ
\gamma
γ求导,并令其为0,则有:
∂
L
(
y
i
,
F
m
−
1
(
x
i
)
+
γ
)
γ
≈
0
+
∂
L
∂
F
m
−
1
(
x
i
)
+
∂
2
L
∂
2
F
m
−
1
(
x
i
)
γ
0
=
∂
L
∂
F
m
−
1
(
x
i
)
+
∂
2
L
∂
2
F
m
−
1
(
x
i
)
γ
γ
=
∂
2
L
/
∂
2
F
m
−
1
(
x
i
)
(4.7)
\begin{aligned} \frac{\partial L(y_i,F_{m-1}(\boldsymbol{x_i})+\gamma)}{\gamma} \approx& 0+\frac{\partial L}{\partial F_{m-1}(\boldsymbol{x_i})}+\frac{\partial^2 L}{\partial^2 F_{m-1}(\boldsymbol{x_i})}\gamma\\ 0=&\frac{\partial L}{\partial F_{m-1}(\boldsymbol{x_i})}+\frac{\partial^2 L}{\partial^2 F_{m-1}(\boldsymbol{x_i})}\gamma\\ \gamma =& \partial^2 L/\partial^2 F_{m-1}(\boldsymbol{x_i}) \tag{4.7} \end{aligned}
γ∂L(yi,Fm−1(xi)+γ)≈0=γ=0+∂Fm−1(xi)∂L+∂2Fm−1(xi)∂2Lγ∂Fm−1(xi)∂L+∂2Fm−1(xi)∂2Lγ∂2L/∂2Fm−1(xi)(4.7)
对于
∂
2
L
/
∂
2
F
m
−
1
(
x
i
)
\partial^2 L/\partial^2 F_{m-1}(\boldsymbol{x_i})
∂2L/∂2Fm−1(xi)来说,则有:
∂
2
L
∂
2
F
=
exp
(
F
)
(
1
+
exp
(
F
)
)
−
exp
(
2
F
)
(
1
+
exp
(
F
)
)
2
=
exp
(
F
)
(
1
+
exp
(
F
)
)
2
=
p
∗
1
(
1
+
exp
(
F
)
)
=
p
∗
(
1
−
exp
(
F
)
(
1
+
exp
(
F
)
)
)
=
p
(
1
−
p
)
(4.8)
\begin{aligned} \frac{\partial^2 L}{\partial^2 F}=&\frac{\exp(F)(1+\exp(F))-\exp(2F)}{(1+\exp(F))^2}\\ =&\frac{\exp(F)}{(1+\exp(F))^2}\\ =&p*\frac{1}{(1+\exp(F))}\\ =&p*(1-\frac{\exp(F)}{(1+\exp(F))})\\ =&p(1-p) \tag{4.8} \end{aligned}
∂2F∂2L=====(1+exp(F))2exp(F)(1+exp(F))−exp(2F)(1+exp(F))2exp(F)p∗(1+exp(F))1p∗(1−(1+exp(F))exp(F))p(1−p)(4.8)
注意!!!这里的
p
p
p是指第
i
i
i个样本的概率!!!
所以!!!
γ
=
−
y
i
+
p
i
p
i
(
1
+
p
i
)
(4.9)
\gamma=\frac{-y_i+p_i}{p_i(1+p_i)} \tag{4.9}
γ=pi(1+pi)−yi+pi(4.9)
懒猴,我们再根据公式(4.5)就可以计算出
γ
m
=
∑
x
i
,
y
i
∈
D
J
m
(
−
y
i
+
p
i
)
∑
x
i
,
y
i
∈
D
J
m
p
i
(
1
+
p
i
)
(4.10)
\gamma_m=\frac{\sum_{x_i,y_i \in D_{Jm}}(-y_i+p_i)}{\sum_{x_i,y_i \in D_{Jm}}p_i(1+p_i)} \tag{4.10}
γm=∑xi,yi∈DJmpi(1+pi)∑xi,yi∈DJm(−yi+pi)(4.10)
例如,如果样本2与样本3在同一个叶子结点上,则第
m
m
m个模型的权重为:
γ
m
=
(
y
2
−
p
2
)
+
(
y
3
−
p
3
)
(
p
2
(
1
+
p
2
)
)
+
(
p
3
(
1
+
p
3
)
)
\gamma_m=\frac{(y_2-p_2)+(y_3-p_3)}{(p_2(1+p_2))+(p_3(1+p_3))}
γm=(p2(1+p2))+(p3(1+p3))(y2−p2)+(y3−p3)
4.5 更新模型
F m ( x ) = F m − 1 ( x ) + ν f m ( x ) F_m(\boldsymbol{x})=F_{m-1}(\boldsymbol{x})+\nu f_m(\boldsymbol{x}) Fm(x)=Fm−1(x)+νfm(x)
上式中, ν \nu ν为学习率。
重复上述模型,直到指定次数。
在分类树中,
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)则变成了indication function,即
函数
I
I
I的含义为:
I
(
x
i
)
=
{
1
i
f
:
i
=
j
0
o
t
h
e
r
:
i
≠
j
I(\boldsymbol{x_i})= \left\{\begin{matrix} 1 & if:i=j\\ 0 & other:i \neq j & \end{matrix}\right.
I(xi)={10if:i=jother:i=j
对于所有的叶子节点而言,如果
x
i
\boldsymbol{x_i}
xi不属于该叶子节点,则
I
(
x
i
)
=
0
I(\boldsymbol{x_i})=0
I(xi)=0,否则为1。
5. 参考文献
- 《西瓜书》
- 《Greedy Function Approximation: A Gradient Boosting Machine》
在分类中,无法直接计算其属于哪个分类,因此只能够通过计算属于各个分类的概率值来衡量。
所以采用logistics模型来体现各个分类的概率值。
F ( x ) = ln ( p 1 − p ) F(x)=\ln(\frac{p}{1-p})\\ F(x)=ln(1−pp)
L ( y , F ( x ) ) = ∑ i = 1 N y i ∗ ln ( p ) + ( 1 − y i ) ∗ ln ( 1 − p ) ) (-1.1) L(y, F(\boldsymbol{x}))=\sum_{i=1}^Ny_i*\ln(p)+(1-y_i)*\ln(1-p)) \tag{-1.1} L(y,F(x))=i=1∑Nyi∗ln(p)+(1−yi)∗ln(1−p))(-1.1)
要使公式(-1.1)最小,等价于求下式的极大值。
L ( y , F ( x ) ) = − ∑ i = 1 N y i ∗ ln ( p ) + ( 1 − y i ) ∗ ln ( 1 − p ) ) (-1.2) L(y, F(\boldsymbol{x}))=-\sum_{i=1}^Ny_i*\ln(p)+(1-y_i)*\ln(1-p)) \tag{-1.2} L(y,F(x))=−i=1∑Nyi∗ln(p)+(1−yi)∗ln(1−p))(-1.2)
因此有极大化每个样本数据:
L i ( y i , F ( x i ) ) = − [ y i ∗ ln ( p ) + ( 1 − y i ) ∗ ln ( 1 − p ) ] = − y i ∗ ln ( p ) − ( 1 − y i ) ∗ ln ( 1 − p ) = − y i ∗ [ ln ( p ) − ln ( 1 − p ) ] − ln ( 1 − p ) = − y i ∗ [ ln ( p 1 − p ) ] − ln ( 1 − p ) (-1.3) \begin{aligned} L_i(y_i, F(\boldsymbol{x_i}))=&-[y_i*\ln(p)+(1-y_i)*\ln(1-p)]\\ =&-y_i*\ln(p)-(1-y_i)*\ln(1-p)\\ =&-y_i*[\ln(p)-\ln(1-p)]-\ln(1-p)\\ =&-y_i*[\ln(\frac{p}{1-p})]-\ln(1-p) \tag{-1.3} \end{aligned} Li(yi,F(xi))====−[yi∗ln(p)+(1−yi)∗ln(1−p)]−yi∗ln(p)−(1−yi)∗ln(1−p)−yi∗[ln(p)−ln(1−p)]−ln(1−p)−yi∗[ln(1−pp)]−ln(1−p)(-1.3)
又因,在logistics回归中:
ln ( 1 − p ) = ln ( 1 − exp ( ln ( p 1 − p ) ) 1 + exp ( ln ( p 1 − p ) ) ) = ln ( 1 1 + exp ( ln ( p 1 − p ) ) ) = ln ( 1 ) − ln ( 1 + exp ( ln ( p 1 − p ) ) ) = − ln ( 1 + exp ( ln ( p 1 − p ) ) ) (-1.4) \begin{aligned} \ln(1-p)=&\ln(1-\frac{\exp(\ln(\frac{p}{1-p}))}{1+\exp(\ln(\frac{p}{1-p}))})\\ =&\ln(\frac{1}{1+\exp(\ln(\frac{p}{1-p}))})\\ =&\ln(1)-\ln(1+\exp(\ln(\frac{p}{1-p})))\\ =&-\ln(1+\exp(\ln(\frac{p}{1-p}))) \tag{-1.4} \end{aligned} ln(1−p)====ln(1−1+exp(ln(1−pp))exp(ln(1−pp)))ln(1+exp(ln(1−pp))1)ln(1)−ln(1+exp(ln(1−pp)))−ln(1+exp(ln(1−pp)))(-1.4)
将(-1.4)代入(-1.3),则Loss function有:
L i ( y i , F ( x i ) ) = − y i ∗ ln ( p 1 − p ) + ln ( 1 + exp ( ln ( p 1 − p ) ) ) (-1.5) L_i(y_i, F(\boldsymbol{x_i}))=-y_i*\ln(\frac{p}{1-p})+\ln(1+\exp(\ln(\frac{p}{1-p}))) \tag{-1.5} Li(yi,F(xi))=−yi∗ln(1−pp)+ln(1+exp(ln(1−pp)))(-1.5) ↩︎