集成学习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(增强集成学习):集成多个模型,每个 ...
随机推荐
- Linux Shell 量的自增
Linux Shell 中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法.我所知道的,bash中,目前有五种方法:1. i=`expr $i + 1`;2. let i+=1;3. ( ...
- Java中应用多线程的场景?
最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程 ...
- 某dalao贼快的hash?
#include<map> #include<cstdio> #include<iostream> #include<ext/pb_ds/assoc_cont ...
- 【2-SAT】Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) D. Innokenty and a Football League
先反复地扫(不超过n次),把所有可以确定唯一取法的给确定下来. 然后对于剩下的不能确定的,跑2-SAT.输出可行解时,对于a和¬a,如果a所在的强连通分量序号在¬a之前,则取a,否则不取a.如果a和¬ ...
- 【数论】【欧拉函数】【筛法求素数】【乘法逆元】【快速幂取模】bzoj2186 [Sdoi2008]沙拉公主的困惑
http://www.cnblogs.com/BLADEVIL/p/3490321.html http://www.cnblogs.com/zyfzyf/p/3997986.html 翻了翻题解,这两 ...
- 【kmp算法】bzoj1355 [Baltic2009]Radio Transmission
引用题解:http://blog.csdn.net/wyfcyx_forever/article/details/40347425 #include<cstdio> #include< ...
- python3开发进阶-Django视图(View)的常见用法
阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...
- 最新Mac安装CocoaPods详细教程及各种坑解决办法
网上有很多教程,但要么内容很老,要么不详细,要么各种坑的情况没写.最近买新电脑了,正好要走一遍这些流程,所以写下次教程. 一.安装RVM及更新Ruby 安装RVM的目的是为了更新Ruby,如果你的Ru ...
- 表或视图不存在 Hibernate Oracle
曾经运行一个别人写的程序,之前连的别人的机器的数据,后来我把数据导入到本地数据库中运行,出错,如下:Hibernate: select sum(rdb_alert_0_.EVENT_COUNT) as ...
- JavaScript:this是什么
JavaScript:this是什么? 定义:this是包含它的函数作为方法被调用时所属的对象. 说明:这句话有点咬嘴,但一个多余的字也没有,定义非常准确,我们可以分3部分来理解它! 1.包含它的函数 ...