机器学习读书笔记(五)AdaBoost

一、Boosting算法

.Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合为一个分类器的方法,即boostrapping方法和bagging方法。我们先简要介绍一下bootstrapping方法和bagging方法。

1 bootstrapping方法的主要步骤

1)重复地从一个样本集合D中采样n个样本

2)针对每次采样的子样本集,进行统计学习,获得假设Hi

3)将若干个假设进行组合,形成最终的假设Hfinal

4)将最终的假设用于具体的分类任务

2 bagging方法

自举汇聚法,也称为bagging方法。Bagging对训练数据采用自举采样,即有放回地采样数据,主要思想:

1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本。共进行k轮抽取,得到k个训练集

2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或方法,我们可以根据具体问题采用不同的分类,如决策树等)

3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果

3 boosting算法及adaboost算法

但是,上述这两种方法,都只是将分类器进行简单的组合,实际上,并没有发挥出分类器组合的威力来,直到Boosting系列算法的出现。

早期的boosting算法,其主要过程如下

1)从样本整体集合D中,不放回的随机抽样nn 个样本,得到集合 D1,训练弱分类器C1

2)从样本整体集合D中,抽取 nn 个样本,其中合并进一半被 C1 分类错误的样本。得到样本集合 D2,训练弱分类器C2

3)抽取D样本集合中,C1 和 C2 分类不一致样本,组成D3,训练弱分类器C3

4)用三个分类器做投票,得到最后分类结果

1995年,Freund and schapire提出了现在的adaboost算法,其主要框架可以描述为:

1)循环迭代多次,更新样本分布,寻找当前分布下的最优弱分类器,计算弱分类器误差率

2)聚合多次训练的弱分类器

二、adaboost算法

Adaboost是一种比较有特点的算法,可以总结如下:

1)每次迭代改变的是样本的分布,而不是重复采样(re weight)

2)样本分布的改变取决于样本是否被正确分类

总是分类正确的样本权值低

总是分类错误的样本权值高(通常是边界附近的样本)

3)最终的结果是弱分类器的加权组合

权值表示该弱分类器的性能

简单来说,Adaboost有很多优点:

1)adaboost是一种有很高精度的分类器

2)可以使用各种方法构建子分类器,adaboost算法提供的是框架

3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单

4)简单,不用做特征筛选

5)不用担心过拟合!

总之:adaboost是简单,有效。

原文地址:https://www.cnblogs.com/zcjcsl/p/9266178.html