bootstrap, boosting, bagging

介绍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

1 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功能类似,只是有一点细节不一样,即每次从样本中抽样时候只是去除几个样本(而不是抽样),就像小刀一样割去一部分。

==============================================================

下列方法都是上述Bootstraping思想的一种应用。

bagging:bootstrap aggregating的缩写。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列h_1,⋯ ⋯h_n ,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。

[训练R个分类器f_i,分类器之间其他相同就是参数不同。其中f_i是通过从训练集合中(N篇文档)随机取(取后放回)N次文档构成的训练集合训练得到的。对于新文档d,用这R个分类器去分类,得到的最多的那个类别作为d的最终类别。]

boosting: 其中主要的是AdaBoost(Adaptive Boosting)。初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较难的训练例进行学习,从而得到一个预测函数序列h_1,⋯, h_m , 其中h_i也有一定的权重,预测效果好的预测函数权重较大,反之较小。最终的预测函数H对分类问题采用有权重的投票方式,对回归问题采用加权平均的方法对新示例进行判别。
(类似Bagging方法,但是训练是串行进行的,第k个分类器训练时关注对前k-1分类器中错分的文档,即不是随机取,而是加大取这些文档的概率。)

Bagging与Boosting的区别:二者的主要区别是取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。
bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。在有些数据集中,boosting会引起退化— Overfit
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效果好!

2 bootstrps bagging boosting

bootstrps bagging boosting这几个概念经常用到,现仔细学习了一下:
他们都属于集成学习方法,(如:Bagging,Boosting,Stacking),将训练的学习器集成在一起,原理来源于PAC学习模型(ProbablyApproximately CorrectK)。Kearns和Valiant指出,在PAC学习模型中,若存在一个多项式级的学习算法来识别一组概念,并且识别正确率很高,那么这组概念是强可学习的;而如果学习算法识别一组概念的正确率仅比随机猜测略好,那么这组概念是弱可学习的。他们提出了弱学习算法与强学习算法的等价性问题,即是否可以将弱学习算法提升成强学习算法。如果两者等价,那么在学习概念时,只要找到一个比随机猜测略好的弱学习算法,就可以将其提升为强学习算法,而不必直接去找通常情况下很难获得的强学习算法。

bootstraps:名字来自成语“pull up by your ownbootstraps”,意思是依靠你自己的资源,它是一种有放回的抽样方法,学习中还发现有种叫jackknife的方法,它是每一次移除一个样本。

bagging:bootstrapaggregating的缩写。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练倒组成,初始训练例在某轮训练集中可以出现多次或根本不出现训练之后可得到一个预测函数序列h.,⋯⋯h 最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。
–(训练R个分类器fi,分类器之间其他相同就是参数不同。其中fi是通过从训练集合中(N篇文档)随机取(取后放回)N次文档构成的训练集合训练得到的。–对于新文档d,用这R个分类器去分类,得到的最多的那个类别作为d的最终类别.)

boosting:其中主要的是AdaBoost(Adaptive Boosting)。初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较难的训练铡进行学习,从而得到一个预测函数序列h一⋯h其中h.也有一定的权重,预测效果好的预测函数权重较大,反之较小。最终的预测函数H对分类问题采用有权重的投票方式,对回归问题采用加权平均的方法对新示例进行判别。(类似Bagging方法,但是训练是串行进行的,第k个分类器训练时关注对前k-1分类器中错分的文档,即不是随机取,而是加大取这些文档的概率).

Bagging与Boosting的区别:在于Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的训练集的选择是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。   

bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。在有些数据集中,boosting会引起退化。—Overfit

文本分类中使用的投票方法(Voting,也叫组合分类器)就是一种典型的集成机器学习方法。它通过组合多个弱分类器来得到一个强分类器,包括Bagging和Boosting两种方式,二者的主要区别是取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。投票分类方法虽然分类精度较高,但训练时间较长。Boosting思想的一种改进型AdaBoost方法在邮件过滤、文本分类方面都有很好的性能。

参考文献:
1. http://blog.sina.com.cn/s/blog_5dd2e9270100c8ko.html
2. http://blog.csdn.net/jlei_apple/article/details/8168856
3. http://www.xuebuyuan.com/1200532.html

时间: 2024-10-31 19:01:11

bootstrap, boosting, bagging的相关文章

机器学习中Bagging和Boosting的区别

       Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法.        首先介绍Bootstraping,即自助法:它是一种有放回的抽样方法(可能抽到重复的样本). 1. Bagging (bootstrap aggregating) Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取

人工智能之机器学习算法体系汇总

