提升思想

一个概念如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么,这个概率是强可学习的。一个概念如果存在一个多项式的学习算法能够学习它,并且学习的正确率仅比随机猜测略好,那么,这个概念是弱可学习的。强可学习与弱可学习是等价的。在学习中,如果已经发现了弱学习算法,那么是否能够将其提升为强学习算法呢?、

Adaboost

设训练数据集T={(x1,y1),(x2,y2),(xN,yN)},对数据集进行初始化训练数据的权重分布:

对于m=1,2,3······M,步骤如下:

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

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

计算Gm(x)的系数:

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

这里,Zm是规范化因子:

这里的规范化因子仅仅是要归一化。

基本分类器的线性组合

最终得到的分类器为:

Adaboost中的误差上限

根据误差计算公式,有如下等式:

当G(xi)不等于yi时,yi*f(xi)<0,故exp(-yi*f(xi))>=1,前半部分得证,对于后面的等号,如下:

由此,可以计算得到训练的误差界,如下:

取r1,r2的最小值,记做r

Adaboost算法解释

Adaboost算法是模型为加法模型,损失函数为指示函数,学习算法为前向分布算法时的二分类学习算法

前向分步算法

对于下面加法模型:

其中,b()函数为基函数,bm为基函数系数,rm为基函数的参数

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

算法简化:如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近上式,即每一步只优化:

前向分布算法框架

输入:

训练数据集T,损失函数L(y,f(x)),基函数集{b(x;r)}\

输出:

加法模型f(x)

算法步骤:

初始化f0(x)=0

对于m=1,2,·······M

极小化损失损失函数:

得到参数,b和r,在更新当前模型:

Adaboost算法是前向分布算法的特例,模型是由基本分类器组成的加法模型,损失函数是指数函数:

推导与证明

假设经过m-1轮迭代,前向分布算法已经得到fm-1(x):

在第m轮迭代得到am,Gm(x),fm(x),目标是使前向分布算法得到的am和Gm(x)使fm(x)在训练数据集T上的指数损失最小:

wmi既不依赖α也不依赖G,所以与最小化无关。但依赖于fm-1(x),所以,每轮迭代会发生变化。

首先求分类器G*(x), 对于任意α>0,是上式最小的G(x)由下式得到:
其中,

计算权值:

将G(x)带入

求导计算,得到:

分类错误率:

权值更新:

权值和错误率的关键解释:

二者做除,得到:

从而:

AdaBoost的训练误差是以指数速率下降的,AdaBoost算法不需要事先知道下界γ,AdaBoost具有自适应性,它能适应若分类器各自的训练误差率。(“适应”Adaptive的由来)

Adaboost原理及相关推导的更多相关文章

  1. AdaBoost原理详解

    写一点自己理解的AdaBoost,然后再贴上面试过程中被问到的相关问题.按照以下目录展开. 当然,也可以去我的博客上看 Boosting提升算法 AdaBoost 原理理解 实例 算法流程 公式推导 ...

  2. 集成学习之Boosting —— AdaBoost原理

    集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  4. Adaboost原理及目标检测中的应用

    Adaboost原理及目标检测中的应用 whowhoha@outlook.com Adaboost原理 Adaboost(AdaptiveBoosting)是一种迭代算法,通过对训练集不断训练弱分类器 ...

  5. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...

  6. SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

    AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...

  7. SpringBoot启动原理及相关流程

    一.springboot启动原理及相关流程概览 springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置.那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 二 ...

  8. 机器学习之AdaBoost原理与代码实现

    AdaBoost原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9642899.html 基本思路 ...

  9. 深度学习课程笔记(九)VAE 相关推导和应用

    深度学习课程笔记(九)VAE 相关推导和应用 2018-07-10 22:18:03 Reference: 1. TensorFlow code: https://jmetzen.github.io/ ...

随机推荐

  1. Docker安装yapi

    安装docker 1.安装依赖包: yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装 Yum -y install do ...

  2. Querying for Event Information

    https://docs.microsoft.com/zh-cn/windows/desktop/EventLog/querying-for-event-source-messages #includ ...

  3. Copy ArrayList的四种方式

    目录 简介 使用构造函数 使用addAll方法 使用Collections.copy 使用stream 总结 Copy ArrayList的四种方式 简介 ArrayList是我们经常会用到的集合类, ...

  4. js 运动函数篇(二) (加速度运动、弹性运动、重力场运动(多方向+碰撞检测+重力加速度+能量损失运动)拖拽运动)层层深入

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写加速度运动.弹性运动.重力场运 ...

  5. history of program atan2(y,x)和pow(x,y)

    编年史 1951 – Regional Assembly Language 1952 – Autocode 1954 – IPL (LISP语言的祖先) 1955 – FLOW-MATIC (COBO ...

  6. mac OS 配置Apache服务器

    Mac自带了Apache环境 查看Apache版本 sudo apachectl -v 在终端输入:sudo apachectl start 在浏览器输入"http://localhost& ...

  7. ExtJS2.0实用简明教程 - Form布局

            Form布局由类Ext.layout.FormLayout定义,名称为form,是一种专门用于管理表单中输入字段的布局,这种布局主要用于在程序中创建表单字段或表单元素等使用.   看下 ...

  8. 《Splunk智能运维实战》——1.7 为本书加载样本数据

    本节书摘来自华章计算机<Splunk智能运维实战>一书中的第1章,第1.7节,作者 [美]乔史·戴昆(Josh Diakun),保罗R.约翰逊(Paul R. Johnson),德莱克·默 ...

  9. 参加Windows7深圳社区发布会

    昨天下午参加了深圳DotNet俱乐部组织的Windows7深圳社区发布会. 开场:朱兴林,俱乐部简介及Win7的发布情况 Session 1,万洪,Windows7的新特性 Session 2,张善友 ...

  10. LNMP环境搭建之php安装

    和LAMP安装PHP方法有差别,需要开启php-fpm服务 下载php cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6 ...