AdaBoost是元算法中最流行的一种,也被认为是最好的监督学习的方法 。
一、元算法
元算法(meta-algorithm),也被称作集成方法(ensemble method),是对其他算法进行组合的一种方式,将不同的分类器组合起来的结果。使用集成方法时有多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。
下面介绍基于同一种分类器多个不同实例的两种计算方法bagging和boosting。
bagging(bootstrap aggregating,自举汇聚法),基于数据随机重抽样的分类器构建方法。以抽样之后又放回的方式在原始数据集中选择S个新数据集,新数据集与原始数据集的大小相等,重抽样机制允许每个新数据集中有重复的值或原始数据集中某值不出现。构建好S个数据集后,将某个学习算法分别作用与每个数据集就得到了S个分类器。当对新数据进行分类时,就可以应用这S个分类器进行分类,选择分类器投票结果中最多的类别作为最后的分类结果。
boosting(adaptive boosting,自适应boosting),与bagging类似,所使用的多个分类器的类型都是一致的。不同之处是,bagging的不同分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能来进行训练。boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器,基于所有分类器的加权求和结果的。bagging中的分类器权重是相等的,而boosting中的分类器权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。
boosting方法有多个版本,其中AdaBoost是最流程的版本。AdaBoost的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。
二、AdaBoost算法理论
AdaBoost算法示意图
AdaBoost算法基于错误提升分类器的性能,其运行过程为:
(1)训练数据中的每个样本,并赋予其一个权重(构成向量D)。一开始,这些权重都初始化成相等值。
(2)在训练数据上训练出一个弱分类器,并计算该分类器的错误率,基于错误率计算弱分类器的权重值alpha,为从所有弱分类器中得到最终的分类结果。
错误率ε的定义为: