关于机器学习算法AdaBoost的疑惑

2013-10-13 08:56:35 +08:00
 flyaway
最近在学习AdaBoost算法,算法的基本思路基本是明白的,就是训练多个不同的分类器,最终根据加权的投票结果得出分类目标。但是在具体实现的时候,有个问题我一直不太明白。算法中说:"Train a learner h from D using distribution Dt",就是说在某个权重(分布)Dt下,训练样本。这到底是什么意思?具体如何实现啊?

每次循环中的分类器的训练数据到底有何不同?这个权重是如何和训练数据产生关系从而训练出不同的分类器?

网上找了一圈,都没有相关的说明,是我理解得不对还是另有玄机?了解这个算法的大侠帮忙解释一下~~
4185 次点击
所在节点    问与答
19 条回复
forest520
2013-10-13 10:34:39 +08:00
flyaway
2013-10-13 10:55:22 +08:00
@forest520 这篇文章我之前看过了,基本思路我都了解,但是就是具体实现的时候,我不明白的是,这个权重到底是如何和训练数据发生关系的,权重改变之后,训练数据是如何做出相应改变的,从而使得新训练的分类器能够对上一个分类器分错的点进行更加正确的分类。
forest520
2013-10-13 11:18:10 +08:00
@flyaway 很简单,随机抽样得到新的训练集,每个样本被抽中的概率不同
flyaway
2013-10-13 11:28:16 +08:00
@forest520 原来是这么简单的啊。能否这样理解:被分错的点在新数据集上出现的概率大,而正确分类的点在新数据集上出现的概率小,但是由于数据集的大小是固定的,所以同样的错误点在新数据集上可能会出现多次,从而加重了这个点对下一个分类器的影响力,相应的,正确的点就被降低了影响力。
miaoever
2013-10-13 11:37:44 +08:00
@flyaway 是这样的,每轮过后分类错误的点权值被加大(可以理解成增加 penalty),分类正确的点权值减小。
flyaway
2013-10-13 12:16:20 +08:00
我已经知道给怎么做了~多谢指教!
txx
2013-10-13 12:52:35 +08:00
@flyaway 我最近也在学这个东西......之后碰到不会的能请教您么? 把adaboost 搬到iOS上 对我来说 还是不小的挑战性...
flyaway
2013-10-13 13:26:18 +08:00
@txx 大家一起学习啊。话说……你的iOS是指什么啊?总不会是苹果的系统吧?
txx
2013-10-13 22:52:19 +08:00
@flyaway 当然..........
flyaway
2013-10-13 22:56:27 +08:00
@txx …………为什么会在移动终端上运行这种比较耗时的机器学习的算法呢,感觉好奇怪啊
txx
2013-10-13 23:00:26 +08:00
@flyaway 第一...不要小看 iOS的计算能力......第二....其实我只是为了识别比较特殊的 正方形....第三 这条路是导师指的
flyaway
2013-10-14 10:07:54 +08:00
@txx 长见识了……
codghost
2014-04-23 09:50:12 +08:00
flyaway,你好,我也在做关于adaboost方面的工作,经过你的解释,我理解了好多,但是在具体实现的时候该怎么操作呢,随机抽样,每个样本被抽到的概率不同,这在程序中怎么实现啊,比如说现在只有两个样本,第一次迭代时,每个被抽到的概率为0.5,一次迭代后,如果分别变为0.6,0.4,那在下一步时,怎么抽样呢?
codghost
2014-04-23 20:15:12 +08:00
@forest520,你好,我也在做关于adaboost方面的工作,经过你的解释,我理解了好多,但是在具体实现的时候该怎么操作呢,随机抽样,每个样本被抽到的概率不同,这在程序中怎么实现啊,比如说现在只有两个样本,第一次迭代时,每个被抽到的概率为0.5,一次迭代后,如果分别变为0.6,0.4,那在下一步时,怎么抽样呢?
forest520
2014-04-23 21:00:08 +08:00
@codghost 生成1个随机数a,如果a的取值范围在0-0.6之间就选样本1,0.6-1.0之间。多个样本的思路相同。
codghost
2014-04-24 10:43:10 +08:00
@forest520,谢谢你的解答,你的意思是:从0-1之间产生均匀随机数,然后与权重比较,接近哪个权值就选权值对应的那个样本吧?但是我还是有个疑问,如果迭代第一次,权重都相同,那么你这个方法应该可行,但是如果在第一步每个样本的权重就不相同,比如说有133组数据,前129组的权重都只是0.0039,后5组的权重都为0.1,那么按你的方法,我抽133次样,基本每次都会抽到后5组吧,这该怎么解决呢?大神,求加qq:511837446
forest520
2014-04-24 12:31:12 +08:00
@codghost 不是这样的,比如随机数为0-0.0039之间,就抽取样本1,如果随机数为0.0039-0.0078,就抽取样本2,以此类推,如果随机数为0.5-0.6,就抽取倒数第5个样本,如果随机数为0.9-1,就抽取最后一个样本
aizhangpp
2016-12-26 15:03:26 +08:00
作者,你好。采用这种抽样方法,进行 adaboot 迭代,所训练的强学习器效果好吗?时间这么久了还记得吗,我最近也遇到了一个类似的问题,但是用不用 adaboost 的效果是一样的啊。不知道你的如何?
flyaway
2017-01-20 09:43:59 +08:00
@aizhangpp adaboost 中的分类器必须是弱分类器才有效果……在我的实验中,效果还是挺明显的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/85415

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX