提升方法的基本思路

在概率近似正确(probably approximately correct,PAC)学习的框架中,

一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的;

一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。

Schapire后来证明强可学习与弱可学习是等价的,也就是说,在PAC学习的框架下,

一个概念是强可学习的充分必要条件是这个概念是弱可学习的。

 

对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多。

提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器。

大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。

 

对提升方法来说,有两个问题需要回答:

一是在每一轮如何改变训练数据的权值或概率分布;

二是如何将弱分类器组合成一个强分类器。

个问题,AdaBoost的做法是,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。

那些没有得到正确分类的数据,由于其权值的加大而受到后一轮的弱分类器的更大关注。于是,分类问题被一系列的弱分类器"分而治之"。

个问题,即弱分类器的组合,AdaBoost采取加权多数表决的方法。

加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,'

减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

 

AdaBoost算法

训练数据集


  1. 初始化训练数据的权值分布


  2. 对M=1,2,…,m

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

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

    计算Gm(x)的系数

    更新训练数据集的权值分布:

    Zm是规范化因子:

  3. 构建基本分类器的线性组合



AdaBoost说明:

  1. 假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,

    步能够在原始数据上学习基本分类器G1(x)

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

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

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

这里,wmi表示第m轮中第i个实例的权值.

这表明,Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和,

由此可以看出数据权值分布Dm与基本分类器Gm(x)的分类误差率的关系

3. 计算基本分类器Gm(x)的系数am。am表示Gm(x)在最终分类器中的重要性。

当em≤1/2时,am≥0,并且am随着em的减小而增大,

所以分类误差率越小的基本分类器在最终分类器中的作用越大。

4.更新训练数据的权值分布为下一轮作准备

被基本分类器Gm(x)误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小

误分类样本在下一轮学习中起更大的作用。

不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用

  1. 线性组合f(x)实现M个基本分类器的加权表决。

 

AdaBoost的例子

弱分类器由x<v或x>v产生, 其阈值v使该分类器在训练数据集上分类误差率最低.

初始化数据权值分布


对于m=1

在权值分布为D1的训练数据上,阈值v取2.5时分类误差率最低,故基本分类器为


G1(x)在训练数据集上的误差率e1=P(G1(xi)≠yi)=0.3。

计算G1(x)的系数:


更新训练数据的权值分布:


个误分类点。

对于m= 2

在权值分布为D2的训练数据上,阈值v是8.5时分类误差率最低,基本分类器为


G2(x)在训练数据集上的误差率e2=0.2143

计算a2=0.6496

更新训练数据权值分布:

个误分类点。

对于m = 3:

在权值分布为D3的训练数据上,阈值v是5.5时分类误差率最低,基本分类器为

计算a3=0.7514

更新训练数据的权值分布

D4=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)

得到:

 

 

AdaBoost算法的训练误差分析

AdaBoost算法最终分类器的训练误差界为:



这表明在此条件下AdaBoost的训练误差是以指数速率下降的

 

 

AdaBoost算法的解释

可以认为AdaBoost算法是

模型为加法模型

损失函数为指数函数

学习算法为前向分步算法

的二分类学习方法

 

加法模型

其中b(x;γm)为基函数的参数,βm是基函数的系数。

如上式所示为一加法模型。

在给定训练数据及损失函数L(Y,f(X))的条件下,学习加法模型f(x)成为经验风险极小化即损失函数极小化问题:

前向分步算法(forward stagewise algorithm)求解这一优化问题的想法是

因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,

逐步逼近优化目标函数式(8.14),那么就可以简化优化的复杂度。

就是优化如下函数:

,对m=1,2,…,M,极小化损失函数

计算得到γm ,βm

更新fm

获得加法模型

 

前向分步算法与AdaBoost

由前向分步算法可以推导出AdaBoost

AdaBoost算法是前向分歩加法算法的特例。

这时,模型是由基本分类器组成的加法模型,损失函数是指数函数。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

