GBDT
梯度提升的典型基函数即决策树(尤其是CART)
在第m步的梯度提升是根据为残差数据计算决策树
t
m
(
x
)
\mathrm{t}_{\mathrm{m}}(\mathbf{x})
tm(x)。令树t
m
(
x
)
_{\mathrm{m}}(\mathbf{x})
m(x) 的叶节点数目为J, 即树t
m
(
x
)
_{\mathrm{m}}(\mathrm{x})
m(x) 将输
入空间划 分为
J
J
J个不相交区域
R
1
m
,
R
2
m
,
…
,
R
J
m
,
\mathrm{R}_{1 \mathrm{~m}}, \mathrm{R}_{2 \mathrm{~m}}, \ldots, \mathrm{R}_{\mathrm{Jm}},
R1 m,R2 m,…,RJm, 并且决策树t
t
m
(
x
)
\mathrm{t}_{\mathrm{m}}(\mathrm{x})
tm(x) 可以在每个区域中给出某个类型的确定性预测。使用指示记号I(x), 对于输入X,
t
m
(
x
)
\mathrm{t}_{\mathrm{m}}(\mathbf{x})
tm(x) 为
t
m
(
x
⃗
)
=
∑
j
=
1
J
b
j
m
I
(
x
⃗
∈
R
j
m
)
t_{m}(\vec{x})=\sum_{j=1}^{J} b_{j m} I\left(\vec{x} \in R_{j m}\right)
tm(x)=j=1∑JbjmI(x∈Rjm)
其中,
b
j
m
b_{j m}
bjm 是样本X在区域R
j
m
_{j m}
jm 的预测值。
使用线性搜索计算学习率,最小化损失函数
F
m
(
x
⃗
)
=
F
m
−
1
(
x
⃗
)
+
γ
m
⋅
t
m
(
x
⃗
i
)
γ
m
=
arg
min
γ
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
⃗
i
)
+
γ
⋅
t
m
(
x
⃗
i
)
)
\begin{array}{c} F_{m}(\vec{x})=F_{m-1}(\vec{x})+\gamma_{m} \cdot t_{m}\left(\vec{x}_{i}\right) \\ \gamma_{m}=\underset{\gamma}{\arg \min } \sum_{i=1}^{n} L\left(y_{i}, F_{m-1}\left(\vec{x}_{i}\right)+\gamma \cdot t_{m}\left(\vec{x}_{i}\right)\right) \end{array}
Fm(x)=Fm−1(x)+γm⋅tm(xi)γm=γargmin∑i=1nL(yi,Fm−1(xi)+γ⋅tm(xi))
进一步: 对树的每个区域分别计算步长, 从而系数b
j
m
_{\mathrm{jm}}
jm 被合并到步长中,从而:
F
m
(
x
⃗
)
=
F
m
−
1
(
x
⃗
)
+
∑
j
=
1
J
γ
j
m
I
(
x
⃗
∈
R
j
m
)
γ
j
m
=
arg
min
γ
∑
x
⃗
i
∈
R
j
m
L
(
y
i
,
F
m
−
1
(
x
⃗
i
)
+
γ
⋅
t
m
(
x
⃗
i
)
)
\begin{array}{c} F_{m}(\vec{x})=F_{m-1}(\vec{x})+\sum_{j=1}^{J} \gamma_{j m} I\left(\vec{x} \in R_{j m}\right) \\ \gamma_{j m}=\underset{\gamma}{\arg \min } \sum_{\vec{x}_{i} \in R_{j m}} L\left(y_{i}, F_{m-1}\left(\vec{x}_{i}\right)+\gamma \cdot t_{m}\left(\vec{x}_{i}\right)\right) \end{array}
Fm(x)=Fm−1(x)+∑j=1JγjmI(x∈Rjm)γjm=γargmin∑xi∈RjmL(yi,Fm−1(xi)+γ⋅tm(xi))
xgboost
- XGBoost是使用梯度提升框杂实现的高效、灵活、可移植的机器学习库,全称是eXtreme Gradient Boosting,是GBDT(GBM)的一个C++实现。它将树的生成并行完成,从而提高学习速度。
- 一般地说,XGBoost的速度和性能优于sklearn.ensemble.GradientBoostingClassifier类。
- XGBoost的作者为华盛顿大学陈天奇,并封装了Python接口,随着在机器学习竞赛中的优异表现,其他学者封装完成了R/Julia等接口。
考虑使用二阶导信息
目标函数:
J
(
f
t
)
=
∑
i
=
1
n
L
(
y
i
,
y
^
i
(
t
−
1
)
+
f
t
(
x
i
)
)
+
Ω
(
f
t
)
+
C
J\left(f_{t}\right)=\sum_{i=1}^{n} L\left(y_{i}, \hat{y}_{i}^{(t-1)}+f_{t}\left(x_{i}\right)\right)+\Omega\left(f_{t}\right)+C
J(ft)=∑i=1nL(yi,y^i(t−1)+ft(xi))+Ω(ft)+C
根据Taylor展式:
f
(
x
+
Δ
x
)
≈
f
(
x
)
+
f
′
(
x
)
Δ
x
+
1
2
f
′
′
(
x
)
Δ
x
2
f(x+\Delta x) \approx f(x)+f^{\prime}(x) \Delta x+\frac{1}{2} f^{\prime \prime}(x) \Delta x^{2}
f(x+Δx)≈f(x)+f′(x)Δx+21f′′(x)Δx2
令,
g
i
=
def
=
∂
L
(
y
i
,
y
^
i
(
t
−
1
)
)
∂
y
^
i
(
t
−
1
)
,
h
i
=
=
∂
2
L
(
y
i
,
y
^
i
(
t
−
1
)
)
∂
y
^
i
(
t
)
g_{i} \stackrel{\text { def }}{=}=\frac{\partial L\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)}{\partial \hat{y}_{i}^{(t-1)}}, \quad h_{i}==\frac{\partial^{2} L\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)}{\partial \hat{y}_{i}^{(t)}}
gi= def =∂y^i(t−1)∂L(yi,y^i(t−1)),hi==∂y^i(t)∂2L(yi,y^i(t−1))
得:
J
(
f
t
)
≈
∑
i
=
1
n
[
L
(
y
i
,
y
^
i
(
t
−
1
)
)
+
g
i
f
t
(
x
i
)
+
1
2
h
i
f
t
2
(
x
i
)
]
+
Ω
(
f
t
)
+
C
J\left(f_{t}\right) \approx \sum_{i=1}^{n}\left[L\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)+g_{i} f_{t}\left(x_{i}\right)+\frac{1}{2} h_{i} f_{t}^{2}\left(x_{i}\right)\right]+\Omega\left(f_{t}\right)+C
J(ft)≈∑i=1n[L(yi,y^i(t−1))+gift(xi)+21hift2(xi)]+Ω(ft)+C
目标函数继续化简:
对
F
:
J
(
f
t
)
=
∑
j
=
1
T
[
(
∑
i
∈
I
j
g
i
)
w
j
+
1
2
(
∑
i
∈
I
j
h
i
+
λ
)
w
j
2
]
+
γ
⋅
T
+
C
\text { 对 } \mathcal{F}: J\left(f_{t}\right)=\sum_{j=1}^{T}\left[\left(\sum_{i \in I_{j}} g_{i}\right) w_{j}+\frac{1}{2}\left(\sum_{i \in I_{j}} h_{i}+\lambda\right) w_{j}^{2}\right]+\gamma \cdot T+C
对 F:J(ft)=j=1∑T⎣⎡⎝⎛i∈Ij∑gi⎠⎞wj+21⎝⎛i∈Ij∑hi+λ⎠⎞wj2⎦⎤+γ⋅T+C
文义
G
j
=
=
∑
i
∈
I
j
g
i
,
H
j
=
=
∑
i
∈
I
j
h
i
G_{j}==\sum_{i \in I_{j}} g_{i}, H_{j}==\sum_{i \in I_{j}} h_{i}
Gj==∑i∈Ijgi,Hj==∑i∈Ijhi
人
而
‾
,
J
(
f
t
)
=
∑
j
=
1
T
[
G
j
w
j
+
1
2
(
H
j
+
λ
)
w
j
2
]
+
γ
⋅
T
+
C
\text { 人 } \overline{\text { 而 }}, J\left(f_{t}\right)=\sum_{j=1}^{T}\left[G_{j} w_{j}+\frac{1}{2}\left(H_{j}+\lambda\right) w_{j}^{2}\right]+\gamma \cdot T+C
人 而 ,J(ft)=j=1∑T[Gjwj+21(Hj+λ)wj2]+γ⋅T+C
对W求偏导,得
∂
J
(
f
t
)
∂
w
j
=
G
j
+
(
H
j
+
λ
)
w
j
=
0
⇒
w
j
=
−
G
j
H
j
+
λ
\frac{\partial J\left(f_{t}\right)}{\partial w_{j}}=G_{j}+\left(H_{j}+\lambda\right) w_{j}=0 \Rightarrow w_{j}=-\frac{G_{j}}{H_{j}+\lambda}
∂wj∂J(ft)=Gj+(Hj+λ)wj=0⇒wj=−Hj+λGj
回代入目标函数数, 得
J
(
f
t
)
=
−
1
2
∑
j
=
1
T
G
j
2
H
j
+
λ
+
γ
⋅
T
J\left(f_{t}\right)=-\frac{1}{2} \sum_{j=1}^{T} \frac{G_{j}^{2}}{H_{j}+\lambda}+\gamma \cdot T
J(ft)=−21∑j=1THj+λGj2+γ⋅T
XGBoost小结
相对于传统的GBDT,XGBoost使用了二阶信息,可以更快的在训练集上收敛。由于“随机森林族”本身具备过拟合的优势,因此XGBoost仍然一定程度的具有该特性。XGBoost的实现中使用了并行/多核计算,因此训练速度快;同时它的原生语言为C/C++,这是它速度快的实践原因。
adaboost
设训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
…
(
x
N
,
y
N
)
}
\mathrm{T}=\left\{\left(\mathrm{x}_{1}, \mathrm{y}_{1}\right),\left(\mathrm{x}_{2}, \mathrm{y}_{2}\right) \ldots\left(\mathrm{x}_{\mathrm{N}}, \mathrm{y}_{\mathrm{N}}\right)\right\}
T={(x1,y1),(x2,y2)…(xN,yN)}
初始化训练数据的权值分布
D
1
=
(
w
11
,
w
12
⋯
w
1
i
⋯
,
w
1
N
)
,
w
1
i
=
1
N
,
i
=
1
,
2
,
⋯
,
N
D_{1}=\left(w_{11}, w_{12} \cdots w_{1 i} \cdots, w_{1 N}\right), w_{1 i}=\frac{1}{N}, i=1,2, \cdots, N
D1=(w11,w12⋯w1i⋯,w1N),w1i=N1,i=1,2,⋯,N
使用具有权值分布Dm的训练数据集学习,得到基本分类器
G
m
(
x
)
:
χ
→
{
−
1
,
+
1
}
G_{m}(x): \chi \rightarrow\{-1,+1\}
Gm(x):χ→{−1,+1}
计算Gm(x)在训练数据集上的分类误差率
e
m
=
P
(
G
m
(
x
i
)
≠
y
i
)
=
∑
i
=
1
N
w
m
i
I
(
G
m
(
x
i
)
≠
y
i
)
e_{m}=P\left(G_{m}\left(x_{i}\right) \neq y_{i}\right)=\sum_{i=1}^{N} w_{m i} I\left(G_{m}\left(x_{i}\right) \neq y_{i}\right)
em=P(Gm(xi)=yi)=i=1∑NwmiI(Gm(xi)=yi)
计算Gm(x)的系数
α
m
=
1
2
log
1
−
e
m
e
m
\alpha_{m}=\frac{1}{2} \log \frac{1-e_{m}}{e_{m}}
αm=21logem1−em
更新训练数据集的权值分布
D
m
+
1
=
(
w
m
+
1
,
1
,
w
m
+
1
,
2
⋯
w
m
+
1
,
i
⋯
,
w
m
+
1
,
N
)
w
m
+
1
,
i
=
w
m
i
Z
m
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
,
i
=
1
,
2
,
⋯
,
N
\begin{array}{l} D_{m+1}=\left(w_{m+1,1}, w_{m+1,2} \cdots w_{m+1, i} \cdots, w_{m+1, N}\right) \\ w_{m+1, i}=\frac{w_{m i}}{Z_{m}} \exp \left(-\alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right), i=1,2, \cdots, N \end{array}
Dm+1=(wm+1,1,wm+1,2⋯wm+1,i⋯,wm+1,N)wm+1,i=Zmwmiexp(−αmyiGm(xi)),i=1,2,⋯,N
这里,Zm是规范化因子
Z
m
=
∑
i
=
1
N
w
m
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
Z_{m}=\sum_{i=1}^{N} w_{m i} \exp \left(-\alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right)
Zm=i=1∑Nwmiexp(−αmyiGm(xi))
它的目的仅仅是使D
m
+
1
_{\mathrm{m}+1}
m+1 成为一个概率分布
w
m
+
1
,
i
=
w
m
i
Z
m
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
⇒
Z
m
w
m
+
1
,
i
=
w
m
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
⇒
Z
1
w
2
,
i
=
w
1
i
exp
(
−
α
1
y
i
G
1
(
x
i
)
)
w_{m+1, i}=\frac{w_{m i}}{Z_{m}} \exp \left(-\alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right) \Rightarrow Z_{m} w_{m+1, i}=w_{m i} \exp \left(-\alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right) \Rightarrow Z_{1} w_{2, i}=w_{1 i} \exp \left(-\alpha_{1} y_{i} G_{1}\left(x_{i}\right)\right)
wm+1,i=Zmwmiexp(−αmyiGm(xi))⇒Zmwm+1,i=wmiexp(−αmyiGm(xi))⇒Z1w2,i=w1iexp(−α1yiG1(xi))
构建基本分类器的线性组含
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
)
f(x)=\sum_{m=1}^{M} \alpha_{m} G_{m}(x)
f(x)=m=1∑MαmGm(x)
得到最终分类器
G
(
x
)
=
sign
(
f
(
x
)
)
=
sign
(
∑
m
=
1
M
α
m
G
m
(
x
)
)
G(x)=\operatorname{sign}(f(x))=\operatorname{sign}\left(\sum_{m=1}^{M} \alpha_{m} G_{m}(x)\right)
G(x)=sign(f(x))=sign(m=1∑MαmGm(x))
AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的分类学习方法。