装袋,AdaBoost和随机森林

装袋,AdaBoost和随机森林都属于组合分类方法的例子,用于改善单个分类模型的学习效果。

我们知道,在很多情况下,面对大量复杂的训练元组,如果只使用一种分类模型构造分类器,很可能对于某些元组是有“硬伤”的,预测结果很不准确。所以最直接的思路是将多种分类模型组合起来,通过得到的多个分类器投票判断。好比是有个消息你不知道,去问别人,如果只问一个人,那这个人说的也不一定对吧。但是如果问很多人,以多数人的答案为准,就不太容易出错了。

具体的组合分类方法的例子,一般我们接触较多的是三个:装袋,AdaBoost和随机森林

装袋

工作原理

装袋表示的含义是“自助聚集”,这个含义也比较形象:假设原始的训练集为 D D ,我们采用有放回抽样,每次从 D 中随机取出一个元组,经过 N N 次有放回抽样( N 也是 D D 的大小),生成训练集 D i (就像把训练元组装进一个袋中),注意这里 D D 中的元组可能多次出现在 D i 中,也可能不出现在 Di D i 中。之后,采用事先设定好的学习方案,使用 Di D i 中的训练元组生成分类器,记为 Mi M i 。经过 k k 轮上述迭代,我们最终可以得到 k 个分类器 { M1,M2,,Mk} { M 1 , M 2 , … , M k } 。那么,在对新元组(记为 X X )进行分类时,这 k 个分类器都被用来对 X X 生成类号,根据“多数投票原则”,选择得票数最高的类作为最终分类结果。

效果分析

就准确率来说,装袋得到的组合分类器的准确率,通常显著高于直接用原始训练集 D 在学习模型上得到单个分类器的准确率,这是因为组合分类器降低了个体分类器的方差。而对于噪声数据和过分拟合的影响,装袋的性能也在可以接受的范围内。

AdaBoost

AdaBoost是Adaptive Boosting的简称,翻译过来就是“适应性提升”,所谓“提升”其实跟上面说的“装袋”基本思想是一致的,都是构造组合分类器,解决单个学习模型对于个别元组误判的问题。与“装袋”不同的是,“提升”会对每个训练元组赋予一个权重,每一轮迭代学习之后,更新元组的权重,最后经过多轮迭代,获得组合分类器,最后加权投票,得到预测结果。而不像装袋那样:在每轮迭代中,训练元组的权重是等大的,不用加以考虑。

AdaBoost中,元组权重迭代更新的根本目的在于使得下一轮学习过程更加“关注”上一轮迭代中,未被正确分类的元组。(装袋则不同,它的每轮迭代对于所有元组的关注度是一样的)这样做的好处其实很明显:对于单个学习模型来说,有些元组是所谓“难分类”的,我们现在使这些“难分类”的元组在下一轮学习中被“重点照顾”,这样,得到的新分类器会对“难分类”元组效果相对较好,循环往复,最终得到的组合分类器会更加均衡,它对于所有元组的分类效果能够做到都比较好。

当前实现AdaBoost主流的方法有两种,一种是韩家炜教授《数据挖掘》中讲到的,每轮迭代采用“自助样本”(即多次有放回抽样生成的元组集合)作为训练集,利用学习方案生成分类器,其中,训练集的选择以元组权重大小为抽样概率依据;另一种是则不采取抽样,而是整个训练集参与每轮迭代,每轮迭代根据元组的权重分布设计新的分类器。其实无论是哪一种方法,其基本思想都是一样的:通过迭代学习,更新元组权重,再根据元组权重,生成下一轮迭代的分类器(韩家炜的方法实际上是通过元组权重抽样得到不同的训练数据集,从而实现生成不同的分类器)。最终,得到带权重的组合分类器,加权投票得到预测的分类结果。下面我分别就两种方法做一个简单的介绍。

整体迭代

采取整体迭代方式的AdaBoost的工作原理如下所示:

输入:训练元组集合 D D ;迭代轮数 k ;学习方案

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值