AdaBoost基本原理与详细公式推导

本文介绍了集成学习中的AdaBoost算法,详细阐述了其基本思路、算法过程及背后的数学原理。包括通过改变训练数据权重来提高分类器性能的方法,以及如何通过加权投票组合多个弱分类器形成强分类器。

机器学习中有一类集成学习算法,它基于一组弱学习器进行组合提升,得到具有优越性能的强学习器。集成学习策略主要有boosting和bagging两大类。本文要介绍的AdaBoost就是boosting的重要代表。

Boosting简介

Boosting基本思想:通过改变训练数据的概率分布(训练数据的权值分布),学习多个弱分类器,并将它们线性组合,构成强分类器。Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”实施。对无法接受带权样本的基学习算法,则可通过“重采样法”来处理。

AdaBoost

1. 基本思路

俗话说“三个臭皮匠,顶个诸葛亮”,AdaBoost算法就认为综合多个学习器得出的判断要比单独的学习器的判断要更可靠。那么它就要训练得到若干个不同的基学习器,再将它们进行组合。

这里有两个步骤:第一是训练基学习器,基学习器之间必须是不同的,要么是不同的模型,要么模型一样但是参数不一样。要不然一样的学习器只能得到一样的结果,对我们最终的判断没有任何助益。如果我们选用的基学习器都相同的话,那么就要对数据进行一定的操作 (重赋权or重采样) 使得训练得到不同的参数。AdaBoost 采用重赋权法,每训练出一个学习器后,改变样本的权值,使得被分类错误的样本拥有更大的权重,这样在下一轮的训练中将会更加关注这些错分样本,最终得到一个相对好的结果。第二步是基学习器的线性组合,AdaBoost采用加权多数表决,即分类误差率低的基学习器有更大的权重,进行线性组合。

2. 算法过程

假设一个二分类训练数据集 T = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } , y i ∈ { − 1 , + 1 } T=\{(x_1,y_1),...,(x_N,y_N)\},y_i\in\{-1,+1\} T={ (x1,y1),...,(xN,yN)},yi{ 1,+1}.

(1)初始化权值分布

训练数据的权值分布,初始状态假设训练数据集具有均匀的权值分布,即每个训练样本在基分类器的学习中作用相同。 D 1 = ( w 11 , . . . , w 1 i , . . . , w 1 N ) , w 1 i = 1 N D_1=(w_{11},...,w_{1i},...,w_{1N}),\quad w_{1i}=\dfrac{1}{N} D1=(w11,...,w1i,...,w1N),w1i=N1 D代表数据权值分布,下标代表第几轮,因为后面还要进行很多轮学习,每次都会改变这个分布。w代标每个数据样本的权重,下标的第一个数字代表第几轮,和D的下标同步,第二个数字代表样本标号。


(2)对 m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M,进行以下步骤:

① 学习得到基本分类器 G m ( x ) G_m(x) Gm(x)

使用具有权值分布 D m D_m Dm的训练数据集进行学习,得到基本分类器 G m ( x ) G_m(x) Gm(x) G m ( x ) G_m(x) Gm(x)可以根据输入给出+1或-1的输出。

② 计算 G m ( x ) G_m(x) Gm(x)的分类误差率 e m e_m em e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N e 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}^Ne_{mi}I(G_m(x_i\neq y_i) em=i=1NP(Gm(xi)=yi)=i=1NemiI(Gm(xi=yi) 其中, I I I 是指示函数,当后面括号里的式子成立就取1,不成立就取0。所以 e m e_m em 就是把所有分类错误的样本权重加起来,如果初始权重相等,那么5个样本分错2个,错误率就是0.4,如果权重是[0.5,0.1,0.1,0.1,0.1,0.1],而权重为0.5的样本分错了,最后错误率就是0.5。因此这个设计使得,将权重高的样本分类正确能显著降低分类误差率。

③ 计算 G m ( x ) G_m(x) Gm(x)的系数 α m \alpha_m αm α m = 1 2 l o g 1 − e m e m \alpha_m=\dfrac{1}{2}log\dfrac{1-e_m}{e_m} αm=21logem1em 其中 α m \alpha_m αm相当于基本分类器的权重,前面说误差率低的分类器要有较大的权重,我们这里先介绍 α m \alpha_m αm的这种形式能够实现我们的需求,后面会进一步介绍这是有严格的推导的,它为什么刚刚好就是这种形式。

从上图不难看出, α m \alpha_m αm取值在0到正无穷,且 e m e_m em大的 α m \alpha_m αm小, e m e_m em小的 α m \alpha_m αm大,是符合我们的逻辑的。这里解释一下分类误差率 e m e_m em为什么小于等于1/2. 因为对于二分类问题,错误率超过0.5的话,只要进行简单的完全反转就可以使其降到0.5以下。举例来说,若 分类结果为 [1,1,1,-1] 错误率0.75,那么只要改成 [-1,-1,-1,1] 错误率就只有0.25了。(另一种想法是随机分类的错误率是0.5,弱学习器虽然弱,正确率也是要略高于随机分类的。

④ 更新训练数据集的权值分布 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 w i Z m e x p ( − α m y i G m ( x i ) ) w_{m+1,i}=\dfrac{w_{wi}}{Z_m}exp(-\alpha_my_iG_m(x_i)) wm+1,i=Zmwwiexp(αmyiGm(xi)) Z m = ∑ i = 1 N w m i e x p ( − α 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))这里的公式看起来很复杂,其实思想是很简单的,我们一步步看。首先, Z m Z_m Zm 是规范化因子,它将 w m + 1 , i w_{m+1,i} wm+1,i 映射到0~1的范围内,使之成为一个概率分布。 Z m Z_m Zm的值其实就是将所有的 w m + 1 , i w_{m+1,i} wm+1,i 进行求和。

然后再看 w m + 1 , i w_{m+1,i} wm+1,i ,我们就可以先忽略掉 Z m Z_m Zm 去理解。如果分类器 G m ( x ) G_m(x) Gm(x)将一个样本分类正确,说明要么真实值 y i y_i yi为1 预测结果 G m ( x i ) G_m(x_i) Gm(xi)也为1,要么真实为-1 预测也为-1,它们总是同号的,此时 y i G m ( x i ) = 1 y_iG_m(x_i)=1 yiGm(xi)=1,如果分类错误则 y i G m ( x i ) = − 1 y_iG_m(x_i)=-1 yiGm(xi)=1.所以可以将原来的式子写成 (先忽略 Z m Z_m Zm) : w m + 1 , i = { w m i e − α m , G m ( x i ) = y i w m i e α m , G m ( x i ) ≠ y i w_{m+1,i}=\begin{cases} w_{mi}e^{-\alpha_m} & ,G_m(x_i)=y_i \\ \\ w_{mi}e^{\alpha_m}& ,G_m(x_i)\neq y_i \end{cases} wm+1,i=wmieαmwmie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值