机器学习——提升方法Adaboost算法

机器学习——提升方法Adaboost算法

前言

注:该文大部分来自于李航的《统计学习》,此篇可理解为个人笔记。

提升方法的基本思路

简单来说就是“三各臭皮匠顶一个诸葛亮”的道理。

对于分类任务而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比精确非分类规则(强分类器)容易的多。提升方法就是从弱学习算法出发,反复学习,得到一些列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器。

Adaboost算法

先给出算法的定义,再给出实例,最后给出代码实现。

假设给定一个二分类的训练数据集,共有N个样本, 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 i ∈ χ ⊑ R n x_{i}\in \chi \sqsubseteq R^{n} xiχRn,标记为 y i ∈ γ ⊑ { − 1 , + 1 } y_{i}\in \gamma \sqsubseteq \{-1,+1\} yiγ{1,+1} χ 是 实 例 空 间 , γ 是 标 记 集 合 \chi 是实例空间,\gamma 是标记集合 χγ

Adaboost利用以下算法,训练数据中学习一些列弱分类器或基本分类器,并将这些弱分类器线性组合成为一个强分类器。

算法:

输入:孙联数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , 其 中 x i ∈ χ ⊑ R n T=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\},其中x_{i}\in \chi \sqsubseteq R^{n} T={(x1,y1),(x2,y2),...,(xN,yN)}xiχRn,标记为 y i ∈ γ ⊑ { − 1 , + 1 } y_{i}\in \gamma \sqsubseteq \{-1,+1\} yiγ{1,+1};弱学习算法(感知机、树等)
输出:最终分类器G(x)

(1)初始化训练数据的权值分布
D 1 = ( w 11 , . . . , w 1 i , . . . , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , . . . , N (1) D_{1}=(w_{11},...,w_{1i},...,w_{1N}),w_{1i}=\frac{1}{N},i = 1,2,...,N\tag{1} D1=(w11,...,w1i,...,w1N),w1i=N1,i=1,2,...,N(1)
(2)对于m= 1,2,…,M
------(a)使用具有权值分布 D m D_{m} Dm的训练数据集学习,得到基本分类器
G m ( x ) : χ → − 1 , + 1 G_{m}(x):\chi \rightarrow{-1,+1} Gm(x):χ1,+1
------(b)计算 G m ( x ) G_{m}(x) Gm(x)在训练数据集上的分类误差率
e m = P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ≠ y i ) ) (2) e_{m}=P(G_{m}(x_{i})\neq y_{i})=\sum_{i=1}^{N}w_{mi}I(G_{m}(x_{i}\neq y_{i}))\tag{2} em=P(Gm(xi)=yi)=i=1NwmiI(Gm(xi=yi))(2)
注: ∑ i = 1 N w m i = 1 \sum_{i=1}^{N}w_{mi}=1 i=1Nwmi=1
------©计算G_{m}的系数
α m = 1 2 l o g 1 − e m e m (3) \alpha_{m}=\frac{1}{2}log\frac{1-e_{m}}{e_{m}}\tag{3} αm=21logem1em(3)(log为自然对数)
------(d)更新训练数据集的权值分布
D m + 1 = ( w m + 1 , 1 , . . . , w m + 1 , i , . . . w m + 1 , N ) D_{m+1}=(w_{m+1,1},...,w_{m+1,i},...w_{m+1,N}) Dm+1=(wm+1,1,...,wm+1,i,...wm+1,N)
w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) , i = 1 , 2 , . . . , N (4) w_{m+1,i} = \frac{w_{mi}}{Z_{m}}exp(-\alpha_{m}y_{i}G_{m}(x_{i})),i= 1,2,...,N\tag{4} wm+1,i=Zmwmiexp(αmyiGm(xi)),i=1,2,...,N(4)
这里 Z m Z_{m} Zm是规范化因子
Z m = ∑ i = 1 N w m i e x p ( − α m y i G m ( x i ) ) (5) Z_{m}=\sum_{i=1}^{N}w_{mi}exp(-\alpha _{m}y_{i}G_{m}(x_{i}))\tag{5} Zm=i=1Nwmiexp(αmyiGm(xi))(5)
它使 D m + 1 D_{m+1} Dm+1成为一个概率分布。
------(e)构建基分类器的线性组合
f ( x ) = ∑ m = 1 M α m G m ( x ) (6) f(x) = \sum_{m=1}^{M}\alpha _{m}G_{m}(x)\tag{6} f(x)=m=1MαmGm(x)(6)
得到最终分类器
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) (7) G(x)=sign(f(x))=sign(\sum_{m=1}^{M}\alpha _{m}G_{m}(x))\tag{7} G(x)=sign(f(x))=sign(m=1MαmGm(x))(7)
------------------------------------------------------------------------------------------------------------------------------------
下面是推导过程
构建的线性组合分类器为:
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^{M}\alpha_{m}G_{m}(x) f(x)=m=1MαmGm(x)
最终分类器是在线性组合的基础上进行Sign函数转换:
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[\sum_{m=1}^{M}\alpha_{m}G_{m}(x)] G(x)=sign(f(x))=sign[m=1MαmGm(x)]
G这个分类器在训练的过程中,是为了让误差率最小,所以可以认为G越小其实就是误差率越小
G m ∗ = 1 n ∑ i = 1 n w m i − I ( y i ≠ G m ) , ε m = P ( G m ( x ) ≠ y ) = 1 n ∑ i = 1 n w m i − I ( y i ≠ G m ( x i ) ) G^{*}_{m}=\frac{1}{n}\sum_{i=1}^{n}\overset{-}{w_{mi}}I(y_{i} \neq G_{m}),\varepsilon_{m}=P(G_{m}(x)\neq y)=\frac{1}{n}\sum_{i=1}^{n}\overset{-}{w_{mi}}I(y_{i} \neq G_{m}(x_{i})) Gm=n1i=1nwmiI(yi=Gm),εm=P(Gm(x)=y)=n1i=1nwmiI(yi=Gm(xi))
损失函数:
l o s s = 1 n ∑ i = 1 n I ( G ( x i ) ≠ y i ) ) loss = \frac{1}{n}\sum_{i=1}^{n}I(G(x_{i})\neq y_{i})) loss=n1i=1nI(G(xi)=yi))

