元算法:将不同的分类器组合起来,通过组合多个学习器来完成学习任务,这种组合结果被称为集成方法或者元算法
7.1 基于数据集多重抽样的分类器
1、Bagging
Bagging即自举汇聚法(bootstrap aggregating),Bagging对训练数据采用自举采样(boostrap sampling),即有放回地采样数据,是在从原始数据集选择S次后得到S个新数据集的一种技术。每个数据集都是通过在原始数据集中随机选择一个样本来进行替换而得到。
每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
每次使用一个训练集得到一个模型,k个训练集共得到k个模型。
对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
2、Boosting
Boosting是采用重赋权(re-weighting)法迭代地训练基分类器。通过集中关注被已有分类器错分的那些数据来获得新的分类器。
每一轮的训练数据样本赋予一个权重,并且每一轮样本的权值分布依赖上一轮的分类结果。
基分类器之间采用序列式的线性加权方式进行组合。
AdaBoost算法是基于Boosting思想的机器学习算法,AdaBoost是adaptive boosting(自适应boosting)的缩写。
AdaBoost的一般流程:
(1) 收集数据:可以使用任意方法。
(2) 准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可
以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,第2章到第6章中的
任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。
(3) 分析数据:可以使用任意方法。
(4) 训练算法:AdaBoost的大部分时间都用在训练上,分类器将多次在同一数据集上训练
弱分类器。
(5) 测试算法:计算分类的错误率。
(6) 使用算法:同SVM一样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类
别的场合,那么就要像多类SVM中的做法一样对AdaBoost进行修改
7.2 AdaBoost:基于错误提升分类器的性能
AdaBoost运行过程:
1、计算样本权重
训练数据中的每个样本,赋予其权重,即样本权重,用向量D表示,这些权重都初始化成相等值。
2、计算错误率
利用第一个弱学习算法h1对其进行学习,学习完成后进行错误率ε的统计:
3、计算弱学习算法权重
弱学习算法也有一个权重,用向量α表示,利用错误率计算权重α: