《机器学习》------Adaboost学习笔记

b站学习视频链接
cdsn参考链接

1、First, What is ensemble learning?

  • 包含许多算法如:决策树、SVM、神经网络;
  • 为了解决特定的机器学习问题,有策略性地生成和组合多个模型
    分类器的Combiner:在这里插入图片描述
  • motivation:提高模型的效果、减少不良模型选择的可能性;
  • Bagging 、Boosting ;
    Bagging 、Boosting 在机器学习中的位置:在这里插入图片描述

2、How to combine the outputs classifiers?

  • 每个分类器的一定是不一样(DT、SVM、NN、KNN);
  • 其他的分类器可以纠正错误
  • 同一种分类器可以根据不同的训练样本得到不同

3、Boosting

一般不会生成太多的分类器,一般最多50个就足够

串行训练,在上一个分类器的结束之后,调整训练样本再训练下一个分类器,相当于每次为之前的分类做弥补或者说纠错,因此,训练样本也是加权的

下面是生成三个分类器的特例:
在这里插入图片描述

在这里插入图片描述
c3把c1、c2有分歧的拿出来学习,相当于处理分歧的

宏观架构:
在这里插入图片描述
训练是串行训练,用的时候是组合起来的。

优点:

  • 分类器按顺序生成;
  • 训练样本是加权的;
  • 对基础分类器要求不是特别高,比瞎猜好一点(正确率>50%)就行;
  • Focuses on most informative data points;
  • 可以生成任意很强的分类器

4、Adaboost

属于Boosting的最具代表性的算法;
细化了权值的获取,通过学习来获得权值的增加和减少,以及变化多少;
在这里插入图片描述
y , h ( x ) ∈ { − 1 , + 1 } y,h(x) \in \{-1,+1\} y,h(x){ 1,+1}

错误率:

ε = 分 类 错 误 的 样 本 数 量 总 的 样 本 数 量 \varepsilon = \frac{分类错误的样本数量}{总的样本数量} ε=

学习算法的权重:

α = 1 2 l n ( 1 − ε ε ) \alpha=\frac{1}{2}ln(\frac{1-\varepsilon}{\varepsilon}) α=21ln(ε1ε)

训练集中的每个样本被赋予了一定的权重,当多个分类器都把某个样本分类错误的时候,该样本的权重会越来越大,理想情况或者说比较好的情况是各样本的权重都偏小。

因此每训练完上一个分类器后需要更新样本权重,在之后的学习中重点学习.

更新样本权重:

D t + 1 ( i ) = D t ( i ) Z t ⋅ ( e − α t P ( y i = h t ( x i ) ) + e α t P ( y i ≠ h t ( x i ) ) ) D_{t+1}(i)=\frac{D_t(i)}{Z_t}\cdot (e^{-\alpha_tP(y_i=h_t(x_i))}+e^{\alpha_tP(y_i \neq h_t(x_i))}) Dt+1(i)=ZtDt(i)(eαtP(yi=ht(xi))+eαtP(yi=ht(xi)))

h t ( x i ) = y i h_t(x_i)=y_i ht(xi)=yi表示第i个样本分类正确,不等于则表示错误。

Z t = s u m ( D ) Z_t=sum(D) Zt=sum(D)

式子简化为:
D t + 1 ( i ) = D t ( i ) exp ⁡ ( − α t y i h t ( x i ) ) Z t D_{t+1}(i)=\frac{D_t(i)\exp(-\alpha_ty_ih_t(x_i))}{Z_t} Dt+1(i)=ZtDt(i)exp(αtyiht(xi))

最终分类器:
H ( X ) = s i g n ( ∑ i = 1 t α i h i ( X ) ) H(X)=sign\left( \sum_{i=1}^t \alpha_ih_i(X) \right) H(X)=sign(i=1tαihi(X))

误差最小化证明:

step1:先表示出第T+1轮迭代时的样本权重:

