Adaboost算法

基本思想

Adaboost是adaptive boosting的缩写,是一种基于Boosting的融合算法,其核心思想是将多个弱分类器通过添加相应的权值组合成一个强分类器。对于分类效果好的弱分类器给更大的权值,反之则给更小的权值。同时它还是一种迭代算法,后一个弱分类器通过增加前一个弱分类器分错的样本的权重来达到更好的分类效果。最后将所有的弱分类器结合成一个强分类器,作为最终的算法模型。
通过Adaboost算法的定义可以看出,算法核心由两部分组成:

  1. 第m个弱分类器的权重a_m = \frac{1}{2}ln\frac{1-\varepsilon_m}{\varepsilon_m}, \varepsilon_m 为第m次迭代的错误率 ;
  2. 第m+1次样本迭代的权重W_{m+1} = \frac{W_m}{Z_m}e^{a_my_iG_m(x_i)}
    Z_m为归一化因子,G_m为弱分类器解析函数

F(x) = \alpha_1f_1(x)+\alpha_2f_2(x)...+\alpha_nf_n(x)

F_2(x) = \alpha_1f_1(x)+\alpha_2f_2(x)=F_1(x)+\alpha_2f_2(x)
第一次迭代所有的样本权重:
D_1 = (W_{11}+W_{12}+W_{13}+W_{14}+...W_{1n})
由此看出,Adaboost算法的每次迭代的权重需要通过前一次的权重得出,所以不能并行计算。

算法推导

  1. 弱学习器: G(x) =\begin{cases}1 \\-1\end{cases} 只有两种结果,关注特征也比较少,分类能力较弱。
  2. 强学习器: f(x) = \sum_{m=1}^m a_mG_m(x), a_m每个弱分类器的权重。
    将每个强分类器通过计算的权值进行线性组合得到强分类器。
  3. 损失函数: loss = \frac{1}{n}\sum_{i=1}^nI(G(x) \neq y_i)\le \frac{1}{n}\sum_{i=1}^n e^{(-y_isign(f(x_i)))}
    n 为样本个数;I()函数满足条件返回1,不满足则返回1; f(x)为强分类器预测值,套一个sign函数使其返回1或-1,大于0返回1,小于0返回-1。

其中:函数 I(G(x) \neq y_i) 判断分类器G(x)与实际标签值y_i是否相等,即是否预测正确,正确则相等,返回值为0; 不正确则不想等,返回值为1。那么求和之后的值即为该分类器分错了多少个样本,即损失。
但是该函数并不单调,所以无法进行优化。那么通过优化后面的式子来达到优化损失函数的效果。

那么损失函数的优化即转化为对\frac{1}{n}\sum_{i=1}^n e^{(-y_i(f(x_i)))}的优化问题。
损失函数优化的最终目的是让函数可以和分类器同趋势反映模型分类的准确率,那么该函数如何正确反映模型分类的准确率,通过下面推导得出。

分析该函数,y_i(f(x_i))的取值分别有两种:
y_i =\begin{cases}1 \\-1\end{cases} f(x) =\begin{cases}>0 \\<0\end{cases}
可通过表格更直观感受:

-yf(x) y = 1 y = -1
f(x)>0 <0 分对了 (1) >0 分错了(1)
f(x)<0 >0 分错了 (2) <0 分对了(2)

通过图像观察优化方向(a = 2.1和e差不多,趋势也一样了,不要在意这些细节)

指数函数图像

所谓优化损失函数,就是以为了让损失函数尽可能小为核心思想,对函数进行优化。不论分对还是分错,都要通过变化f(x)使损失函数尽可能小:
所以:x轴
-y_if(x_i)
,y轴
e^{(-y_if(x_i))}
有下面四种情况

  • 在分对了(1)情况下,f(x)>0, f(x)↑
  • 在分对了(2)情况下,f(x)<0, f(x)↓
  • 在分错了(1)情况下,f(x)>0, f(x)↓
  • 在分错了(2)情况下,f(x)<0, f(x)↑
    按以上趋势变化
    -y_if(x_i) 绝对值越大,损失函数越往左优化,损失函数e^{(-y_if(x_i))}值也就越小。就可以达到优化的目的。

