bootstrap, boosting, bagging 几种方法的联系
http://blog.csdn.net/jlei_apple/article/details/8168856
这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jackknife, bagging, boosting, random forest 都有介绍,以下是搜索得到的原文,没找到博客作者的地址,
在这里致谢作者的研究。
一并列出一些找到的介绍boosting算法的资源:
(1)视频讲义,介绍boosting算法,主要介绍AdaBoosing http://videolectures.net/mlss05us_schapire_b/
(2) 在这个网站的资源项里列出了对于boosting算法来源介绍的几篇文章,可以下载: http://www.boosting.org/tutorials
(3) 一个博客介绍了许多视觉中常用算法,作者的实验和理解,这里附录的链接是关于使用opencv进行人脸检测的过程和代码,可以帮助理解训练过程是如何完成的:
http://www.cnblogs.com/tornadomeet/archive/2012/03/28/2420936.html
(4)这里是一个台湾的电子期刊上关于AdaBoost的介绍: http://140.113.87.114/cvrc/edm/vol_6/tech1.htm
( 一 )
“
Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting
这些术语,我经常搞混淆,现在把它们放在一起,以示区别。(部分文字来自网络,由于是之前记的笔记,忘记来源了,特此向作者抱歉)
Bootstraping: 名字来自成语“pull up by your own bootstraps”,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想和基本步骤如下:
(1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。
(2) 根据抽出的样本计算给定的统计量T。
(3) 重复上述N次(一般大于1000),得到N个统计量T。
(4) 计算上述N个统计量T的样本方差,得到统计量的方差。
应该说Bootstrap是现代统计学较为流行的一种统计方法,在小样本时效果很好。通过方差的估计可以构造置信区间等,其运用范围得到进一步延伸。
Jackknife: 和上面要介绍的Bootstrap功能类似,只是有一点细节不一样,即每次从样本中抽样时候只是去除几个样本(而不是抽样),就像小刀一样割去一部分。
(pku, sewm,shinningmonster.)
============================================================================================================================
下列方法都是上述Bootstraping思想的一种应用。
bagging:bootstrap
aggregating的缩写。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以
出现多次或根本不出现,训练之后可得到一个预测函数序列h_1,⋯ ⋯h_n
,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。
Boosting)。初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就
是让学习算法在后续的学习中集中对比较难的训练例进行学习,从而得到一个预测函数序列h_1,⋯, h_m ,
其中h_i也有一定的权重,预测效果好的预测函数权重较大,反之较小。最终的预测函数H对分类问题采用有权重的投票方式,对回归问题采用加权平均的方法对
新示例进行判别。
Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。Bagging的训练集的选择是随机的,各轮训练集之间相互独
立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重
的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法。Bagging
可通过并行训练节省大量时间开销。
Boosting思想的一种改进型AdaBoost方法在邮件过滤、文本分类方面都有很好的性能。
gradient boosting(又叫Mart,
Treenet):Boosting是一种思想,Gradient
Boosting是一种实现Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。损失函数(loss
function)描述的是模型的不靠谱程度,损失函数越大,则说明模型越容易出错。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的
改进,而最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。
Rand forest: 随机森林,顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随
机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该
属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。 在建立每一棵决策树的过程中,有两点需要注意 -
采样与完全分裂。首先是两个随机采样的过程,random
forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那
么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M
个feature中,选择m个(m <<
M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一
个分类。一般很多的决策树算法都一个重要的步骤 -
剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。
按这种算法得到的随机森林中的每一棵都是很弱的,但是大家组合起来就很厉害了。可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家
(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数据),
可以用不同的角度去看待它,最终由各个专家,投票得到结果。
Rand forest与bagging的区别:1). Rand
forest是选与输入样本的数目相同多的次数(可能一个样本会被选取多次,同时也会造成一些样本不会被选取到),而bagging一般选取比输入样本的
数目少的样本;2). bagging是用全部特征来得到分类器,而rand forest是需要从全部特征中选取其中的一部分来训练得到分类器;
一般Rand forest效果比bagging效果好!
“
( 二 )原文地址: http://blog.sina.com.cn/s/blog_5dd2e9270100c8ko.html
“
(ProbablyApproximately CorrectK)。Kearns和Valiant指出,在PAC学习模型中,若存在一
个多项式
级的学习算法来识别一组概念,并且识别正确率很高,那么这组概念是强可学习的;而如果学习算法识别一组概念的正确率仅比随机猜测略好,那么这组概念是弱可
学习的。他们提出了弱学习算法与强学习算法的等价性问题,即是否可以将弱学习算法提升成强学习算法。如果两者等价,那么在学习概念时,只要找到一个比随机
猜测略好的弱学习算法,就可以将其提升为强学习算法,而不必直接去找通常情况下很难获得的强学习算法。
从初始的训练集中随机取出的n个训练倒组成,初始训练例在某轮训练集中可以出现多次或根本不出现训练之后可得到一个预测函数序列h.,⋯⋯h
最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。
训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较
难的训练铡进行学习,从而得到一个预测函数序列h一⋯h其中h.也有一定的权重,预测效果好的预测函数权重较大,反之较小。最终的预测函数H对分类问题采
用有权重的投票方式,对回归问题采用加权平均的方法对新示例进行判别。(类似Bagging方法,但是训练是串行进行的,第k个分类器训练时关注对前k-
1分类器中错分的文档,即不是随机取,而是加大取这些文档的概率).
独立,而Boostlng的训练集的选择是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而
Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的
学习方法。Bagging可通过并行训练节省大量时间开销。 bagging和boosting都可以有效地提高分类的准确性。在大多数数据集
中,boosting的准确性比bagging高。在有些数据集中,boosting会引起退化。---Overfit
文本分类中使用的投票方法(Voting,也叫组合分类器)就是一种典型的集成机器学习方法。它通过组合多个弱分类器来得到一个强分类器,包括
Bagging和Boosting两种方式,二者的主要区别是取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此
Boosting的分类精度要优于Bagging。投票分类方法虽然分类精度较高,但训练时间较长。Boosting思想的一种改进型AdaBoost方
法在邮件过滤、文本分类方面都有很好的性能。
bootstrap, boosting, bagging 几种方法的联系的更多相关文章
- 转载:bootstrap, boosting, bagging 几种方法的联系
转:http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, ja ...
- (转)关于bootstrap, boosting, bagging,Rand forest
转自:https://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, ...
- bootstrap, boosting, bagging
介绍boosting算法的资源: 视频讲义.介绍boosting算法,主要介绍AdaBoosing http://videolectures.net/mlss05us_schapire_b/ 在这个站 ...
- bootstrap boosting bagging辨析
http://blog.csdn.net/jlei_apple/article/details/8168856
- Boosting&Bagging
Boosting&Bagging 集成学习方法不是单独的一个机器学习算法,而是通过构建多个机器学习算法来达到一个强学习器.集成学习可以用来进行分类,回归,特征选取和异常点检测等.随机森林算法就 ...
- WPF程序将DLL嵌入到EXE的两种方法
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...
- 运行jar应用程序引用其他jar包的四种方法
转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
- Sass 编译的几种方法
常常有人会问,使用 Sass 进行开发,那么是不是直接通过“<link>”引用“.scss”或“.sass”文件呢? 那么这里告诉大家,在项目中还是引用“.css”文件,Sass 只不过是 ...
随机推荐
- CSS3新添加的选择器
---条件选择器:--- .ccc[cusid*= value] { backgroud-color:#0094ff; } //表示使用了class="ccc"元素自定义属性cus ...
- Bundle文件的创建和使用(一)
经常会出现某个需求:将自己的模块或者开放类,封装成静态库给其他人提供方便的调用. 但是当你的模块中需要大量使用xib,图片,音频或者其他资源文件时,无法添加至静态库.这个时候就需要将一些资源文件封装至 ...
- 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项
.NET MVC3 几种返回 JSON 对象的方式和注意事项 转自:http://blog.csdn.net/xxj_jing/article/details/7382589 引言在用 .NET MV ...
- Asp.net MVC23 使用Areas功能的常见错误
一般WEB项目都会不同的页面区域,如:用户前台.用户后台.管理员后台. 访问的URL: 用户前台:www.domain.com/home/index 用户后台:www.domain.com/admin ...
- 7Z命令行
7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za <command> [<switch ...
- Invitation Cards---poj1511(spfa)
题目链接:http://poj.org/problem?id=1511 有向图有n个点m条边,求点1到其他n-1个点的最短距离和+其他点到点1的最小距离和: 和poj3268一样,但是本题的数据范围较 ...
- Block作为property属性实现页面之间传值(代替Delegate代理与协议结合的方法)
需求:在ViewController中,点击Button,push到下一个页面NextViewController,在NextViewController的输入框TextField中输入一串字符,返回 ...
- 通过css3实现开关选择按钮
通过css属性实现如图所示按钮 要点:通过checkbox选中与否的状态与兄弟选择器实现相关功能 1.设置开关大小并设置定位方式为relative .swift-btn { positio ...
- 微信公众平台开发(112) 自动更新微信access token
关键字:Memcache access_token 更新 存储 7200 本文介绍如何存储及更新 access token的方法. 一.Access Token access_token是公众号的全局 ...
- ThreadLocal 多线程并发,数据隔离
ThreadLocal: 创建一个线程本地变量. 本质:在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本. 优点:既实现多线程并发,游兼顾数据的安全性. 区别:Synchro ...