D T + 1 ( i ) = 1 m ⋅ e − y i α 1 h 1 ( x i ) Z 1 ⋅ . . . ⋅ e − y i α T h T ( x i ) Z T = e ∑ t − y i α t h t ( x i ) m ∏ t Z t = e − y i ∑ t α t h t ( x i ) m ∏ t Z t 令 , f ( x i ) = ∑ t α t h t ( x i ) , ∴ D T + 1 ( i ) = e − y i f ( x i ) m ∏ t Z t (1) \begin{aligned}\tag{1} D_{T+1}(i)&=\frac{1}{m}\cdot \frac{e^{-y_i \alpha_{1}h_1(x_i)}}{Z_1}\cdot...\cdot \frac{e^{-y_i \alpha_{T}h_{T}(x_i)}}{Z_T} \\ &=\frac{e\sum_t-y_i\alpha_th_t(x_i)}{m\prod_tZ_t} \\ &=\frac{e^{-y_i\sum_t\alpha_th_t(x_i)}}{m\prod_tZ_t} \\ & 令 , f(x_i)=\sum_t\alpha_th_t(x_i), \\ \therefore & D_{T+1}(i)=\frac{e^{-y_if(x_i)}}{m\prod_tZ_t} \end{aligned} DT+1(i)=m1Z1eyiα1h1(xi)...ZTeyiαThT(xi)=mtZtetyiαtht(xi)=mtZteyitαtht(xi),f(xi)=tαtht(xi),DT+1(i)=mtZteyif(xi)(1)

step2:易知 y i 、 h t ( x i ) ∈ { − 1 , 1 } y_i、h_t(x_i) \in \{-1,1\} yiht(xi){ 1,1}, 有两种情况:

  1. h t ( x i ) ≠ y i h_t(x_i) \neq y_i ht(xi)=yi 时, y i f ( x i ) < 0 y_i \mathcal{f}(x_i)<0 yif(xi)<0,即 e − y i f ( x i ) ≥ 1 e^{-y_i\mathcal{f}(x_i)}\geq1 eyif(xi)1
  2. h t ( x i ) = y i h_t(x_i) = y_i ht(xi)=yi 时, y i f ( x i ) > 0 y_i\mathcal{f}(x_i)>0 yif(xi)>0, 即 e − y i f ( x i ) ≤ 1 e^{-y_i\mathcal{f}(x_i)} \leq1 eyif(xi)1

因此,用一个式子同时包含两种情况: ⟦ h ( x i ) ≠ y i ⟧ = 1 \llbracket h(x_i) \neq y_i \rrbracket =1 [[h(xi)=yi]]=1
该式子表示的意思是:如果括号内的条件成立,则式子为1,反之为0.
易得:
⟦ h ( x i ) ≠ y i ⟧ ≤ e − y i f ( x i ) \llbracket h(x_i) \neq y_i \rrbracket \leq e^{-y_if(x_i)} [[h(xi)=yi]]eyif(xi)
把不等式两边做相同的处理:
1 m ∑ i ⟦ h ( x i ) ≠ y i ⟧ ≤ 1 m ∑ i e − y i f ( x i ) (2) \frac{1}{m}\sum_i \llbracket h(x_i) \neq y_i \rrbracket \leq \frac{1}{m}\sum_i e^{-y_if(x_i)}\tag{2} m1i[[h(xi)=yi]]m1ieyif(xi)(2)
可以看到,不等式左边似乎有点眼熟,表示的正是错误率,因此,Adaboost 的误差上界可以用 1 m ∑ i e − y i f ( x i ) \frac{1}{m}\sum_i e^{-y_if(x_i)} m1ieyif(xi) 来表示,仔细一看这个式子似乎也看不出来什么特殊的性质,但唯一比较能看出的是像 (1) 式中的 D T + 1 D_{T+1} DT+1 的分子。

step3:把 (1) 式代入 (2) 式右边进行替换,得到:
1 m ∑ i ⟦ h ( x i ) ≠ y i ⟧ ≤ 1 m ∑ i D T + 1 ( i ) ∏ t Z t \frac{1}{m}\sum_i \llbracket h(x_i) \neq y_i \rrbracket \leq \frac{1}{m} \sum_iD_{T+1}(i) \prod_tZ_t m1i[[h(xi)=yi]]m1iDT+1(i)tZt
因为,无论多少次迭代,样本权值之和为1:
1 m ∑ i ⟦ h ( x i ) ≠ y i ⟧ ≤ 1 m ∏ t Z t (3) \frac{1}{m}\sum_i \llbracket h(x_i) \neq y_i \rrbracket \leq \frac{1}{m} \prod_tZ_t \tag{3} m1i[[h(xi)=yi]]m1tZt(3)

