Adaboost
AdaBoost(Adaptive Boosting自适应增强):前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
Adaboost 迭代算法:
- 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
Boosting
GBDT
给定样本集: ( x 1 , y 1 ) … ( x n , y n ) \left(x_{1}, y_{1}\right) \ldots\left(x_{n}, y_{n}\right) (x1,y1)…(xn,yn);
损失函数: L ( y , f ( x ) ) L(y, f(x)) L(y,f(x));
树模型: T ( x ; Θ ) T(x ; \Theta) T(x;Θ) ;
目的:使用多个弱分类器构建出一个强分类器,来预测样本。
第一步:初始化 f ( x ) f(x) f(x),先找到最合适的参数 Θ 1 \Theta_{1} Θ1, 使得 ∑ i = 1 n L ( y i , T ( x i ; Θ 1 ) ) \sum_{i=1}^{n} L\left(y_{i}, T\left(x_{i} ; \Theta_{1}\right)\right) ∑i=1nL(yi,T(xi;Θ1))最小,模型初始化, f ( x ) = T ( x ; Θ 1 ) f(x)=T\left(x ; \Theta_{1}\right) f(x)=T(x;Θ1);
第二步:使用负梯度来代替残差,(其实有些人会说,GBDT本质上拟合的就是负梯度,而不是残差,只是均方误差比较凑巧,负梯度刚好等于残差)
(1)当在回归中使用均方误差
L
(
y
,
f
(
x
)
)
=
1
2
(
y
−
f
(
x
)
)
2
L(y, f(\boldsymbol{x}))=\frac{1}{2}(y-f(\boldsymbol{x}))^{2}
L(y,f(x))=21(y−f(x))2作为损失函数时,负梯度就是残差
∂
J
∂
f
(
x
i
)
=
∂
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
∂
f
(
x
i
)
=
∂
L
(
y
i
,
f
(
x
i
)
)
∂
f
(
x
i
)
=
f
(
x
i
)
−
y
i
\frac{\partial J}{\partial f\left(\boldsymbol{x}_{i}\right)}=\frac{\partial \sum_{i=1}^{N} L\left(y_{i}, f\left(\boldsymbol{x}_{i}\right)\right)}{\partial f\left(\boldsymbol{x}_{i}\right)}=\frac{\partial L\left(y_{i}, f\left(\boldsymbol{x}_{i}\right)\right)}{\partial f\left(\boldsymbol{x}_{i}\right)}=f\left(\boldsymbol{x}_{i}\right)-y_{i}
∂f(xi)∂J=∂f(xi)∂∑i=1NL(yi,f(xi))=∂f(xi)∂L(yi,f(xi))=f(xi)−yi
可见,负梯度就是残差
y
i
−
f
(
x
i
)
=
−
∂
J
∂
f
(
x
i
)
y_{i}-f\left(\boldsymbol{x}_{i}\right)=-\frac{\partial J}{\partial f\left(\boldsymbol{x}_{i}\right)}
yi−f(xi)=−∂f(xi)∂J
(2)而使用别的损失函数时,
r
m
,
i
=
−
[
∂
L
(
y
i
,
f
(
x
i
)
)
∂
f
(
x
)
]
f
(
x
)
=
f
m
−
1
(
x
)
,
i
=
1
,
2
,
⋯
,
N
r_{m, i}=-\left[\frac{\partial L\left(y_{i}, f\left(\boldsymbol{x}_{i}\right)\right)}{\partial f(\boldsymbol{x})}\right]_{f(\boldsymbol{x})=f_{m-1}(\boldsymbol{x})}, \quad i=1,2, \cdots, N
rm,i=−[∂f(x)∂L(yi,f(xi))]f(x)=fm−1(x),i=1,2,⋯,N
第三步:
f
m
(
x
)
=
f
m
−
1
(
x
)
−
ρ
m
[
∂
J
(
f
)
∂
f
(
x
)
]
f
(
x
)
=
f
m
−
1
(
x
)
=
f
m
−
1
(
x
)
+
ρ
m
(
−
[
∂
J
(
f
)
∂
F
(
x
)
]
f
(
x
)
=
f
m
−
1
(
x
)
)
\begin{aligned} f_{m}(\boldsymbol{x}) &=f_{m-1}(\boldsymbol{x})-\rho_{m}\left[\frac{\partial J(f)}{\partial f(\boldsymbol{x})}\right]_{f(\boldsymbol{x})=f_{m-1}(\boldsymbol{x})} \\ &=f_{m-1}(\boldsymbol{x})+\rho_{m}\left(-\left[\frac{\partial J(f)}{\partial F(\boldsymbol{x})}\right]_{f(\boldsymbol{x})=f_{m-1}(\boldsymbol{x})}\right) \end{aligned}
fm(x)=fm−1(x)−ρm[∂f(x)∂J(f)]f(x)=fm−1(x)=fm−1(x)+ρm(−[∂F(x)∂J(f)]f(x)=fm−1(x))
最终的模型是由前
m
−
1
m-1
m−1个弱分类器,以及最后一个分类器 集合而成。