- 什么是Adaboost?
AdaBoost算法: 通过迭代弱分类器而产生最终的强分类器的算法,可以理解为在弱分类器之上增加了权重配置,使误差率小的分类器拥有更高的权重。
我们已经学习过
决策树
这种分类器,并且知道可以通过随机森林
的方式完成样本加权、分类器加权,从而使得由弱分类器
得到强分类器
。Adaboost
就是分类器加权的一种方式,即多个分类器的集成。提升概念
提升算法
- 预测值: F ( x i ) F(x_i) F(xi),实际值: y i y_i yi,二者差值就是一个残差
- 将所有残差累加:
当 L ( F ) = 1 m ∑ i = 1 m ( F ( x i ) − y i ) 2 当L(F)=\frac{1}{m}\sum_{i=1}^m(F(x_i)-y_i)^2 当L(F)=m1i=1∑m(F(xi)−yi)2
∂ L ∂ F = 2 m ∑ 1 = i m ( F ( x i ) − y i ) \frac{\partial L}{\partial F}=\frac{2}{m}\sum_{1=i}^m(F(x_i)-y_i) ∂F∂L=m21=i∑m(F(xi)−yi)- 实际的损失函数不见得是这个,所以称为
伪残差
参照牛顿法(梯度下降法)可知,使用一阶导绕不过去的 γ \gamma γ学习率。
树 | 1 | 2 | 3 | … | t-1 |
---|---|---|---|---|---|
T | T 1 ( x ) T_1(x) T1(x) | T 2 ( x ) T_2(x) T2(x) | T 3 ( x ) T_3(x) T3(x) | … | T t − 1 ( x ) T_{t-1}(x) Tt−1(x) |
权值 | α 1 \alpha_1 α1 | α 2 \alpha_2 α2 | α 3 \alpha_3 α3 | … | α t − 1 \alpha_{t-1} αt−1 |
计算第i个样本的预测值 y i y_i yi,输入样本 x i x_i xi:
x i ⟶ α 1 T 1 ( x i ) + α 2 T 2 ( x i ) + α 3 T 3 ( x i ) + . . . + α t − 1 T t − 1 ( x i ) = y ^ i x_i \longrightarrow \alpha_1T_1(x_i)+\alpha_2T_2(x_i)+\alpha_3T_3(x_i)+...+\alpha_{t-1}T_{t-1}(x_i)=\hat{y}_i xi⟶α1T1(xi)+α2T2(xi)+α3T3(xi)+...+αt−1Tt−1(xi)=y^i
样本 | 预测值 |
---|---|
x ( 1 ) x^{(1)} x(1) | y ^ t − 1 ( 1 ) \hat{y}_{t-1}^{(1)} y^t−1(1) |
x ( 2 ) x^{(2)} x(2) | y ^ t − 1 ( 2 ) \hat{y}_{t-1}^{(2)} y^t−1(2) |
x ( 3 ) x^{(3)} x(3) | y ^ t − 1 ( 3 ) \hat{y}_{t-1}^{(3)} y^t−1(3) |
… | … |
x ( m ) x^{(m)} x(m) | y ^ t − 1 ( m ) \hat{y}_{t-1}^{(m)} y^t−1(m) |
在已知样本和预测值 T ( t − 1 ) , y ^ ( t − 1 ) T(t-1),\hat{y}_{(t-1)} T(t−1),y^(t−1)的前提下,如何算 T ( x ) 和 α t T(x)和\alpha_t T(x)和αt。考虑使用二阶导信息。
∂
J
∂
f
t
=
∑
i
=
1
n
(
g
i
+
h
i
f
t
(
x
i
)
)
+
∂
Ω
∂
f
t
\frac{\partial J}{\partial f_t}=\sum_{i=1}^n(g_i+h_if_t(x_i))+\frac{\partial \Omega}{\partial f_t}
∂ft∂J=i=1∑n(gi+hift(xi))+∂ft∂Ω
Adaboost
通 常 e m < 0.5 通常e_m < 0.5 通常em<0.5, e m 越 小 , α m 越 大 。 谁 的 误 差 率 越 小 , 谁 的 权 值 就 越 大 。 ( e m = 0.5 → α m = 0 ) e_m越小,\alpha_m越大。谁的误差率越小,谁的权值就越大。(e_m=0.5 \rightarrow \alpha_m=0) em越小,αm越大。谁的误差率越小,谁的权值就越大。(em=0.5→αm=0)
有了 w m + 1 , i w_{m+1, i} wm+1,i,就可以算 G m + 1 G_{m+1} Gm+1,就可以算 w m + 2 w_{m+2} wm+2…
举例
Adaboost误差上限