zoukankan      html  css  js  c++  java
  • 《统计学习方法》笔记--提升方法

    就分类问题的训练而言,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易。而提升方法即从若分类器算法的学习出发,反复学习,得到一系列的弱分类器,然后通过组合,构成一个强分类器。

    当然,在这提升方法中,有两个问题需要解决:

    1. 如何在每一轮的训练中改变数据的权值或是概率分布;
    2. 如何将弱分类器组合成一个强分类器。

       

      AdaBoost算法

      提升算法中,最具有代表性的算法是AdaBoost算法

      而对提升算法中的两个问题,AdaBoost算法对第一个问题的解决方法是:提高那些在前一轮分类器被误分的样本的权值,而降低那些被正确分类的样本权值,这样就能是的在下一轮的分类学习中,更加注重那些被误分的样本。

      对于第二个问题,AdaBoost算法的解决方法是:采用加权多数表决的方法,即加大分类误差率小的弱分类器的权值,使其在表决中能起较大作用;减小分类误差率大的弱分类器的权值,使其在表决中起作用较小。

       

      AdaBoost算法流程:

      输入:训练数据集和弱学习方法;

      输出:最终分类器

    3. 初始化训练数据的权值分布(初始平均分配,D的下标和的第一个下标表示训练的轮次)

    4. 对于第m次训练,
      1. 使用具有权值分布的训练数据集学习,得到基本分类器

      1. 计算在训练数据集上分类误差率

      1. 计算的系数

      1. 更新训练数据集的权值

    5. 将上述得到的弱分类器进行线性组合

      最终得到分类器

       

      向前分步算法

      实际上Adaboost算法是向前分步算法的特例,即Adaboost算法是模型为加法模型、损失函数为指数函数、学习算法为向前分步算法时的二分类学习方法。

      向前分步算法(forward stagewise algorithm)学习的模型也是加法模型,能够从前向后,每步只学习一个基函数及其系数,进而使算法优化的复杂度得到降低。

      向前分步算法流程:

      输入:训练数据集;损失函数;基函数集合;(损失函数的形式和基函数集合都是给定的,而在这算法的流程中,是基函数的参数,是基函数的系数)    

      输出:加法模型

      (1)初始化

      (2)对于第m次训练,

      (a)极小化损失函数

      得到参数

      (b)更新

    6. 得到加法模型

       

       

       

       

       

  • 相关阅读:
    [DB] 数据库的连接
    JS leetcode 翻转字符串里的单词 题解分析
    JS leetcode 拥有最多糖果的孩子 题解分析,六一快乐。
    JS leetcode 搜索插入位置 题解分析
    JS leetcode 杨辉三角Ⅱ 题解分析
    JS leetcode 寻找数组的中心索引 题解分析
    JS leetcode 移除元素 题解分析
    JS leetcode 最大连续1的个数 题解分析
    JS leetcode 两数之和 II
    JS leetcode 反转字符串 题解分析
  • 原文地址:https://www.cnblogs.com/lincz/p/12562468.html
Copyright © 2011-2022 走看看