机器学习总结7_从模型融合到Adaboost

0.

从模型融合开始说起。
有时候我们会想到这么一个问题:我们能不能把几个模型融合在一起达到更好的效果呢?当然可以了。
假设现在有 g1,g2,..gn ,这n个模型,将这n个模型融合起来的基本策略大概有这么几种:

1、从这n个模型中,选出来一个误差最小的。
2、将每个模型都同等对待。
这里写图片描述
3、给每个模型不同的权重。(通过线性回归求解各个权重)
这里写图片描述
4、并不是一定要是线性的,可以使用其他的非线性的算法,进行非线性的模型融合。
这里写图片描述

说明:
关于2、下面证明了G(X)的误差比随机挑一个模型g的误差小。
注意:因为我们并不知道随机挑的是哪一个g,所以这里用所有模型的误差的平均,和G的误差进行比较。
这里写图片描述
关于3、 实际上就是把这n个模型当做n个特征,进行线性回归,就求出相对应的权重了。
有时候通过模型融合可以达到 feature-transform或者regularization的效果。
现在又有个问题了,如何求出来那么多不一样的 gi 啊?
这里写图片描述
这上面简单列举了四种产生不同g的方法,除了这些之外,统计学中还有种方法bootstrapping。

bootstrapping方法的实现很简单,假设你抽取的样本大小为n,在原样本中有放回的抽样,抽取n次。这样就产生了一个新的训练集,同样进行类似的过程,就可以产生另外一个新的训练集。在不同的训练集上进行模型的训练就可以得到不同的g。

1. Adaboost

上面这些都是先得到各种不同的模型 gi ,然后再通过不同的策略进行融合。可不可以在求出来一个模型的同时,求得相应的权重呢?当然是可以的,Adaboost就是这么做的。
在开始介绍Adaboost之前,先插入点其他的东西。
在上面介绍了bootstrapping,现在将bootstrapping抽象表示:
这里写图片描述
这是一个具体的例子,在数据集D进行4次有放回抽样,得到一个新的数据集。我们在这里用向量u表示某个具体的样本被抽中的次数(如图中所示),在误差前乘以对应的u就可以求得模型g了。每进行这么一轮抽样,产生不同的向量u,就代表这不同的数据集,从而就可以得到很多不同的模型g了。

下面开始正式介绍Adaboost。Adaboost 和bootstrapping有点类似,用不同的u生成不同的模型g。有一点不一样的是,Adaboost中的u不是随机抽样得到的,是根据前一个 u(t1) 调节得到的。
这里写图片描述
在模型融合中,我们希望各个 g1...gn 的模型都尽可能不一样。
上面是先后求得的两个模型, u(t+1) 如何根据 ut 进行调整,才能使得 gtgt1 尽可能不一样呢?答案是:给予在 gt 犯错的样本更大的权重。
这里写图片描述
使得犯错的和做对的概率一样(和随机猜的效果一样)。这样产生的新模型 g(t+1) g(t) 就会很不一样。
具体的调整如下所示:
这里写图片描述
如果对这里有疑问的话,建议自己顺着这个思路具体的算一下,你会发现通过这么调整:会使得调整之后的数据对 g(t) 而言,做错的和做对的概率是一样的(都是0.5)。

这么调整的物理意义是:增大前一个模型 g(t) 做错的样本的权重,减小前一个模型 g(t) 最对的样本的权值,让接下来的模型 g(t+1) 着重处理前面做错的那些样本。

每个模型的权重是通过如下确定的:
这里写图片描述
这里写图片描述
说明:ln()函数是单调递增的
(1)、当这个模型的错误率是0.5时(也就是这个模型和乱猜的效果差不多时),那这个模型的权重就是0,那这个模型对最后的结果不起作用。
(2)、当这个模型的错误率是0时,那这个模型的权重就是无限大。
这个模型的错误率越小,那这个模型的权重越大。

!上面总共出现了两个权重,一个是样本的权重u,另一个是模型的权重a!!注意区分!!!

算法总流程如下:
这里写图片描述

2.

又到了分析 EinEout 的时候了。
这里写图片描述
有关于 Ein 这个的证明:
只要每一个的模型g的效果比乱猜好一点的话(犯错率比0.5小的话), 在T=O(logN)次迭代之后,Adaboost的 Ein 就会为0。这也就是说明在Adaboost在很短的时间内,就会使 Ein 就会为0。
关于 EoutEin 的关系,通过VC维,也就是上图中的式子。
T=O(logN)是很小的,当N足够大时, EoutEin 就会很接近,保证了这个算法的泛化能力,避免了overfitting。

3.

可能你还会对此有疑问,强烈推荐台湾大学的《机器学习技法》的第七讲和第八讲,对上面的问题讲述的非常清楚。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
92讲视频课+16大项目实战+课件源码  为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。   本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。  二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。  四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。  五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值