统计学习方法 AdaBoost的更多相关文章

  1. Adaboost算法的一个简单实现——基于《统计学习方法(李航)》第八章

    最近阅读了李航的<统计学习方法(第二版)>,对AdaBoost算法进行了学习. 在第八章的8.1.3小节中,举了一个具体的算法计算实例.美中不足的是书上只给出了数值解,这里用代码将它实现一 ...

  2. 【NLP】基于统计学习方法角度谈谈CRF(四)

    基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...

  3. 统计学习方法 --- 感知机模型原理及c++实现

    参考博客 Liam Q博客 和李航的<统计学习方法> 感知机学习旨在求出将训练数据集进行线性划分的分类超平面,为此,导入了基于误分类的损失函数,然后利用梯度下降法对损失函数进行极小化,从而 ...

  4. 统计学习方法笔记--EM算法--三硬币例子补充

    本文,意在说明<统计学习方法>第九章EM算法的三硬币例子,公式(9.5-9.6如何而来) 下面是(公式9.5-9.8)的说明, 本人水平有限,怀着分享学习的态度发表此文,欢迎大家批评,交流 ...

  5. 统计学习方法:KNN

    作者:桂. 时间:2017-04-19  21:20:09 链接:http://www.cnblogs.com/xingshansi/p/6736385.html 声明:欢迎被转载,不过记得注明出处哦 ...

  6. 统计学习方法:罗杰斯特回归及Tensorflow入门

    作者:桂. 时间:2017-04-21  21:11:23 链接:http://www.cnblogs.com/xingshansi/p/6743780.html 前言 看到最近大家都在用Tensor ...

  7. 统计学习方法:核函数(Kernel function)

    作者:桂. 时间:2017-04-26  12:17:42 链接:http://www.cnblogs.com/xingshansi/p/6767980.html 前言 之前分析的感知机.主成分分析( ...

  8. 统计学习方法学习(四)--KNN及kd树的java实现

    K近邻法 1基本概念 K近邻法,是一种基本分类和回归规则.根据已有的训练数据集(含有标签),对于新的实例,根据其最近的k个近邻的类别,通过多数表决的方式进行预测. 2模型相关 2.1 距离的度量方式 ...

  9. 李航《统计学习方法》CH01

    CH01 统计学方法概论 前言 章节目录 统计学习 监督学习 基本概念 问题的形式化 统计学习三要素 模型 策略 算法 模型评估与模型选择 训练误差与测试误差 过拟合与模型选择 正则化与交叉验证 正则 ...

随机推荐

  1. MyBatis jdbcType常用类型

    MyBatis jdbcType常用类型 jdbcType与javaType对应关系 javaType jdbctype CHAR String VARCHAR String LONGVARCHAR ...

  2. Object类概述

    Object:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.每个类都直接或者间接的继承自Object类. Object类的方法:public int hashCode() ...

  3. IOS框架研究之SDWebImage的原理以及使用流程

    SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. SDWebImage 支持异步的图片下载+ ...

  4. JavaScript 在不刷新或跳转页面的情况下改变当前浏览器地址栏上的网址

    JavaScript 在不刷新或跳转页面的情况下改变当前浏览器地址栏上的网址 var stateObject = {}; var title = "改变后的网址的标题"; var ...

  5. Ubuntu16.04安装配置Eclipse 以及opencv的使用

    安装配置http://www.oracle.com下载与自己电脑系统对应的JDK.我下载的是jdk-8u101-linux64.tar.gz 解压:sudo tar -zxvf jdk-8u101-l ...

  6. [poj1860] Currency Exchange (bellman-ford算法)

    题目链接:http://poj.org/problem?id=1860 题目大意:给你一些兑换方式,问你能否通过换钱来赚钱? 使用ford算法,当出现赚钱的时候就返回YES,如果不能赚钱,则返回NO ...

  7. iOS开发~CocoaPods使用详细说明【转】

    一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...

  8. 仿淘宝详情转场(iOS,安卓没有这功能)

    由于公司是做跨境电商的,所以对各大电商APP都有关注,最近看到淘宝iOS端(安卓没有)在商品详情点击加入购物车有一个动画效果特别赞,正好今天新版本上线,下午就抽了些时间研究了下. 主要思路是自定义转场 ...

  9. [oracle] update和merge语句的几点写法

    1.update t2 set parentid=(select ownerid from t1 where t1.id=t2.id); 2. update tb_client_win_lost_re ...

  10. mysql分区研究

    表分区学习 1. 概述 1.1. 优点: l 将表分区比一个表在单个磁盘或者文件系统存储能够存储更多数据 l 可以通过drop分区删除无用数据,也可以通过增加分区添加数据 l 查询可以通过分区裁剪进行 ...