集成学习1-Boosting
转自http://blog.csdn.net/lvhao92/article/details/51079018
集成学习大致分为两类,一类串行生成。如Boosting。一类为并行化。如Bagging和“随机森林”。
以下分别介绍:
1.Boosting
这种方法是先训练出一个基学习机。然后。对训练样本进行学习,对于识别错的样本进行额外的关注,从而对训练样本的分布进行调整,然后用新的样本分布训练下一个学习器。如此反复。最后将这若干个基学习机进行加权结合。
Boosting的代表就是大名鼎鼎的AdaBoost。
讲一个故事。我们团队坐在1308里面开会。要解决非常多问题,第一个人先来解决,这时候。有的问题被他非常好的攻克了,而有的问题并没有非常好的被解决。
此刻,我们会将他并不能解决的问题给予很多其它的关注。详细做法是加大这个问题的权重。从而能得到下一个人的很多其它的关注。而对这个人已经攻克了的问题则降低它的权重。我们也会依据每一个人解决这个问题的能力赋予每一个人不一样的权重。能力越高权重越大。直到有一天,遇到一个问题我们大家都不知道答案,然后大家分别去发表自己的观点,最后的结果是综合大家的看法给出的。也就是每一个人的观点会结合这个人的权重之后综合得出。
这里。每一个人就是一个个的弱分类器。大家一起这种组合就是强分类器。数学表述就是“加权结合”(1)h则为各种学习器,就是那些人。前面的a就是权重,就是他们的话语权。以下也不会说太多,想说的就是仅仅有这几点:1.既然这也是一个模型。那我们模型的优化公式是什么。2.我们之前说的每一个问题会依据人的解决结果而改变其权重,那么这个权重又是怎样改变的?3.每一个人也会依据自身的解决这个问题的能力所赋予一定的话语权(权重),那这个公式又是什么?所以我主要想说好这几点。
1.1最小化指数损失函数
由名字就行得知,我们是通过指数损失函数来作为我们模型的优化目标的,为什么呢?首先,模型H(x)是由训练集带入优化函数其中训练获得。当通过训练集D来最小化指数损失函数
(2)的时候,则H可得。
既要求最小化,那么对该(2)式进行求偏导:(3)。这里。依据x的表现分别进行两种可能性如果,一种f(x)=1,第二种f(x)=-1。
两种情况,不同的概率。将f(x)等于1或-1代入原式中就可以得(3)。
令(3)式为0,则可得(4)。
因此。(5)。
OK。这里,意味着sign(H(X))达到了贝叶斯最优错误率。
这意味着指数损失函数最小化。则分类错误率也将最小化。
.而,我们要是设计分类器。看它合格与否不就是看它是不是可以使得分类错误率最小化吗?而这里假设用指数损失函数来表示分类任务的性能好坏与这个分类错误率是一致的。除此之外。指数损失函数也是连续可微的。因此,我们拿指数损失函数作为它的优化函数这是十分合理的!
1.2确定分类器和它的权重
这一节要说明确两件事。
其一,怎样确定这一轮的子分类器。也就是怎样生成一个人的价值观。其二,这些人的话语权又是多少,这个子分类器的权重又是多大。而这一切的目标就是使得1.1节中我们所确定的指数损失函数最小。
即(6)。式中的m表示的是第m轮,也就是第m个人在推断的过程中。而总共人数可能是多于m个人的。
当中的Hm(X)则为:(7)。
代入(6)式中。那么(6)式就变成了(8)
当中(9)。Wmi就是第m轮中训练样本的权重(后面会具体介绍)。它和我们即将要求的αm和hm无关,他仅仅和前一轮形成的强分类器Hm-1(X)和样本标签f(xi)有关,所以这里的最小化中我们能够将它看成常数。
首先,我们要求hm(X)。也就是形成第m个人的价值观。(10)。
em是分类误差率。
也就是这第m个人是想去解决当前的问题,而且偏向于解决那些前人难以解决的问题,由于前人难以解决的问题,这些问题的权重会更大,一旦大权重的问题解决会使得(10)分类误差率更加的小。
hm(x)专业点也叫做加权训练数据分类误差率最小的基本分类器。
知道了第m轮基本分类器之后。就要求该分类器的权重αm。将式(10)代入式(8)中。式(8)就会变成
(11)。
嘎嘎,中间全是数值替换和一些简单的数学推导。细致看,对后面那个式子进行求导并使得导数为0,就得到(12)。这就是子分类器的权重。
1.3样本权重更新
事实上,1.2其中提到的非常多(深深的感受到1.2和1.3不能分开啊!),这里,再梳理一下。
由(7)式中和(9)式
,可得到
(13)。
这就是样本权重的更新,也就是我们样例中问题的更新。
1.4算法流程
输入:训练集,训练次数M。
过程:1)初始化训练数据的权值分布
2)for m = 1,2,...,M do
使用具有权值的分布Tm的训练样本数据集学习,得到基本子分类器hm(x),公式(10)前半部分。
计算hm(x)在训练数据集上的分类误差率,公式(10)后半部分。
计算hm(x)的系数,公式(12)。
更新训练数据集的权值分布(13)。
end for
3)构建基本分类器的线性组合(1)。
输出:
1.5结束语
boosting我仅仅是看看就好了。
项目其中我是不敢用的,我感觉太easy过拟合了,由于生活中非常多问题是无解的,而这个模型是想解决全部的问题,它强行希望子分类器去做它原本就不可以做到的事情,结果会让它爆炸。会让它过拟合。
从偏差-方差分解的角度来看。Boosting主要关注减少偏差,多说一句,偏差相当于预測准确性,而方差相当于预測稳定性,下图就能明显的说明偏差和方差
总之,boosting可以基于泛化能力相当弱的学习器构建出非常强的集成。比方就比較适合决策树。
boosting。
完
集成学习1-Boosting的更多相关文章
- 集成学习二: Boosting
目录 集成学习二: Boosting 引言 Adaboost Adaboost 算法 前向分步算法 前向分步算法 Boosting Tree 回归树 提升回归树 Gradient Boosting 参 ...
- 集成学习之Boosting —— XGBoost
集成学习之Boosting -- AdaBoost 集成学习之Boosting -- Gradient Boosting 集成学习之Boosting -- XGBoost Gradient Boost ...
- 集成学习之Boosting —— AdaBoost实现
集成学习之Boosting -- AdaBoost原理 集成学习之Boosting -- AdaBoost实现 AdaBoost的一般算法流程 输入: 训练数据集 \(T = \left \{(x_1 ...
- 集成学习之Boosting —— Gradient Boosting原理
集成学习之Boosting -- AdaBoost原理 集成学习之Boosting -- AdaBoost实现 集成学习之Boosting -- Gradient Boosting原理 集成学习之Bo ...
- 集成学习之Boosting —— AdaBoost原理
集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...
- 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost
目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...
- 集成学习之Boosting —— Gradient Boosting实现
Gradient Boosting的一般算法流程 初始化: \(f_0(x) = \mathop{\arg\min}\limits_\gamma \sum\limits_{i=1}^N L(y_i, ...
- 机器学习——集成学习之Boosting
整理自: https://blog.csdn.net/woaidapaopao/article/details/77806273?locationnum=9&fps=1 AdaBoost GB ...
- 集成学习---bagging and boosting
作为集成学习的二个方法,其实bagging和boosting的实现比较容易理解,但是理论证明比较费力.下面首先介绍这两种方法. 所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升 ...
- 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)
一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...
随机推荐
- 微信小程序开发教程(一)准备
1.成为微信公众平台开发者 成为微信公众平台的开发者,是小程序开发的首要条件.只有成为微信公众平台的开发者,才可以使用公众平台的各种开发接口.如果你已经是开发者,则可以跳过本章. ①.进入微信公众平台 ...
- [HDU5739]Fantasia(圆方树DP)
题意:给一张无向点带有权无向图.定义连通图的权值为图中各点权的乘积,图的权值为其包含的各连通图的权和.设z_i为删除i点后图的权值,求$S = (\sum\limits_{i=1}^{n}i\cdot ...
- url参数的获取
方法 function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&am ...
- angular2学习资源汇总
文档博客书籍类 官方网站: https://angular.io 中文站点: https://angular.cn Victor的blog(Victor是Angular路由模块的作者): https: ...
- html5页面中 触发 拨打电话、发短信 的方式
<a href="tel:18688888888">拨号</a> <a href="sms:18688888888">发短信 ...
- MySQL第三方客户端工具
如前所述,MySQL是一个基于客户机--服务器的DBMS,因此,为了使用MySQl,你需要有一个客户机软件给MySQL提供要执行的命令.即你需要一个编写和测试MySQL脚本的工具. 1.MySQL命令 ...
- go/golang init()方法的调用
go/golang main() init()方法的调用 u011156212 · 2015-10-20 13:00:05 · 9965 次点击 · 预计阅读时间 1 分钟 · 27分钟之前 开始浏览 ...
- Redis 命令一
Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客户端.Redis 客户端在我们之前下载的的 redis 的安装包中. 1.Redis 客户 ...
- Coincidence (动态规划求最长公共子序列)(王道)
题目描述: Find a longest common subsequence of two strings. 输入: First and second line of each input case ...
- windowsclient开发--使用、屏蔽一些快捷键
每一个windowsclient都有自己的一些快捷键,有的是windows系统提供的. 今天就要与大家分享一下.在windowsclient开发过程中对按键的处理. ESC按键 Duilib这个库中, ...