一、基于数据集多重抽样的分类器
首先什么是元算法?元算法是对其他算法进行组合的一种方式。我们可以将不同的分类器组合起来,而这种组合结果被称为集成方法(ensemble method)或者元算法(meta_algorithm)。使用集成方法时会有多种形式:可以使不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。
1、bagging:基于数据随机重抽样的分类器构建方法
自举汇聚法(bootstrap aggregating),也称为bagging方法,是在原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原始数据集的大小相等。每个数据集都是通过在原始数据集中随机选择一个样本来进行替换而得到的。这里的替换就意味着可以多次地选择同一样本。这一性质就允许新数据集中可以有重复的值,而原始数据集的某些值在心机和中则不再出现。
在S个数据集建好之后,将某个学习算法分别作用于每个数据集就得到了S个分类器。当我们要对新数据进行分类时,就可以应用这S个分类器进行分类,与此同时,选择分类器投票结果中最多的累呗最为最后的分类结果。
更先进的bagging方法还有随机森林(random forest).
2、boosting
boosting是一种与bagging很类似的技术。不论是在boosting还是bagging当中,所使用的多个分类器的类型都是一致的。但是在bagging中,不同的分类器是通过穿行训练而获得的,每个新分类器都根据已训练处的分类器的性能来进行训练。而boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。由于boosting分类的结果是居于所有分类器的加权求和结果的,因此boosting与bagging不太一样。bagging中的分类器权重是相等的,而boosting中的分类器权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。
boosting方法拥有多个版本,但最流行的是个版本是AdaBoosting。
二、AdaBoost算法的基本理论
1、 AdaBoost的一般流程
(1)收集数据:可以使用任意方法。
(2)准备数据:一览与所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,之前所学的任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。
补充:弱分类器和强分类器
分类是数据挖掘的一种非常重要的方法。分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型(即我们通常所说的分类器(Classifier))。该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测。总之,分类器是数据挖掘中对样本进行分类的方法的统称,包含决策树、逻辑回归、朴素贝叶斯、神经网络等算法。
简而言之,分类器的强弱是其分类能力的一种描述。其实就是字面意思。“弱”意味着分类器的性能比随机猜测要略好,但是也不会好太多。能够迅速正确的识别的过程就是强分类器,而易错的则是弱分类器。强分类器可以由多个弱分类器组成。在二分类情况下弱分类器的错误率会高于50%,而“强”分类器的错误率将会低很多。
(3)分析数据:可以使用任意方法。
(4)训练算法:AdaBoost大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。
(5)测试算法:计算分类的错误率。
(6)使用算法:同SVM一样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别的场合,那么就要像对类SVM中的做法一样对AdaBoost进行修改。
2、训练算法:基于错误提升分类器的性能
AdaBoost是adaptive boosting(自适应增强)的缩写,其运行过程如下:训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会