zoukankan      html  css  js  c++  java
  • 机器学习读书笔记(五)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是简单,有效。

  • 相关阅读:
    Git常用命令大全
    前端开发常用正则表达式
    如何让360、遨游、猎豹等双核浏览器默认以webkit内核渲染网页?
    IE如何兼容placeholder属性
    利用sublime的snippet功能快速创建代码段
    浏览器内核总结
    display:inline-block引发的间隙问题解决办法
    常用的CSSreset整理
    input输入框的border-radius属性在IE8下的完美兼容
    详细讲解Android中的AbsListView的源码
  • 原文地址:https://www.cnblogs.com/zcjcsl/p/9266178.html
Copyright © 2011-2022 走看看