Ensemble Learners

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

为什么 boosting 好用?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能

一步步教你理解LSTM

作者:王千发 编辑:田 旭 什么是LSTM 1 LSTM全名是Long Short-Term Memory,长短时记忆网络,可以用来处理时序数据,在自然语言处理...

4917
来自专栏机器之心

资源 | 从VGG到ResNet,你想要的MXNet预训练模型轻松学

2644
来自专栏PaddlePaddle

【文本分类】基于DNN/CNN的情感分类

导语 PaddlePaddle提供了丰富的运算单元,帮助大家以模块化的方式构建起千变万化的深度学习模型来解决不同的应用问题。这里,我们针对常见的机器学习任务,提...

4954
来自专栏磐创AI技术团队的专栏

实用 | 分享一个决策树可视化工具

【磐创AI导读】:这篇文章希望跟大家分享一个可视化决策树或者随机森林的工具。这可以帮助我们更好的去理解或解释我们的模型。想要获取更多的机器学习、深度学习资源。欢...

2361
来自专栏杨熹的专栏

TensorFlow-10-基于 LSTM 建立一个语言模型

今日资料: https://www.tensorflow.org/tutorials/recurrent 中文版: http://wiki.jikexue...

5396
来自专栏人工智能头条

Azure Machine Learning 上如何选择合适的机器学习算法

1496
来自专栏码洞

人工不智能之sklearn聚类

线性回归是一种有监督算法,提供了输入数据x和参考目标值y,参考目标提供了一种纠错机制,是对预测结果y_的监督,如果y和y_相差过大,说明拟合的模型可能存在问题。...

661
来自专栏Coding迪斯尼

RNN,具有记忆功能神经网络的理解与实现

我们当前掌握的网络类型,统称为feed forward网络。这种网络的特点是,当我们把很多条数据输入网络进行训练时,网络没有“记忆性”,也就是网络认为前一条输入...

1262
来自专栏Python小屋

Python使用tensorflow中梯度下降算法求解变量最优值

TensorFlow是一个用于人工智能的开源神器,是一个采用数据流图(data flow graphs)用于数值计算的开源软件库。数据流图使用节点(nodes)...

3588
来自专栏ATYUN订阅号

词序:神经网络能按正确的顺序排列单词吗?

当学习第二语言时,最困难的挑战之一可能是熟悉单词顺序。词序在机器翻译中也很重要,因为翻译大致上是一种处理目标语言词汇的过程,它与源语言是对等的。也许你已经做过一...

3514

扫码关注云+社区

领取腾讯云代金券