集成方法
集成方法就是通过组合多个分类器的分类结果,获得比简单的分类器更好的分类结果。
使用集成方法的多种形式:
1)可以是不同算法的集成
2)可以是同一算法在不同设置下的集成
3)数据集不同部分分配给不同分类器之后的集成
下面介绍同一种分类器多个不同实例的两种计算方法(基于数据随机重抽样的分类器构建方法):
bagging(自举汇聚法)
Bagging是在原始数据集选择S次后得到S个数据集的技术。每个数据集都是通过该在原始数据及中随机选择一个样本来进行替换而得到的(这里的意思是从原始集合中随机选择一个样本,然后随机选择一个样本来代替这个样本)。新数据集和原数据集的大小相等。这就意味着可以多次的选择同一个样本,即允许新数据集中可以有重复的值,而原始数据集中的某些值再新数据集中则不再出现。
在S个数据集划分好之后,将某个学习算法分别作用于每个数据集,就得到了S个分类器。当我们要对新数据进行分类时,就可以应用这S个分类器进行分类。选择分类器投票结果最多的类别作为最后的分类结果。
boosting
boosting与bagging的区别:
bagging:不同的分类器通过串行训练获得,每个新分类器都根据已训练出的分类的性能来进行训练。bagging中分类器的权重是相等的,
boosting:集中关注被已有分类器错分的那些数据来获得新的分类器。基于所有分类器的加权求和结果,分类器的权重不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。
AdaBoost
AdaBoost是adaptive boosting(自适应boosting)的缩写。其过程如下:
训练数据中的每个样本赋予一个权重,这些权重构成了向量D。一开始,这些权重都初始化为相等的值。首先,在训练数据上训练出一个弱分类器并计算该分类器的错误率;然后,在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重(第一次分对的样本的权重降低,分错的样本的权重增加)。最后,为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器分配一个权重值alpha,这些alpha是基于每个弱分类器的错误率进行计算的。其中,错误率的定义为:
alpha计算公式如下:
计算出alpha值之后,可以对权重向量D进行更新,以使得那些正确分类的样本的权重降低而错分样本的权重升高。D的计算方法如下:
正确样本的权重更新:
而如果某个样本被错分,那么该样本的权重更改为:
在计算出D之后,AdaBoost又开始进入下一轮迭代。AdaBoost算法会不断重复训练和调整权重的过程,直到训练错误率为0或者弱分类器的数目达到用户的指定值为止。
优缺点及适用范围
优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。
缺点:对离群点敏感
适用数据类型:数值型和标称型数据