Adaboost原理及相关推导
提升思想
一个概念如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么,这个概率是强可学习的。一个概念如果存在一个多项式的学习算法能够学习它,并且学习的正确率仅比随机猜测略好,那么,这个概念是弱可学习的。强可学习与弱可学习是等价的。在学习中,如果已经发现了弱学习算法,那么是否能够将其提升为强学习算法呢?、
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)带入

求导计算,得到:

分类错误率:

权值更新:



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

二者做除,得到:

从而:

Adaboost原理及相关推导的更多相关文章
- AdaBoost原理详解
写一点自己理解的AdaBoost,然后再贴上面试过程中被问到的相关问题.按照以下目录展开. 当然,也可以去我的博客上看 Boosting提升算法 AdaBoost 原理理解 实例 算法流程 公式推导 ...
- 集成学习之Boosting —— AdaBoost原理
集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- Adaboost原理及目标检测中的应用
Adaboost原理及目标检测中的应用 whowhoha@outlook.com Adaboost原理 Adaboost(AdaptiveBoosting)是一种迭代算法,通过对训练集不断训练弱分类器 ...
- SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)
接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...
- SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP
AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...
- SpringBoot启动原理及相关流程
一.springboot启动原理及相关流程概览 springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置.那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 二 ...
- 机器学习之AdaBoost原理与代码实现
AdaBoost原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9642899.html 基本思路 ...
- 深度学习课程笔记(九)VAE 相关推导和应用
深度学习课程笔记(九)VAE 相关推导和应用 2018-07-10 22:18:03 Reference: 1. TensorFlow code: https://jmetzen.github.io/ ...
随机推荐
- php json接口demo
<?php class Student { public $no; public $username; public $password; } $student=new Student(); $ ...
- SQL三表连接查询与集合的并、交、差运算查询
use db_sqlserver2 select 姓名, 工资, 面积, 金额, (工资+金额/1000) as 实发工资 from 职工,仓库, 订购单 where 职工.职工号=订购单.职工号 a ...
- Linux下解压rar压缩包
wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gz rar软件不需要安装,直接解压到/usr/local下,以下操作需要有root权限. ...
- (转)对中级 Linux 用户非常有用的 20 个命令
也许你已经发现第一篇文章非常的有用,这篇文章是继对初级Linux用户非常有用的20个命令的一个延伸. 第一篇文章的目的是为新手准备的而这篇文章则是为了Linux的中高级用户.在这里你将学会如何进行自定 ...
- 【Linux常见命令】echo命令
echo - display a line of text 打印输出内容的常用命令,可以结合重定向>和追加>>对文件进行覆盖或追加内容. 语法: echo [SHORT-OPTION ...
- layui模块化加载Echarts图表v4.2.1
layui.use(['jquery','echarts'], function () { var $ = layui.$; //记得这是dom对象不是JQ对象,需要转换 echarts = layu ...
- RedHat Enterprise Linux 5.8 升级openssl
RedHat Enterprise Linux 5.8升级openssl,遇到以下问题,做下标记: 由于之前安装RedHat Enterprise Linux 5.8 时候只安装了服务器环境,没有安装 ...
- Linked List-2
三.编码技巧 1.遍历链表 先将head指针赋值给一个局部变量current: //return the number of nodes in a list (while-loop version) ...
- SSM框架完整开发流程
----------------第一阶段-------------- 1.数据库建模 2.生成sql语句 3.在mysq客户端使用命令方式执行sql脚本,生成数据库 4.允许远程访问mysql GRA ...
- 最长公共子序列(Longest common subsequence)
问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子序列.(子序列中的字符不要求连续) 这道题可以 ...