1.人工智能之机器学习体系汇总 2.人工智能相关趋势分析 2.1.人工智能再次登上历史舞台 2.2.Python才是王道 2.3.深度学习趋势大热 2.4.中国更爱深度学习 3.结语 参加完2017CCAI,听完各位专家的演讲后受益匪浅.立志写"人工智能之机器学习"系列,此为开篇,主要梳理了机器学习方法体系,人工智能相关趋势,Python与机器学习,以及结尾的一点感恩. Github开源机器学习系列文章及算法源码 1.人工智能之机器学习体系汇总 [直接上干货]此处梳理出面向人工智能的机

独家 | 一文读懂集成学习(附学习资源)

集成算法(Ensemble Algorithms)综述 严格意义上来说,这不算是一种机器学习算法,而更像是一种优化手段或者策略,它通常是结合多个简单的弱机器学习算法,去做更可靠的决策.有人把它称为机器学习中的"屠龙刀",非常万能且有效,集成模型是一种能在各种的机器学习任务上提高准确率的强有力技术,集成算法往往是很多数据竞赛关键的一步,能够很好地提升算法的性能.哲学思想为"三个臭皮匠赛过诸葛亮".拿分类问题举个例,直观的理解,就是单个分类器的分类是可能出错,不可靠的,

Matlab分类器大全

train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归(多项式MultiNomial logistic Regression) Factor = mnrfit(train_data, train_label); Scores = mnrval(Factor, test_data); scores是语义向量(概率输出).对高维特征,吃不消. 2.随机森林分

从决策树到随机森林:树型算法的原理与实现

在本篇文章中,我们将会介绍决策树的数学细节(以及各种 Python 示例)及其优缺点.你们将会发现它们是很简单的,并且这些内容是有助于理解的.然而,与最好的监督学习方法相比,它们通常是没有竞争力的.为了克服决策树的各种缺点,我们将会聚焦于各种概念(附有 Python 实例),比如自助聚集或袋装(Bootstrap Aggregating or Bagging),还有随机森林(Random Forests).另一种广泛使用的提升方法会在以后进行单独讨论.每种方法都包括生成多种树,这些树被联合起来,

【干货】机器学习常用 35 大算法盘点(附思维导图)

在本文中,我将提供两种分类机器学习算法的方法.一是根据学习方式分类,二是根据类似的形式或功能分类.这两种方法都很有用,不过,本文将侧重后者,也就是根据类似的形式或功能分类.在阅读完本文以后,你将会对监督学习中最受欢迎的机器学习算法,以及它们彼此之间的关系有一个比较深刻的了解. 事先说明一点,我没有涵盖机器学习特殊子领域的算法,比如计算智能(进化算法等).计算机视觉(CV).自然语言处理(NLP).推荐系统.强化学习和图模型. 下面是一张算法思维导图,点击放大查看.   从学习方式分类 算法对一个

干货|从决策树到随机森林:树型算法的实现原理与Python 示例

基于树(Tree based)的学习算法在数据科学竞赛中是相当常见的.这些算法给预测模型赋予了准确性.稳定性以及易解释性.和线性模型不同,它们对非线性关系也能进行很好的映射.常见的基于树的模型有:决策树.随机森林和提升树. 在本篇文章中,我们将会介绍决策树的数学细节(以及各种 Python 示例)及其优缺点.你们将会发现它们很简单,并且这些内容有助于理解.然而,与最好的监督学习方法相比,它们通常是没有竞争力的.为了克服决策树的各种缺点,我们将会聚焦于各种概念(附有 Python 实例),比如自助

独家 | 一文读懂Adaboost

本文是数据派研究部"集成学习月"的第二篇文章,本月将陆续发布关于集中学习的话题内容,月末将有答题互动活动来赢奖,欢迎随时留言讨论相关话题. 引言 在正儿八经地介绍集成学习的内容之前,我们想先介绍一下Kaggle竞赛,这是我们要介绍集成学习的初衷之一.Kaggle(https://www.kaggle.com)是由安东尼·戈德布卢姆在2010年创办的一个数据建模和数据分析平台,其目标就是使数据科学成为一项运动 .这个平台对所有的注册用户开放,企业和研究者可以在上面发布自己的数据并描述自己

机器学习(二)--- 分类算法详解

感觉狼厂有些把机器学习和数据挖掘神话了,机器学习.数据挖掘的能力其实是有边界的.机器学习.数据挖掘永远是给大公司的业务锦上添花的东西,它可以帮助公司赚更多的钱,却不能帮助公司在与其他公司的竞争中取得领先优势,所以小公司招聘数据挖掘/机器学习不是为了装逼就是在自寻死路.可是相比Java和C++语言开发来说,机器学习/数据挖掘确实是新一些老人占的坑少一些,而且可以经常接触一些新的东西.还是赶紧再次抓住机会集中的再总结一下吧,不能再拖拖拉拉了.  其实数据挖掘的主要任务是分类.聚类.关联分析.预测.时