该损失函数的优化是基于函数空间的优化,也就是说优化的并不是像梯度下降那样的函数的参数的,可以通过回代算出的值。这里的f(x)是优化的对象,而f(x)是不能通过带入带回算出来的值。

结果:loss = \frac{1}{n}\sum_{i=1}^n e^{(-y_i(f(x_i)))}

  1. f_{k-1}(x) = \sum_{i=1}^{k-1}a_iG_i(x) 前k-1个弱分类器组成的分类器
    f_k(x) = \sum_{i=1}^ka_iG_i(x) 前k个弱分类器组成的分类器
    f(x) = f_{k-1}(x) + a_kG_k(x)
    强分类器,就是前k-1个弱分类器组成的分类器加上最后一个弱分类器。有迭代关系

  2. 损失函数优化:
    loss(a_m, G_m(x)) = \frac{1}{n}\sum_{i=1}^ne^{-y_i(f_{m-1}(x_i)+a_mG_m(x_i))}
    a_m为第m个学习器的权重; G_m(x)为第m个弱分类器,n为样本个数。
    优化损失函数:
    = \frac{1}{n}\sum_{i=1}^ne^{-y_if_{m-1}(x_i)}e^{-y_ia_mG_m(x_i)} 把e的指数项拆开
    e^{-y_if_{m-1}(x_i)} 样本权重 从上一次迭代中获得的 已知 当作常数 \overline W_{mi}
    =\frac{1}{n}\sum_{i=1}^n W_{mi}e^{-y_ia_mG_m(x_i)}
    a_m即为所求的学习器权重
    y_i为样本的真实标签,结果两种1, -1
    G_m(x_i)为样本预测标签,结果两种1,-1
    分对→ y_i= G_m(x_i) ; 分错 → y_i\neq G_m(x_i)
    则函数可变为:
    = \sum_{y_i= G_m(x_i)}\overline W_{mi}e^{-a_m} + \sum_{y_i\neq G_m(x_i)}\overline W_{mi}e^{a_m} 第一项分对的个数,第二项分错的个数

两项同时除以所有样本的权重\sum_{i=1}^n\overline W_{im},进行归一化,得:

\frac{ \sum_{y_i= G_m(x_i)}\overline W_{mi}}{\sum_{i=1}^n\overline W_{mi}}e^{-a_m}+ \frac{ \sum_{y_i\neq G_m(x_i)}\overline W_{mi}}{\sum_{i=1}^n\overline W_{mi}}e^{a_m}
那么上式的第二项e^{a_m}的系数即为分错的概率即错误率
那前一项的系数即为正确率(1-错误率)
为表达方便,令它为\varepsilon_m,则上式可写作:
(1-\varepsilon_m)e^{-a_m}+\varepsilon_me^{a_m}
通过上式求出样本权重a_m即对a_m求导,令导数为0即可。

  1. 求导获得a_m的值

loss =(1-\varepsilon_m)e^{-a_m}+\varepsilon_me^{a_m}

loss' =\frac {\partial loss(a_m)}{\partial a_m}=-(1-\varepsilon_m)e^{-a_m} + \varepsilon_me^{a_m} = 0

(1-\varepsilon_m)e^{-a_m} = \varepsilon_me^{a_m}

\frac{(1-\varepsilon_m)}{ \varepsilon_m} =e^{2a_m} 两边取对数

ln\frac{(1-\varepsilon_m)}{ \varepsilon_m} =2a_m

a_m =\frac{1}{2} ln\frac{(1-\varepsilon_m)}{ \varepsilon_m}

至此,我们求推出了Adaboost算法的两个关键参数,了解了算法的数学原理。

总结

  • Adaboost是一种Boosting的融合算法,它通过级联的方式把一系列若模型融合在一起变成一个强模型;
  • 既可以做分类也可以做回归(大多数算法都可以)
  • 在做分类模型时,默认的基学习器是决策树,但是基学习器可以是任意一种支持样本加权的算法,如逻辑回归,SVM等

优点: 既可以处理连续数据集,也可以处理离散数据集,模型鲁棒性很强,泛化能力强;结构简单,解释性强。
缺点:对异常样本敏感,异常样本在迭代过程中易获得更大的权重么,影响整个模型的预测结果。

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