Udacity
Ensemble Learners
Boosting Algorithm
不需要绞尽脑汁去想很复杂的 Rules,只需要一些简单的 Rules,这就是 Ensemble 的基本主张,先找到简单的规则,每一条都有意义,但是单独应用都无法给出最佳答案,然后将这些规则结合起来成为一个 Complex Rule,最后可以找到足够好的答案。
比如:
Spam Email 是一个分类问题,除了用 Decision Tree,KNN,NN,还可以用 Boosting。
基本流程是:训练数据集的一个子集,得到一个 simple rule,再训练另一个子集,得到另一个 rule,训练多个后,得到多个 simple rule,让后将它们结合起来。
例如:只训练有图片的邮件集,只训练有链接的邮件集,它们对于自己的相应的子集是足够好的,但是不是必须要对整个数据集很好。
如果用整个数据集来训练的话,会很难发现这些 simple rule。
训练子集和综合,这两步都可以由最简单的方法去完成,比如在训练每个子集时,得到10个数值,那最后就可以取平均值作为最终结果。
Bagging
随机取点再去平均的方法叫做 Bagging 或者 Bootstrap Aggregation
例如:
红色是训练数据集,绿色是测试数据,这是简单的 Cross Validation。
1.随机抽取一个子集,每次随机抽5个点,一共抽5次,并且每次的数据集不重复
2.要训练3阶多项式
3.最后取平均值
比较不同方法得到的结果:
红色:是用平均值算出的 Ensemble 的三阶结果
蓝色:是用四阶回归出来的
结果是:蓝色在 Training 集上表现比红色好,而红色在 Testing 集上比蓝色好
Boosting详细
比起随机挑取子集,我们应该看看我们想要学习的是什么,去挑取我们不擅长的数据,也就是这些例子是不是很难。
1.什么是hard problem
2.怎样确保已经训练过的子集 不再被训练
Error
如果是 vote,就是正确的有多少,错误的有多少
如果是 value,就是类似于 mean squared error
只有当 Testing 和 Training 有相同的分布时,学习算法才会比较有效,
D:Distribution,这些 error 一定是符合某种分布的
h:hypothesis,是学习算法的结果
c:concept,是真正的结果
所以 Error 的定义是,在一个 Distribution 下,h 不等于 c 的概率
和错误个数算出来的区别是,有些是重要的,需要去学习的,有些是不重要的,而且这个概率表示的是有多少时候是对或者错的。
Weak Lerner:不管你的分布是怎样的,得到的 Error 都小于0.5,
每一列代表一个 hypothesis,每一行代表 instance space 的一个,即一共有4个example,要在三个h中找到 weak learner,也就是 error 大于0.5.
good:
如果四个 example 都有相同的 weight,那么 h1 有三个对的,比0.5好,
evil:
如果把所有的 weight 都放在 x1 上,那么 h1,h2 做的特别差,但是 h3 做的特别好,同理,看 x2-x4,总是能找到某个 h 得到好的结果,所以可能并没有 evil distribution。
但其实,如果选择 h1-h3,它们都有50%的error,
下面这个是个没有 weak learner 的例子:
Boosting Algorithm
循环内:
建立分布:是建立在某个时间t的examples之上的
在这个分布上:找到 weak classifier,这个 weak learner 的 output 是某个 hypothesis(ht),这个 hypothesis 是有一些小 error 的,并不是非常小,而是只要小于 0.5 即可,
它在当前分布的 training 数据集上表现还好
在当前分布下,它错误的概率很小:也就是和 training lable 不同的概率是小的
经过循环,将找到最终的 hypothesis。
High Level Boosting:
1.如何找到 weak classifier
2.怎样找到 distribution,怎样找到 final hypothesis
例如:
最开始什么都不会的时候,分布可以是 uniform,得到 D1
递推式解释:
下一步的分布是以上一步为基础,根据当前的 hypothesis 表现的有多好,来变大或者变小,
yi 和 ht 都是返回 +1 或者 -1,所以当二者 agree 时,结果是1,否则结果是 -1.
alpha 是正数,
所以 e 上面的指数,要么大于0,要么小于0,
那这个系数对 D 的影响就是,要么增,要么减。
?Final Hypothesis
如何得到 final hypothesis?
weighted average - conbination
weight = alpha t
sgn是个函数,ht是weak classifier,alpah t的公式如上图, 和 underlining error 相关,如果你训练的好,weight就大,否则就小。
3 boxes 例子:
square rigon,要分类
先确认 hepothesis 的空间:在二维空间里,这个H要么是横向,要么是纵向,它的一边是正的,另外一边是负的
第一个图里,这个 classifier,左边都是正的,负的都在右边,但是有三个正的被分到了右边
所以在下一个 distribution,会发生什么呢?
被分配正确的点其 weight 比较小,分配错的点其 weight 比较大
然后继续得到第二个 output,它只把 3个负的弄错了,剩下5个红的在左边,两个负的在右边
继续在下一个 distribution里,中间的3个负的,因为划分错了,它们变得更突出,中间的3个正的,分对了,所以权重减小,但是仍然比最开始的要突出,比如最左边的2个正的,一直都被划分正确,那他们会消失
如上图,最后得到三个 hypothesis,将它们 combine 在一起,只是简单的 sum,就可以发现得到一个非常漂亮的分界线,将正负分开,这个效果很像 Decision Tree,Neural Network,和 Weighted Nearest Neighbor
共同学习,写下你的评论
评论加载中...
作者其他优质文章