声明:本文用到的代码均来自于PRTools(http://www.prtools.org)模式识别工具箱,并以matlab软件进行实验。
(1)在介绍Bagging和Boosting算法之前,首先要简单了解什么是集成学习?
集成学习(Ensemble Learning)是目前模式识别与机器学习中常用的一种学习算法,是使用一系列的学习器(分类器)通过某种规则(投票法、加权投票等)将各分类器的学习结果进行融合,达到比单学习器识别效果更好地目的。
可以打一个简单的比喻,如果我们将“学习器”看做是一个“人”,现在我们需要进行的任务是识别汉字。一个人的识别内容终归是有限的,但是如果我们现在利用三个人来识别,同一个字当A识别错误时,B、C识别正确,最终以少数服从多数的原则取BC的识别结果,那么相比较只用A一个人来识别汉字的情况,我们的准确率会大大提升。当然也许这里有人会存在疑问:万一A本身是一个很有文化的人,B是一个不识字的人,那么叫他们两个一起识别汉字岂不是会拉低整体识别率么?这里也就牵扯到了学习器与学习器之间差异性度量的话题,这个话题在本文中不详细讲述,有兴趣的朋友可以自己查询了解,最白话的解释就是:参与集成学习的学习器们需要具有一定的差异值,既不能完全相同,也不能差异的太大。
在浅显的理解何为集成学习之后,我们来讲Bagging和Boosting,事实上这是两种非常重要的集成方法。
(2)Bagging
该算法在模式识别工具箱中的使用方法为:
W = baggingc (A,CLASSF,N,ACLASSF,T)
INPUT
A Training dataset.
CLASSF The base classifier (default: nmc)
N Number of base classifiers to train (default: 100)
ACLASSF Aggregating classifier (default: meanc), []