算法简介
Ababoost 算法是boost算法族之中的一个。boost 算法族是这样一种决策算法,它有多个子学习器组成,学习器之间的学习具有强依赖性,必须串行生成。Ababoost 是boost种最著名的一种。它使用的评价方式是指数损失函数。
两个思想
- 将弱的学习器进行线性组合得到一个强的学习器的过程。
f ( X ) = ∑ t = 1 N β ϕ t ( x ) f(X)=\sum_{t=1}^{N} \beta \phi_{t}(x) f(X)=t=1∑Nβϕt(x) - 将前面学习器学习错误的样本,在后面的学习器中要收到更多的关注
两个问题
在问题的实现和推到过程中,必然会有两个问题需要解决。
- 如何学习获得学习器 β ϕ t ( x ) \beta \phi_{t}(x) βϕt(x)
- 用什么方法使得学习错误的样本得到关注
算法流程
算法推倒
Ababoost 算法采用指数损失函数
L
m
(
ϕ
)
=
∑
i
=
1
N
exp
[
−
y
i
f
m
(
x
i
)
]
L_{m}(\phi)=\sum_{i=1}^{N} \exp [-y_i f_m(\mathbf{x}_i)]
Lm(ϕ)=∑i=1Nexp[−yifm(xi)], 算法实现的目的就是使得损失函数最小。
f
m
(
x
i
)
=
f
m
−
1
(
x
i
)
+
β
ϕ
(
x
i
)
f_m(\mathbf{x}_i)=f_{m-1}\left(\mathbf{x}_{i}\right)+\beta \phi\left(\mathbf{x}_{i})\right.
fm(xi)=fm−1(xi)+βϕ(xi)
L
m
(
ϕ
)
=
∑
i
=
1
N
exp
[
−
y
~
i
(
f
m
−
1
(
x
i
)
+
β
ϕ
(
x
i
)
)
]
=
∑
i
=
1
N
w
i
,
m
exp
(
−
β
y
~
i
ϕ
(
x
i
)
)
L_{m}(\phi)=\sum_{i=1}^{N} \exp \left[-\tilde{y}_{i}\left(f_{m-1}\left(\mathbf{x}_{i}\right)+\beta \phi\left(\mathbf{x}_{i}\right)\right)\right]=\sum_{i=1}^{N} w_{i, m} \exp \left(-\beta \tilde{y}_{i} \phi\left(\mathbf{x}_{i}\right)\right)
Lm(ϕ)=i=1∑Nexp[−y~i(fm−1(xi)+βϕ(xi))]=i=1∑Nwi,mexp(−βy~iϕ(xi))
这里
w
i
,
m
≜
exp
(
−
y
~
i
f
m
−
1
(
x
i
)
)
w_{i, m} \triangleq \exp \left(-\tilde{y}_{i} f_{m-1}\left(\mathbf{x}_{i}\right)\right)
wi,m≜exp(−y~ifm−1(xi)) 表示对于数据的权重,也就是说在新加入的学习器
ϕ
(
x
i
)
\phi(\mathbf{x}_i)
ϕ(xi) 对于顺势函数权重的调整。
由于
ϕ
(
x
)
,
y
~
i
∈
{
−
1
,
+
1
}
\phi(\mathbf{x}),\tilde{y}_{i} \in\{-1,+1\}
ϕ(x),y~i∈{−1,+1},他们只有两个取 ,所以:
L
m
=
e
−
β
∑
y
~
i
=
ϕ
(
x
i
)
w
i
,
m
+
e
β
∑
y
~
i
≠
ϕ
(
x
i
)
w
i
,
m
=
(
e
β
−
e
−
β
)
∑
i
=
1
N
w
i
,
m
I
(
y
~
i
≠
ϕ
(
x
i
)
)
+
e
−
β
∑
i
=
1
N
w
i
,
m
\begin{aligned} L_{m} &=e^{-\beta} \sum_{\tilde{y}_{i}=\phi\left(\mathbf{x}_{i}\right)} w_{i, m}+e^{\beta} \sum_{\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)} w_{i, m} \\ &=\left(e^{\beta}-e^{-\beta}\right) \sum_{i=1}^{N} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)\right)+e^{-\beta} \sum_{i=1}^{N} w_{i, m} \end{aligned}
Lm=e−βy~i=ϕ(xi)∑wi,m+eβy~i=ϕ(xi)∑wi,m=(eβ−e−β)i=1∑Nwi,mI(y~i=ϕ(xi))+e−βi=1∑Nwi,m
理解上面的变化需要注意个问题:
∑
i
=
1
N
w
i
,
m
=
∑
y
~
i
=
ϕ
(
x
i
)
w
i
,
m
+
∑
y
~
i
≠
ϕ
(
x
i
)
w
i
,
m
=
∑
i
=
1
N
w
i
,
m
I
(
y
~
i
≠
ϕ
(
x
i
)
)
+
∑
i
=
1
N
w
i
,
m
I
(
y
~
i
=
ϕ
(
x
i
)
)
\begin{aligned} \sum_{i=1}^{N}w_{i,m} &= \sum_{\tilde{y}_{i}=\phi\left(\mathbf{x}_{i}\right)}w_{i,m} + \sum_{\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)}w_{i,m} \\ &=\sum_{i=1}^{N} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)\right)+\sum_{i=1}^{N} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} = \phi\left(\mathbf{x}_{i}\right)\right) \end{aligned}
i=1∑Nwi,m=y~i=ϕ(xi)∑wi,m+y~i=ϕ(xi)∑wi,m=i=1∑Nwi,mI(y~i=ϕ(xi))+i=1∑Nwi,mI(y~i=ϕ(xi))
在
β
>
0
\beta > 0
β>0 的假设下(
e
β
−
e
−
β
e^{\beta}-e^{-\beta}
eβ−e−β >0),
w
i
.
j
w_{i.j}
wi.j 在生成
ϕ
(
x
i
)
\phi(\mathbf{x}_i)
ϕ(xi) 的时候是已知的。则:
ϕ
m
=
argmin
ϕ
w
i
,
m
I
(
y
~
i
≠
ϕ
(
x
i
)
)
\phi_{m}=\underset{\phi}{\operatorname{argmin}} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)\right)
ϕm=ϕargminwi,mI(y~i=ϕ(xi))
也就是说第m个学习器应该在
w
i
,
m
w_{i,m}
wi,m的权值下尽可能的小。
关于学习器的系数
β
\beta
β,可通过对
L
m
L_m
Lm对它 求导并令其等于0获得。
β
m
=
1
2
log
1
−
err
m
err
m
\beta_{m}=\frac{1}{2} \log \frac{1-\operatorname{err}_{m}}{\operatorname{err}_{m}}
βm=21logerrm1−errm
其中
err
m
=
∑
i
=
1
N
w
i
,
m
I
(
y
~
i
≠
ϕ
m
(
x
i
)
)
∑
i
=
1
N
w
i
,
m
\operatorname{err}_{m}=\frac{\sum_{i=1}^{N} w_{i,m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi_{m}\left(\mathbf{x}_{i}\right)\right)}{\sum_{i=1}^{N} w_{i, m}}
errm=∑i=1Nwi,m∑i=1Nwi,mI(y~i=ϕm(xi))
对于权值更新。
w
i
,
m
+
1
=
w
i
,
m
e
−
β
m
y
~
i
ϕ
m
(
x
i
)
=
w
i
,
m
e
β
m
(
2
I
(
y
~
i
≠
ϕ
m
(
x
i
)
)
−
1
)
=
w
i
,
m
e
2
β
m
I
(
y
~
i
≠
ϕ
m
(
x
i
)
)
e
−
β
m
\begin{aligned} w_{i, m+1} &=w_{i, m} e^{-\beta_{m} \tilde{y}_{i} \phi_{m}\left(\mathbf{x}_{i}\right)} \\ &=w_{i, m} e^{\beta_{m}\left(2 \mathrm{I}\left(\tilde{y}_{i} \neq \phi_{m}\left(\mathbf{x}_{i}\right)\right)-1\right)} \\ &=w_{i, m} e^{2 \beta_{m} \mathrm{I}\left(\tilde{y}_{i} \neq \phi_{m}\left(\mathbf{x}_{i}\right)\right)} e^{-\beta_{m}} \end{aligned}
wi,m+1=wi,me−βmy~iϕm(xi)=wi,meβm(2I(y~i=ϕm(xi))−1)=wi,me2βmI(y~i=ϕm(xi))e−βm
举例论证
《统计学方法》中的例子, 训练数据如下表
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
y | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
用上述数据训练一个形如下面的弱学习器。训练的参数包括两个数
- 符号(大于号还是小于号)
- 阈值v 的大小
G ( x ) = { 1 , x > / < v − 1 , o t h e r s G_{}(x)=\left\{\begin{array}{ll}{1,} & {x>/<v } \\ {-1,} & {others}\end{array}\right. G(x)={1,−1,x>/<vothers
下面就是训练的记录
第一次训练,初始化权值:
[0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1]
寻找第一个最优分类器
v=0.50, mis=[False True True False False False True True True False],loss=0.5000
v=0.50, mis=[ True False False True True True False False False True],loss=0.5000
v=1.50, mis=[False False True False False False True True True False],loss=0.4000
v=1.50, mis=[ True True False True True True False False False True],loss=0.6000
v=2.50, mis=[False False False False False False True True True False],loss=0.3000
v=2.50, mis=[ True True True True True True False False False True],loss=0.7000
v=3.50, mis=[False False False True False False True True True False],loss=0.4000
v=3.50, mis=[ True True True False True True False False False True],loss=0.6000
v=4.50, mis=[False False False True True False True True True False],loss=0.5000
v=4.50, mis=[ True True True False False True False False False True],loss=0.5000
v=5.50, mis=[False False False True True True True True True False],loss=0.6000
v=5.50, mis=[ True True True False False False False False False True],loss=0.4000
v=6.50, mis=[False False False True True True False True True False],loss=0.5000
v=6.50, mis=[ True True True False False False True False False True],loss=0.5000
v=7.50, mis=[False False False True True True False False True False],loss=0.4000
v=7.50, mis=[ True True True False False False True True False True],loss=0.6000
v=8.50, mis=[False False False True True True False False False False],loss=0.3000
v=8.50, mis=[ True True True False False False True True True True],loss=0.7000
v=9.50, mis=[False False False True True True False False False True],loss=0.4000
v=9.50, mis=[ True True True False False False True True True False],loss=0.6000
0.30000000000000004
threshold=2.5,direction=0,alpha=0.42365
第一个搜索完成,下面进行权值更新
[0.07142857 0.07142857 0.07142857 0.07142857 0.07142857 0.07142857
0.16666667 0.16666667 0.16666667 0.07142857]
搜索第二个最优分类器
v=0.50, mis=[False True True False False False True True True False],loss=0.6429
v=0.50, mis=[ True False False True True True False False False True],loss=0.3571
v=1.50, mis=[False False True False False False True True True False],loss=0.5714
v=1.50, mis=[ True True False True True True False False False True],loss=0.4286
v=2.50, mis=[False False False False False False True True True False],loss=0.5000
v=2.50, mis=[ True True True True True True False False False True],loss=0.5000
v=3.50, mis=[False False False True False False True True True False],loss=0.5714
v=3.50, mis=[ True True True False True True False False False True],loss=0.4286
v=4.50, mis=[False False False True True False True True True False],loss=0.6429
v=4.50, mis=[ True True True False False True False False False True],loss=0.3571
v=5.50, mis=[False False False True True True True True True False],loss=0.7143
v=5.50, mis=[ True True True False False False False False False True],loss=0.2857
v=6.50, mis=[False False False True True True False True True False],loss=0.5476
v=6.50, mis=[ True True True False False False True False False True],loss=0.4524
v=7.50, mis=[False False False True True True False False True False],loss=0.3810
v=7.50, mis=[ True True True False False False True True False True],loss=0.6190
v=8.50, mis=[False False False True True True False False False False],loss=0.2143
v=8.50, mis=[ True True True False False False True True True True],loss=0.7857
v=9.50, mis=[False False False True True True False False False True],loss=0.2857
v=9.50, mis=[ True True True False False False True True True False],loss=0.7143
0.21428571428571427
threshold=8.5,direction=0,alpha=0.64964
[0.04545455 0.04545455 0.04545455 0.16666667 0.16666667 0.16666667
0.10606061 0.10606061 0.10606061 0.04545455]
v=0.50, mis=[False True True False False False True True True False],loss=0.4091
v=0.50, mis=[ True False False True True True False False False True],loss=0.5909
v=1.50, mis=[False False True False False False True True True False],loss=0.3636
v=1.50, mis=[ True True False True True True False False False True],loss=0.6364
v=2.50, mis=[False False False False False False True True True False],loss=0.3182
v=2.50, mis=[ True True True True True True False False False True],loss=0.6818
v=3.50, mis=[False False False True False False True True True False],loss=0.4848
v=3.50, mis=[ True True True False True True False False False True],loss=0.5152
v=4.50, mis=[False False False True True False True True True False],loss=0.6515
v=4.50, mis=[ True True True False False True False False False True],loss=0.3485
v=5.50, mis=[False False False True True True True True True False],loss=0.8182
v=5.50, mis=[ True True True False False False False False False True],loss=0.1818
v=6.50, mis=[False False False True True True False True True False],loss=0.7121
v=6.50, mis=[ True True True False False False True False False True],loss=0.2879
v=7.50, mis=[False False False True True True False False True False],loss=0.6061
v=7.50, mis=[ True True True False False False True True False True],loss=0.3939
v=8.50, mis=[False False False True True True False False False False],loss=0.5000
v=8.50, mis=[ True True True False False False True True True True],loss=0.5000
v=9.50, mis=[False False False True True True False False False True],loss=0.5455
v=9.50, mis=[ True True True False False False True True True False],loss=0.4545
0.18181818181818185
threshold=5.5,direction=1,alpha=0.75204
至此训练完成,预测结果如下
[ 1. 1. 1. -1. -1. -1. 1. 1. 1. -1.]
由此可以看出训练出了三个子分类器。并且最后的预测结果完全和标记相同
G 1 ( x ) = { 1 , x < 2.5 − 1 , o t h e r s G 2 ( x ) = { 1 , x < 8.5 − 1 , o t h e r s G 2 ( x ) = { 1 , x > 5.5 − 1 , o t h e r s G_{1}(x)=\left\{\begin{array}{ll}{1,} & {x<2.5 } \\ {-1,} & {others}\end{array}\right.\\ G_{2}(x)=\left\{\begin{array}{ll}{1,} & {x<8.5 } \\ {-1,} & {others}\end{array}\right.\\ G_{2}(x)=\left\{\begin{array}{ll}{1,} & {x>5.5 } \\ {-1,} & {others}\end{array}\right. G1(x)={1,−1,x<2.5othersG2(x)={1,−1,x<8.5othersG2(x)={1,−1,x>5.5others