zoukankan      html  css  js  c++  java
  • 提升算法(1)

    对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多,提升法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合弱分类器构成强分类器。大多数提升法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。

    关于AdaBoost的做法是,1、提高前一轮弱分类器错误分类样本的权值,降低正确分类样本的权值,从而以权值增大来获取对弱分类器更大的关注。2、关于分类结果的问题,AdaBoost采取加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起到作用更大,减少分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

     AdaBoost算法:

    输入:训练数据集,其中,弱学习算法

    输出:最终分类器G(x)

    (1) 初始化训练数据的权值分布(设定基分类器对每条训练数据的权值)

    (2) 对m=1,2,...,M

    1) 使用具有权值分布Dm的训练数据集学习,得到基本分类器:

    2) 计算Gm(x)在训练数据集上的分类误差率

    3) 计算Gm(x)的系数(计算每个基分类器的系数,用以进一步加权求和得到sign分类结果)

    (这里的log为ln)

    4) 更新训练数据集的权值分布(用以更新数据集的权值w)

    这里,Zm是规范化因子

    以上部分的为各实例xi由基分类器判别得到的所属类别,那么在基分类器正确分类的时候值为1,错误分类的时候值为-1.

    (3) 构建基本分类器的线性组合(构造最终的分类)

    得到最终分类器:

     AdaBoost算法的说明:

     AdaBoost反复学习基本分类器,在每一轮m=1,2,...,M顺序执行如下操作:

    1)使用当前分布Dm加权的训练数据集,学习基本分类器Gm(x)

    2)计算基本分类器Gm(x)在加权训练数据集上的分类误差率:

    其中。这说明Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和,由此可得数据权值分布Dm与基本分类器Gm(x)的分类误差率的关系。

    3)计算基本分类器Gm(x)的系数am,表示Gm(x)在最终分类器的重要性,由am的计算公式可以发现,当em小于0.5的时候am大于0,反之亦然。因而分类误差率越小的基本分类器在最终分类器中起到的作用越大。

    4)通过更新训练数据的权值分布来为下一轮迭代做输入,表示如下:

    表示基分类器的返回判断结果。

    从而被基分类器Gm(x)误分类样本的权值会得以扩大,被正确分类样本的权值会缩小。误分类样本在下一轮学习中起到更大作用,以改变训练数据权值分布,来使训练数据在基分类器的学习中起不同的作用。

    在最终的分类过程中,f(x)的符号决定实例分类,通过基分类器的线性组合构建最终分类器。

    AdaBoost最基本的性质是它能在学习过程中不断减少训练误差,即在训练数据集上的分类误差率,关于这个问题有如下定理:

    AdaBoost的训练误差界:

    其中I为指示函数,当满足条件时为1,否则为0;

    二分类问题AdaBoost的训练误差界:

  • 相关阅读:
    浅析椭圆曲线加密算法(ECC)
    比特币原理——交易与UTXO
    比特币白皮书-学习笔记
    python SMTP邮件发送
    Linux : Forks()
    IS: [=Burp Suite No.4=]Burp Suite /Scanner/ and /Intruder/
    IS: [=Burp Suite No.3=]Burp Suite /Target/ and /Spider/
    IS: [=Burp Suite No.2=]Burp Suite SSL and advanced options
    IS: [=Burp Suite No.1=]Burp Suite install and configuration
    IS: WMIC command use
  • 原文地址:https://www.cnblogs.com/xiaochouk/p/8094313.html
Copyright © 2011-2022 走看看