机器学习11 AdaBoost 与 前向分步算法

这一篇开始介绍Boosting,我们先介绍Boosting中的第一个模型, AdaBoost, 二分类学习模型

AdaBoost的基本原理,是每次改变样本的权重,增大本次学习之前分类错误的样本的权重,减小已经分类正确的样本的权重,每次学习一个基分类器,加到现有的模型里。然后根据新的分类结果,更新样本权重,学习新的基分类器,并将这些分类器线性组合成为一个强分类器。

f(x) = \sum_{m=1}^M\alpha _mG_m(x)

G(x) = sign(f(x))

为了方便理解,我们从拿到数据集开始一步步考虑这个模型。

数据集D = \{{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}\}

我们在一开始给每一个数据同样的权重, D_1 = w_{1i} = \frac{1}{N}

然后我们用一个基模型(例如cart分类树)去训练数据集,得到一个基分类器。G_1(x): x\rightarrow \{-1,1\}

我们可以得到这个基分类器的分类误差: e_1 = \sum_{i=1}^N p(G_1(x_i) \neq y_i) = \sum_{n=1}^Nw_{1i}1(G_1(x_i) \neq y_i)

然后我们就可以得到这个基分类器的权重 \alpha _1 = \frac{1}{2} log\frac{1-e_1}{e_1}, 所以分类正确率越高,模型权重越大

接下来要更新数据集的权重了, w_{2,i} = \frac{w_{1,i}}{z_1}exp(-\alpha_1y_iG_1(x_i)), 其中 z_1 = \sum_{i=1}^Nw_{1,i}exp(-\alpha_1y_iG_1(x_i))

然后构建第二个基分类器,得到第二个基分类器的分类误差,基分类器权重,更新样本权重,再构建第三个基分类器。如此这般依次构建一个个基分类器,最后根据基分类器权重线性组合成一个大的分类器即可。


到现在只是说了一下模型的基本概念,现在开始我们来仔细的解释模型。

AdaBoost算法,是模型为加法模型, 损失函数为指数函数,学习算法为前向分步算法的二分类学习方法。我们一步步看这句话

加法模型比较好理解,最终的模型是基模型的线性组合。

现在我们来介绍一下什么是前向分步算法

在加法模型下, f(x) = \sum_{m=1}^M\beta _mb(x;\gamma_m)

在给定数据集即损失函数的情况下, 只需要最小化 L(y, f(x)) , 即 \mathop{argmin}_{\beta _m,\gamma_m} \sum_{i=1}^NL(y_i, \sum_ {m=1}^M \beta_mb(x_i;\gamma_m)

直接优化这个是很难的,前向分步算法的想法,就是每次只学习一个基模型及其系数,慢慢逼近最优化的模型,起到了简化这个优化模型的复杂度。

现在我们根据前向分步算法来推出AdaBoost,首先定义损失函数为指数损失。

L(y,f(x)) = exp(-yf(x))

在第m-1步学习后, 得到 f_{m-1}(x) = f_{m-2}(x) +\alpha_ {m-1} G_{m-1}(x)

所以我们第m步的目标是, \mathop{argmin}_{\alpha _m,G_m} \sum_{i=1}^Nexp[-y_i(f_{m-1}(x_i) +\alpha _mG_m(x_i)]

定义\bar w_{m,i} = exp[-y_if_{m-1}(x_i)],这是没有归一化过的w_{m,i}

因为w_{m,i} = \frac{w_{m-1,i}}{z_{m-1}}exp(-\alpha_{m-1}y_iG_{m-1}(x_i)) = \frac{w_{m-2,i}}{z_{m-1}*z_{m-2}}exp(-\alpha_{m-1}y_iG_{m-1}(x_i)-\alpha_{m-2}y_iG_{m-2}(x_i)) = .....

=\frac{w_{1,i}}{\prod_{j=1}^{m-1}z_j } exp(-y_if_{m-1}(x)) = \frac{w_{1,i}}{\prod_{j=1}^{m-1}z_j } \bar w_{m,,1}w_{1,i} = \frac{1}{N} , 

所以  \bar w_{m,i} 是没有归一化过的w_{m,i}。为方便理解,下面就用w_{m,i}代替\bar w_{m,i} 了,因为差一个归一化因子,不会影响优化问题

当前的目标函数为  \mathop{argmin}_{\alpha _m,G_m} \sum_{i=1}^Nw_{m,i}exp[-y_i\alpha _mG_m(x_i)]

我们先求G_m\alpha _m是个大于0的数,当y_i \neq G_m(x_i)的时候, 是w_{m,i}e^{2\alpha}, 当y_i = G_m(x_i), 是w_{m,i}e^{-2\alpha}

所以只需要在w_{m,i}权重下, 误分类的点越少越好。

G_m^* =  \mathop{argmin}_{G_m} \sum_{i=1}^Nw_{m,i}I(y_i \neq G_{m}(x_i)), 这就是AdaBoost每一步学习到的模型。

G_m^*带入目标函数,求\alpha _m,

\sum_{i=1}^n w_{m,i}exp[-y_i\alpha G(x_i)] = \sum_{y_i = G_m(x_i)} w_{m,i}e^{-\alpha} + \sum_{y_i \neq G_m(x_i)}w_{m,i}e^{\alpha}

=(e^\alpha - e^{-\alpha})\sum_{i=1}^N w_{m,i}1(y_i \neq G_m(x_i)) + e^{-\alpha}\sum_{i=1}^Nw_{m,i}  (\Delta)

\frac{\partial \Delta}{\partial \alpha} = (e^\alpha + e^{-\alpha})\sum_{i=1}^Nw_{m,i}1(y_i \neq G_m(x_i)) - e^{-\alpha}\sum_{i=1}^N w_{m,i}

\Rightarrow (e^{2\alpha} +1)e_m = 1\Rightarrow e^{2\alpha} = \frac {1 - e_m}{e_m}

推出\alpha_m = \frac{1}{2}log\frac{1-e_m}{e_m}

其中e_m = \sum_{i=1}^Nw_{m,i}1(y_i \neq G_m(x_i))

这就是AdaBoost里第m个基模型的误差, 现在我们已经求出了AdaBoost里的基模型和基模型权重,现在我们来看样本权重的更新。

f_m(x) = f_{m-1}(x) +\alpha_mG_m(x) 和 \bar w_{m,i} = exp[-y_if_{m-1}(x_i)]

\bar w_{m+1,i} = exp[-y_if_m(x_i)] = exp[-y_i(f_{m-1}(x) +\alpha_mG_m(x))] = \bar w_{m,i}exp[-y_i\alpha_mG_m]

正如上面所讲, 只要一个归一化因子, 就可以得到和AdaBoost里一样的权重更新了。

至此,我们从加法模型和前向分步算法,在损失函数为指数函数的情况下, 推出了AdaBoost算法,由此也证明了AdaBoost算法,是模型为加法模型, 损失函数为指数函数,学习算法为前向分步算法的二分类学习方法。


下一篇会介绍另一种boosting模型,梯度树

转载请注明,谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339