l o s s = 1 n ∑ i = 1 n I ( G ( x i ) ≠ y i ) ≤ 1 n ∑ i = 1 n e − y i f ( x i ) (8) loss = \frac{1}{n}\sum_{i=1}^{n}I(G(x_{i})\neq y_{i}) \leq \frac {1}{n}\sum_{i=1}^{n}e^{-y_{i}f(x_{i})}\tag{8} loss=n1i=1nI(G(xi)=yi)n1i=1neyif(xi)(8)
假设第k-1轮的强学习器:
f k − 1 ( x ) = ∑ j = 1 k − 1 α j G j ( x ) f_{k-1}(x)=\sum_{j=1}^{k-1}\alpha_{j}G_{j}(x) fk1(x)=j=1k1αjGj(x)
第k轮的强学习器:
f k ( x ) = ∑ j = 1 k α j G j ( x ) , f k ( x ) = f k − 1 ( x ) + α k G k ( x ) f_{k}(x)=\sum_{j=1}^{k}\alpha _{j}G_{j}(x),f_{k}(x)=f_{k-1}(x)+\alpha_{k}G_{k}(x) fk(x)=j=1kαjGj(x),fk(x)=fk1(x)+αkGk(x)
将上式带入到损失函数(8)中:
l o s s ( α m , G ( m ( x ) ) ) = 1 n ∑ i = 1 n e − y i ( f m − 1 ( x ) + α m G m ( x ) ) loss(\alpha_{m},G(_{m}(x))) = \frac{1}{n}\sum_{i=1}^{n}e^{-y_{i}(f_{m-1}(x)+\alpha_{m}G_{m}(x))} loss(αm,G(m(x)))=n1i=1neyi(fm1(x)+αmGm(x))
那么此时的目标函数为:
a r g m i n 1 n ∑ i = 1 n e − y i ( f m − 1 ( x i ) + α m G m ( x ) ) \underset{min}{arg}\frac{1}{n}\sum_{i=1}^{n}e^{-y_{i}(f_{m-1}(x_{i})+\alpha_{m}G_{m}(x))} minargn1i=1neyi(fm1(xi)+αmGm(x))
化简上式:
a r g m i n 1 n ∑ i = 1 n e − y i ( f m − 1 ( x i ) + α m G m ( x ) ) = a r g m i n 1 n ∑ i = 1 n e − y i f m − 1 ∗ e − y i α m G m ( x ) = a r g m i n 1 n ∑ i = 1 n w m i ∗ e − y i α m G m ( x ) , w m i = e − y i f m − 1 \underset{min}{arg}\frac{1}{n}\sum_{i=1}^{n}e^{-y_{i}(f_{m-1}(x_{i})+\alpha_{m}G_{m}(x))}\\=\underset{min}{arg}\frac{1}{n}\sum_{i=1}^{n}e^{-y_{i}f_{m-1}}*e^{-y_{i}\alpha_{m}G_{m}(x)}\\=\underset{min}{arg}\frac{1}{n}\sum_{i=1}^{n}w_{mi}*e^{-y_{i}\alpha_{m}G_{m}(x)},w_{mi} = e^{-y_{i}f_{m-1}} minargn1i=1neyi(fm1(xi)+αmGm(x))=minargn1i=1neyifm1eyiαmGm(x)=minargn1i=1nwmieyiαmGm(x),wmi=eyifm1
这里把目标函数简记为:
J ( α ) = w − e − y α G = 1 n ∑ y i = G m ( x i ) w − e − α + 1 n ∑ y i ≠ G m ( x i ) w − e α + 1 n ∑ y i ≠ G m ( x i ) w − e − α − 1 n ∑ y i ≠ G m ( x i ) w − e − α = 1 n ∑ i = 1 n w − e − α + 1 n ε e α − 1 n ε e − α = 1 n ( ∑ i = 1 n w − e − α + ε e α − ε e − α ) J(\alpha)=\overset{-}{w}e^{-y\alpha G}=\frac{1}{n}\sum_{y_{i}=G_{m}(x_{i})} \overset{-}{w}e^{-\alpha}+\frac{1}{n}\sum_{y_{i}\neq G_{m}(x_{i})} \overset{-}{w}e^{\alpha}\\+\frac{1}{n}\sum_{y_{i}\neq G_{m}(x_{i})} \overset{-}{w}e^{-\alpha}-\frac{1}{n}\sum_{y_{i}\neq G_{m}(x_{i})} \overset{-}{w}e^{-\alpha}\\=\frac{1}{n}\sum_{i=1}^{n}\overset{-}{w}e^{-\alpha}+\frac{1}{n}\varepsilon e^{\alpha}-\frac{1}{n}\varepsilon e^{-\alpha}\\=\frac{1}{n}(\sum_{i=1}^{n}\overset{-}{w}e^{-\alpha} + \varepsilon e^{\alpha} - \varepsilon e^{-\alpha}) J(α)=weyαG=n1yi=Gm(xi)weα+n1yi=Gm(xi)weα+n1yi=Gm(xi)weαn1yi=Gm(xi)weα=n1i=1nweα+n1εeαn1εeα=n1(i=1nweα+εeαεeα)
使用梯度下降来求解上式的最小值:
∂ J ( α ) ∂ α = 1 n ( − ∑ i = 1 n w − e − α + ε e α + ε e − α ) = 0 \frac{\partial J(\alpha)}{\partial \alpha}=\frac{1}{n}(-\sum_{i=1}^{n}\overset{-}{w}e^{-\alpha}+\varepsilon e^{\alpha}+\varepsilon e^{-\alpha})=0 αJ(α)=n1(i=1nweα+εeα+εeα)=0
解上式:
α m ∗ = 1 2 l n ( 1 − e m e m ) \alpha^{*}_{m}=\frac{1}{2}ln(\frac{1-e_{m}}{e_{m}}) αm=21ln(em1em)