step4:从 (3)式 中可以可以看出:
min ⁡ 1 m ∑ i ⟦ h ( x i ) ≠ y i ⟧ ≤ min ⁡ 1 m min ⁡ ∏ t Z t ≈ 1 m ∏ t min ⁡ α Z t \min{\frac{1}{m}\sum_i \llbracket h(x_i)\neq y_i\rrbracket } \leq \min \frac{1}{m}\min{\prod_tZ_t }\approx \frac{1}{m} \prod_t\min_\alpha{Z_t } minm1i[[h(xi)=yi]]minm1mintZtm1tαminZt
通过每次迭代找局部最优的 Z t {Z_t } Zt, 而 Z t = s u m ( D ) {Z_t }=sum(D) Zt=sum(D),即每次迭代是误差越来越小的过程。

弱分类器权重 α \alpha α 推导:

在 Adaboost 算法中,第一个基分类器 h 1 h_1 h1 是根据初试样本权重来生成的,此后的 h t h_t ht α t \alpha_t αt 是迭代生成的

想要得到 min ⁡ ( ∏ t Z t ) \min(\prod_t Z_t) min(tZt) , 只能退而求其次先把每一次迭代 Z t Z_t Zt 最小化:
Z t = s u m ( D ) = ∑ i D i e − α t y i h t ( x i ) Z_t = sum(D)=\sum_i D_ie^{-\alpha_t y_ih_t(\bm{x_i})} Zt=sum(D)=iDieαtyiht(xi) 最小化,
− α y i h t ( x i ) -\alpha y_i h_t(\bm{x_i}) αyiht(xi) 最小, y i y_i yi h t ( x i ) h_t(\bm{x_i}) ht(xi) 的取值范围都为 {-1,1},
因此 Z t Z_t Zt 可以表示为:
Z t = ∑ i D i e − α t P ( y i = h t ( x i ) ) + ∑ i D i e α t P ( y i ≠ h t ( x i ) ) Z_t = \sum_iD_ie^{-\alpha_t}\bm{P}(y_i = h_t(x_i)) + \sum_iD_ie^{\alpha_t}\bm{P}(y_i \neq h_t(x_i)) Zt=iDieαtP(yi=ht(xi))+iDieαtP(yi=ht(xi))
, Z t Z_t Zt α \alpha α 求导:
∂ Z t ∂ α = − e α t ∑ i D i P ( y i = h t ( x i ) ) + e α t ∑ D i P ( y i ≠ h t ( x i ) ) = 0 e − α t ∑ i D i P ( y i = h t ( x i ) ) = e α t ∑ i D i P ( y i ≠ h t ( x i ) ) ∑ i D i P ( y i = h t ( x i ) ∑ i D i P ( y i ≠ h t ( x i ) = e 2 α t ∑ i D i 1 − P ( y i ≠ h t ( x i ) ) P ( y i ≠ h t ( x i ) ) = e 2 α t 此 时 , 等 式 左 边 不 正 表 示 的 是 错 误 率 吗 ? 因 此 : 1 − e t e t = e 2 α t α t = 1 2 ln ⁡ 1 − e t e t \begin{aligned} \frac{ \partial Z_t}{\partial \alpha} = -e^{\alpha_t}\sum_iD_i\bm{P}(y_i=h_t(\bm{x_i}))+e^{\alpha_t}\sum D_i\bm{P}(y_i \neq h_t(\bm{x_i}))=0 \\ e^{-\alpha_t}\sum_iD_i\bm{P}(y_i=h_t(\bm{x_i}))=e^{\alpha_t}\sum_iD_i\bm{P}(y_i \neq h_t(\bm{x_i}))\\ \frac{\sum_iD_i\bm{P}(y_i=h_t(\bm{x_i})}{\sum_iD_i\bm{P}(y_i \neq h_t(\bm{x_i})}=e^{2\alpha_t}\\ \sum_iD_i\frac{1-\bm{P}(y_i \neq h_t(\bm{x_i}))}{\bm{P}(y_i \neq h_t(\bm{x_i}))}=e^{2\alpha_t}\\ 此时,等式左边不正表示的是错误率吗?因此:\\ \frac{1-e_t}{e_t}=e^{2\alpha_t}\\ \alpha_t=\frac{1}{2}\ln{\frac{1-e_t}{e_t}} \end{aligned} αZt=eαtiDiP(yi=ht(xi))+eαtDiP(yi=ht(xi))=0eαtiDiP(yi=ht(xi))=eαtiDiP(yi=ht(xi))iDiP(yi=ht(xi)iDiP(yi=ht(xi)=e2αtiDiP(yi=ht(xi))1P(yi=ht(xi))=e2αtet1et=e2αtαt=21lnet1et

5、AdaBoost 算法步骤

给定一个训练数据集 T = ( x 1 , y 1 ) ( x 2 , y 2 ) . . . ( x N , y N ) T=(x_1,y_1)(x_2,y_2)...(x_N,y_N) T=(x1,y1)(x2,y2)...(xN,yN),其中实例 x ∈ X x\in \mathcal{X} xX ,而实例空间 X ∈ R n \mathcal{X \in \mathbb{R}^n} XRn y i y_i yi 属于标记集合 { − 1 , + 1 } \{-1,+1\} { 1,+1}.

  • 步骤1. 首先,初试化训练数据的权值分布。每一个训练样本最开始时都被赋予相同的权值: 1 N \frac{1}{N} N1
    D 1 ( w 11 , w 12 , . . . , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , . . . N , D_1(\mathcal{w}_{11},\mathcal{w}_{12},...,\mathcal{w}_{1N}),\mathcal{w}_{1i}=\frac{1}{N},i=1,2,...N, D1(w11,w12,...,w1N),w1i=N1,i=1,2,...N,
    m m m 个基分类器样本权重为:
    D m = { w m 1 , w m 2 , . . . , w m N } , ∑ i = 1 N w m i = 1 D_m=\{w_{m1,}w_{m2},...,w_{mN}\},\sum_{i=1}^Nw_{mi}=1 Dm={ wm1,wm2,...,wmN},i=1Nwmi=1
  • 步骤2. 对于 M M M (代表分类器的个数)个分类器,分别使用带权值分布的数据进行训练,第一次训练之后得到一个基分类器 G m ( x ) G_m(x) Gm(x)
    G m ( x ) : X → { − 1 , + 1 } G_m(x):\mathcal{X} \rightarrow \{-1,+1\} Gm(x):X{ 1,+1}
    计算在 G m ( x ) G_m(x) Gm(x) 上的分类错误率(训练第 m m m 个子分类器时分错的占比):
    e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) e_m=\sum_{i=1}^NP(G_m(x_i)\neq y_i)=\sum_{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i) em=i=1NP(Gm(xi)=yi)=i=1NwmiI(Gm(xi)=yi)

步骤3. 计算 基分类器 G m ( x ) G_m(x) Gm(x) 的系数(权重)
α m = 1 2 log ⁡ 1 − e m e m \alpha_m=\frac{1}{2}\log\frac{1-e_m}{e_m} αm=21logem1em

步骤4. 更新权值分布
D m + 1 = ( w m + 1 , 1 , w m + 1 , 1 , . . . , w m + 1 , N ) D_{m+1}=(w_{m+1,1},w_{m+1,1},...,w_{m+1,N}) Dm+1=(wm+1,1,wm+1,1,...,wm+1,N)
w m + 1 , i = w m i exp ⁡ ( − α m y i G m ( x i ) ) Z m w_{m+1,i}=\frac{w_{mi}\exp(-\alpha_my_iG_m(x_i))}{Z_m} wm+1,i=Zmwmiexp(αmyiGm(xi))

其中, Z m = ∑ i = 1 N w m i exp ⁡ ( − α m y i G m ( x i ) ) Z_m=\sum_{i=1}^Nw_{mi}\exp(-\alpha_my_iG_m(x_i)) Zm=i=1Nwmiexp(αmyiGm(xi)) 是一个常数

步骤5. 组合各个弱分类器
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^M\alpha_mG_m(x) f(x)=m=1MαmGm(x)

得到最终分类器:
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sign(f(x))=sign\left(\sum_{m=1}^M\alpha_mG_m(x)\right) G(x)=sign(f(x))=sign(m=1MαmGm(x))

猜你喜欢

转载自blog.csdn.net/Naruto_8/article/details/120881173
今日推荐