决策树算法之 AdaBoost

AdaBoost 是一种更高级的「森林」类型的决策树,和随机森林比起来,它有以下三个特点

  1. AdaBoost 的每棵树都只有一个根节点和两个叶子节点,实际上叫树桩(stump)可能会更合适
  2. AdaBoost 的每个树桩的权重是不同的,而随机森林中的每棵树的权重是相同的
  3. 前一个树桩的错误数据会影响后一个树桩的生成,意味着后面的树桩是前面树桩的补足。这种思想也被称为 Boost,除 AdaBoost 外,GBDT 和 XGBoost 也是这样的思想(很明显它们中都有 Boost)。

AdaBoost 的生成步骤

假设我们有以下训练数据,我们想通过「胸口疼痛」、「血管堵塞」和「体重」这三个特征来训练一个心脏病预测模型:

胸口疼痛 血管堵塞 体重 患心脏病
Yes Yes 205 Yes
No Yes 180 Yes
Yes No 210 Yes
Yes Yes 167 Yes
No Yes 156 No
No Yes 125 No
Yes No 168 No
Yes Yes 172 No

首先,我们需要为每个样本附上一个相同的权重,因为只有 8 条数据,所以每个样本的权重均为 1/8,如下

胸口疼痛 血管堵塞 体重 患心脏病 样本权重
Yes Yes 205 Yes 1/8
No Yes 180 Yes 1/8
Yes No 210 Yes 1/8
Yes Yes 167 Yes 1/8
No Yes 156 No 1/8
No Yes 125 No 1/8
Yes No 168 No 1/8
Yes Yes 172 No 1/8

接下来,我们利用基尼不纯度在这 3 个特征中找一个最合适的作为树根,经过计算,当「体重 >176」 时,基尼不纯度最小,则第一个树桩的节点为「体重 >176」,如下图所示:

产生出一个树桩后,我们把该树桩判断错误的样本拿出来,将它们的权重相加,便得出该树桩的总误差,上述树桩只有一个错误样本:

胸口疼痛 血管堵塞 体重 患心脏病 样本权重
Yes Yes 167 Yes 1/8

则该树桩的总误差(Total Error)即这条错误样本的权重——0.125。通过总误差,我们便可以计算出该树桩的 Weight:
Weight_{stump} = \frac{1}{2}\log(\frac{1-TotalError}{TotalError})
该公式的曲线如下图所示,可以看到,误差的取值范围在 0 到 1 之间,随着误差越大,树桩的 Weight 越小,上例中,我们的误差为 0.125,所对应的 Weight 为 0.973,也就是图中蓝色点所处的位置:

一棵树桩产生出来后,接着就要产生第二棵,前面说了,后一棵树的生成依赖于前一棵树的误差,具体的,我们会根据这个误差来调整每个样本的权重,这样,后面的树就可以根据样本的新权重来训练了,更进一步,前一棵树中错误的样本,我们希望在下一棵树的训练中,提高这些样本的权重,同时降低正确样本的权重,这样下一棵树便会更倾向于把这类样本处理好,起到了对前面树的补足作用

整体误差和树的 Weight 成负相关关系,Weight 越高代表置信度越高,这时错误的样本相对于 Weight 低的树来说,样本权重要调的更高,而正确的样本的权重要调的更低,错误样本权重和正确样本权重的调整分别如下面左图和右图所示:

对于本例来说,第一个树桩的 Weight 为 0.973,则错误样本的权重根据左图公式,将调整为 0.125 \times 2.646 = 0.33,同理,正确样本的权重根据右图公式,将调整为 0.125 \times 0.378=0.05,归一化后,最终所有样本的权重调整如下:

序号 旧样本权重 新样本权重 归一化后
1 1/8 0.05 0.07
2 1/8 0.05 0.07
3 1/8 0.05 0.07
4 1/8 0.33 0.49
5 1/8 0.05 0.07
6 1/8 0.05 0.07
7 1/8 0.05 0.07
8 1/8 0.05 0.07

接下来,我们需要根据新的特征权重来训练树桩,其中的一种办法是根据权重来抽样,即在每抽一条数据之前,产生一个 0-1 的随机数,根据随机数来决定抽哪条数据。以上面的数据举例,当随机数落在 [0, 0.07) 范围内时,则抽出第 1 条样本,落在 [0.07, 0.14) 范围内时,则抽出第 2 条样本,以此类推。

抽样完成后,我们重新对这些样本赋予等值的权重,如下:

胸口疼痛 血管堵塞 体重 患心脏病 样本权重
No Yes 156 No 1/8
Yes Yes 167 Yes 1/8
No Yes 125 No 1/8
Yes Yes 167 Yes 1/8
Yes Yes 167 Yes 1/8
Yes Yes 172 No 1/8
Yes Yes 205 Yes 1/8
Yes Yes 167 Yes 1/8

可见第 4 条样本被重复抽出来了多次(它的样本权重最高),使用这批数据训练后,新的树桩会更倾向于把这条样本分类正确,因为在训练时,重复的样本会受到更大的惩罚。

接下来的步骤和最开始的一样,重复上面的过程就可以了。

AdaBoost 的预测

在构建完 AdaBoost 后,我们该如何做预测呢?预测过程和随机森林类似,都是用每棵树的结果来投票,差别在于这里采用的是加权投票。例如我们有条数据,每棵树对该数据的预测结果如下:

树序号 树 Weight 预测结果
1 0.97 1
2 0.34 0
... ... ...
100 0.46 1

聚合后,把相同预测结果的 Weight 相加,如下

预测结果 树 Weight 之和
1 43.7
0 20.1

取 Weight 较大者,所以该条数据的预测结果为 1.

总结

本文我们一起学习了 AdaBoost 的构建过程,AdaBoost 和随机森林比起来,有 3 个特点:

  1. 每棵树只有一个根节点和两个叶子节点
  2. 后一棵树由前一棵树的误差决定
  3. 每棵树都有不同的权重,预测时会根据权重来聚合预测结果

参考:AdaBoost, Clearly Explained

相关文章:

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

推荐阅读更多精彩内容