证毕
---------------------------------------------------------------------------------------------------------
上述的Adaboost算法应掌握以下几点:

  1. 在步骤1中假设数据集具有均匀的权值分布,是为了保证在第一步能够在原始数据上学习基本分类器 G 1 ( x ) G_{1}(x) G1(x)
  2. Adaboost算法中的c步计算基分类器 G m G_{m} Gm的系数 α m \alpha_{m} αm α m \alpha_{m} αm表示 G m ( x ) G_{m}(x) Gm(x)在最终分类器中的重要性。当 e m ≤ 1 2 e_{m}\leq \frac{1}{2} em21时, α m ≥ 0 \alpha_{m}\geq0 αm0,并且 α m \alpha_{m} αm随着 e m e_{m} em的减小而增大,所以分类误差越小的基分类器在最终分类器中的作用越大。
  3. 更新训练数据的权值分布为下一轮做准备,式(4)可以写成:
    w m + 1 , i = { w m i Z M e − α m G m ( x i ) = y i w m i Z M e α m G m ( x i ) ≠ y i w_{m+1,i}=\left\{\begin{matrix} \frac{w_{mi}}{Z_{M}}e^{-\alpha_{m}}&G_{m}(x_{i})=y_{i} \\ \frac{w_{mi}}{Z_{M}}e^{\alpha_{m}} & G_{m}(x_{i})\neq y_{i} \end{matrix}\right. wm+1,i={ZMwmieαmZMwmieαmGm(xi)=yiGm(xi)=yi
    由此可知,被基分类器 G m ( x ) G_{m}(x) Gm(x)误分类样本的权重值得以扩大,而被正确分类样本的权值得以缩小。两相比较,误分类样本的权值得以扩大 e 2 α m = e m 1 − e m e^{2\alpha_{m}}=\frac{e_{m}}{1-e_{m}} e2αm=1emem倍。因此误分类样本在下一轮学习中起更大的作用。不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用

Adaboost算法三大特点总结:

  • 分类误差率越小的基分类器在最终分类器中的作用越大
  • 被误分类的样本会得到更大的权重
  • 基分类器线性组合构建最终的分类器

Adaboost例子

由于李航的《统计学习方法》上的示例已经是很详细了,这里直接截图。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值