一、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中,不放回的随机抽样n1 < n 个样本,得到集合 D1,训练弱分类器C1
2)从样本整体集合D中,抽取 n2 < n 个样本,其中合并进一半被 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是简单,有效。