机器学习—提升算法
本文将记录《统计学习方法》中有关提升学习Adaboost的内容。
Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
提升算法需要解决的问题:
1)如何计算弱分类器学习误差率e?
2) 如何得到弱学习器权重系数α?
3)如何更新样本权重D?
4) 使用何种结合策略结合得到强学习算法?
Adaboost分类算法
输入:数据集
T
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),...,(x_N,y_N)\}
T={(x1,y1),...,(xN,yN)}
输出:最终的强分类器
- 初始化了全部样本的权重:
W 0 = { w 1 0 , . . . w N 0 } ,    w i 0 = 1 N W^0=\{w_1^0,...w_N^0\},\;w_i^0=\frac{1}{N} W0={w10,...wN0},wi0=N1 - 对于m=1,2…,M次迭代的弱分类器:
- 对上次的样本权重构建弱分类器: G m G_m Gm
- 计算在弱分类器上的分类误差:
E m = ∑ i N w i m I ( G m ( x i ̸ = y i ) ) E_m=\sum_i^Nw^m_iI(G_m(x_i\not=y_i)) Em=i∑NwimI(Gm(xi̸=yi)) - 计算该弱分类器的结合权重:
α m = 1 2 l o g E m 1 − E m \alpha_m=\frac{1}{2}log{E_m \over1-E_m } αm=21log1−EmEm - 调整样本权重:
W m + 1 = { w i m + 1 , . . . , w N m + 1 } w i m + 1 = w i m Z e − α i y i G m ( x i ) Z = ∑ i N w i m + 1 W^{m+1} = \{w^{m+1}_i,...,w^{m+1}_N\}\\ w^{m+1}_i= {w^m_i\over Z }e^{-\alpha_iy_iG_m(x_i)}\\ Z=\sum_i^N w^{m+1}_i Wm+1={wim+1,...,wNm+1}wim+1=Zwime−αiyiGm(xi)Z=i∑Nwim+1
3.构建强分类器的集合策略采用的加权:
f
(
x
)
=
∑
m
M
α
m
G
m
G
(
x
)
=
s
i
g
n
(
f
(
x
)
)
=
s
i
g
n
(
∑
m
M
α
m
G
m
)
f(x)=\sum_m^M\alpha_mG_m\\ G(x)=sign(f(x))=sign(\sum_m^M\alpha_mG_m)
f(x)=m∑MαmGmG(x)=sign(f(x))=sign(m∑MαmGm)
Adaboost回归算法
输入:
T
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),...,(x_N,y_N)\}
T={(x1,y1),...,(xN,yN)}
输出:最终的强回归算法
-
初始化了全部样本的权重:
W 0 = { w 1 0 , . . . w N 0 } ,    w i 0 = 1 N W^0=\{w_1^0,...w_N^0\},\;w_i^0=\frac{1}{N} W0={w10,...wN0},wi0=N1 -
对于m=1,2…M的弱回归算法:
-
构建弱回归算法 G m G_m Gm
-
计算在该弱学习算法上的最大误差,得到每个样本的相对误差:
E m = max ∣ y i − G m ( x i ) ∣ e i m = ∣ y i − G m ( x i ) ∣ E m E_m=\max{|y_i-G_m(x_i)|}\\ e^m_i={|y_i-G_m(x_i)|\over E_m} Em=max∣yi−Gm(xi)∣eim=Em∣yi−Gm(xi)∣如果采用平方误差, e i m = ( y i − G m ( x i ) ) 2 E m 2 e^m_i={(y_i-G_m(x_i))^2\over E^2_m} eim=Em2(yi−Gm(xi))2;
如果采用指数误差 e i m = 1 − e x p ( − y i + G m ( x i ) E m ) e^m_i=1-exp({-y_i+G_m(x_i)\over E_m}) eim=1−exp(Em−yi+Gm(xi))得到该弱回归算法的误差率:
e m = ∑ i N w i m e i m e^m=\sum_i^Nw^m_ie^m_i em=i∑Nwimeim -
计算该弱回归算法的结合权重:
α m = e m 1 − e m \alpha_m={e^m\over 1-e^m} αm=1−emem -
更新样本权重:
W m + 1 = { w i m + 1 , . . . , w N m + 1 } w i m + 1 = w i m Z α m 1 − e i m Z = ∑ i N w i m + 1 W^{m+1} = \{w^{m+1}_i,...,w^{m+1}_N\}\\ w^{m+1}_i= {w^m_i\over Z }\alpha^{1-e^m_i}_m\\ Z=\sum_i^N w^{m+1}_i Wm+1={wim+1,...,wNm+1}wim+1=Zwimαm1−eimZ=i∑Nwim+1
-
-
弱回归算法结合策略:
f ( x ) = ∑ k ( l n 1 a k ) g ( x ) f(x)=\sum_k(ln\frac{1}{a_k})g(x) f(x)=k∑(lnak1)g(x)
前向分步算法
前向分布算法是一个加法算法,将前面的弱学习算法通过对之前的算法一步一步的求和,强算法由弱算法加权得到,利用前一个弱学习来更新后一个弱学习的权重。
那么对于第K-1轮强学习算法:
f
k
−
1
=
∑
i
k
−
1
α
i
G
i
(
x
)
f_{k-1}=\sum^{k-1}_i\alpha_iG_i(x)
fk−1=i∑k−1αiGi(x)
对于第K轮强学习算法
f
k
=
∑
i
k
α
i
G
i
(
x
)
f_{k}=\sum^{k}_i\alpha_iG_i(x)
fk=i∑kαiGi(x)
对比可知:
f
k
−
1
=
f
k
−
1
(
x
)
+
∑
i
k
−
1
α
i
G
i
(
x
)
f_{k-1}=f_{k-1}(x)+\sum^{k-1}_i\alpha_iG_i(x)
fk−1=fk−1(x)+i∑k−1αiGi(x)
定义损失函数:
∑
L
(
y
i
,
f
k
−
1
(
x
)
+
α
G
(
x
;
γ
)
\sum L(y_i,f_{k-1}(x)+\alpha G(x;\gamma)
∑L(yi,fk−1(x)+αG(x;γ)
最小化损失函数:
(
α
∗
,
γ
∗
)
=
arg
min
∑
L
(
y
i
,
f
m
−
1
(
x
)
+
α
G
(
x
,
γ
)
)
(\alpha^*,\gamma^*)=\arg \min \sum L(y_i,f_{m-1}(x)+\alpha G(x,\gamma))
(α∗,γ∗)=argmin∑L(yi,fm−1(x)+αG(x,γ))
更新强学习算法:
f
m
(
x
)
=
f
m
−
1
(
x
)
+
α
m
∗
G
(
x
,
γ
∗
)
f_m(x)=f_{m-1}(x)+\alpha_m^*G(x,\gamma^*)
fm(x)=fm−1(x)+αm∗G(x,γ∗)
更多推荐



所有评论(0)