一、引言

本人在看周志华老师编写的《机器学习》一书的AdaBoost推导部分的内容时,总感觉内容有点跳跃,思路不太流畅,并且书中的一些操作也不是很能理解(例如8.13的泰勒展开),故在参考了书上内容的基础上自己尝试着推导了一遍,梳理了一下算法的思路,希望能对大家有所帮助。

二、理论推导

Adaboost算法最终得到的一个模型是一个“加性模型”,即多个基学习器的线性组合:

那如何评价学习得到的模型的性能呢?当然是设计一个评价函数,在书中,这个评价函数就是指数损失函数:

书中证明了,当该损失函数取得最小值时,此时的刚好就是一个最小化分类错误率的贝叶斯最优分类器,它在样本属于正例的概率大于其属于反例的概率时输出1,在属于反例的概率大于其属于正例的概率时输出-1,符合书上式(7.6)的定义。那么接下来我们的任务就是如何最小化该指数损失函数,也即如何确定每一个及其相应的系数

首先可以确定的是,第一个基分类器是通过直接将基学习算法用于初始训练数据分布而得到的,那如果假设AdaBoost算法就在第一步停止了,即只有一个基学习器,则此时的指数损失函数

注意在计算模型的指数损失时,都是在初始的训练数据分布上进行的。根据书中式(8.9)的推导,可以进一步得出:

其中是基分类器在初始数据分布上的分类错误率,由基学习算法的性能和初始训练数据的好坏决定,我们所能控制的是系数,因此我们应该将取为能使指数损失最小的那个值,由基本不等式或求导我们不难得到,取得最小值时,

该最小值为

现在我们假设某一时刻,我们已知了以及其在初始训练数据分布上的指数损失:

由于该指数损失为一个常数,因此我们不妨设其为A。那么我们接下来的任务是获得最优的基分类器及其对应的系数,使得在初始训练数据分布上的指数损失最小,即:

而其中

可以等价于下面这种表达形式:

将上式代入到的表达式中,可得:

其中常数A是上文中定义的的指数损失。而根据数学期望的定义(数理统计知识),若令表示一个新的分布:

那么就有:

因此的表达式可以进一步简化为:

而其中

式中称为示性函数,当括号内的条件成立时结果为1,不成立时结果为0;表示在基分类器上的分类错误率。可以看出,当越小,即上的分类错误率越小时,指数损失越小,那么该如何训练基分类器,使得尽可能的小呢?既然是在数据分布上的分类错误率,那么我们就干脆在数据分布上去用基学习算法训练出一个基分类器,而不是在初始数据分布上或者是其他的数据分布上去训练基分类器。

训练得到基学习器以及分类错误率之后,我们下一步就是求最优的系数。经过上述一系列的化简,我们最终得到的的指数损失表达式为:

根据基本不等式,

当且仅当 ,即时,等号成立,此时指数损失取得最小值。

接着我们来分析一下从这一步,指数损失值的变化情况。前面我们说过A表示的是在初始训练数据分布上的分类错误率,而根据上面的推导,我们得出了当都是最优时,的指数损失为,由于我们只接受分类错误率小于0.5的基分类器,因此的取值范围为,而在当在该范围内取值时是小于1的,而且越小,该结果越小,这说明了当我们在分类器的基础之上增加项变为之后,能够减小指数损失的值,而每一步具体减小的程度,和基分类器上的分类错误率大小有关。理论上来说,我们可以根据上述步骤不断地增加新的基分类器,从而不断地减小指数损失直至其逼近于0,然而实际上可能无法实现。

现在我们手里有(即),又有了从到 的递推公式,那么自然而然就能够依次获得...一直到我们所指定的目标数目。这便是AdaBoost算法的流程。创作不易,如果以上的内容对你理解AdaBoost算法有所帮助,请为本篇文章点一个赞,如果文中有不正确或解释不清楚的地方,也欢迎在评论区指出。

​​​​​​

AdaBoost算法部分理论推导相关推荐

  1. Adaboost算法的原理推导及解释

    文章目录 Adaboost算法的原理推导及解释 前置知识:Boosting概述 Boosting方法的基本思想 Boosting方法的的学习方法 核心部分:Adaboost算法的原理推导和解释 Ada ...

  2. 四旋翼姿态解算——互补滤波算法及理论推导

    转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...

  3. 恋爱算法 - 麦穗理论-推导过程

    麦穗理论 有一天,柏拉图问老师苏个拉底什么是爱情?老师就让他先到麦田里去,摘一颗全麦田里最大最金黄的麦穗来.期间只能摘一次,并且期间只能向前走,不能回头. 柏拉图于是按照老师说的去做了,结果他两手空空 ...

  4. 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

    应用背景介绍 自主导航是机器人与自动驾驶的核心功能,而SLAM技术是实现自主导航的前提与关键.现有的机器人与自动驾驶车辆往往会安装激光雷达,相机,IMU,GPS等多种模态的传感器,而且已有许多优秀的激 ...

  5. 四旋翼姿态解算——梯度下降法理论推导

    转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...

  6. 深入理解机器学习——集成学习(二):提升法Boosting与Adaboost算法

    分类目录:<深入理解机器学习>总目录 Boosting是一族可将弱学习器提升为强学习器的算法.这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进 ...

  7. adaboost 算法 原理

    Adaboost 算法 算法简介 (1)adaboost是有监督的分类算法 有监督 无监督的区别,直观来看,区别在于训练集中,是否需要包括因变量Y. 例如: 无监督算法 -- K-means聚类算法, ...

  8. 【白话机器学习】算法理论+实战之AdaBoost算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  9. Adaboost 算法的原理与推导

    Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下 ...

最新文章

  1. jQuery学习笔记——事件
  2. Oracle RAC 客户端连接负载均衡(Load Balance)
  3. 牛客网暑期ACM多校训练营(第九场)
  4. gsoap初始化释放_通过gsoap使用webservice
  5. PS提示错误1解决办法
  6. 智慧交通day02-车流量检测实现05:小车匀加速案例
  7. CAP BASE 最终一致性
  8. Ubuntu18突然卡死解决方法
  9. 前序与中序遍历序列构造二叉树 中序与后序遍历序列构造二叉树
  10. c语言数字游戏程序,C语言实现数字游戏
  11. 85条高级AutoCAD工程师绘图技巧(1)
  12. 大数据、数据分析和数据挖掘的区别是什么
  13. ​云队友丨两次疫情冲击,却两次成功上市,携程是怎么做到的?
  14. PostScript 打印机打印内存不足错误消息
  15. 我的 C# 学习经验分享
  16. 微信朋友圈营销如何做好头像_昵称_签名_背景基础设置?
  17. linux编译poco静态库,iOS——为Xcode编译POCO C++静态库
  18. “===”、“==” 的区别
  19. 蓝桥杯-算法提高-Cowboys
  20. 【LSTM回归预测】基于matlab灰狼算法优化LSTM回归预测【含Matlab源码 2038期】

热门文章

  1. PHP+fiddler抓包采集微信文章阅读数点赞数
  2. 禁止穿透 uniapp
  3. PVE+软路由+黑群晖[卒]
  4. Excel数据看板和数据分析思路
  5. 计算机职称考试知识点,2015年中级职称计算机考试基本知识点
  6. python 面向对象篇
  7. TUTK demo iOS
  8. 嵌入式面试题之单片机知识
  9. 制作ZCU102开发板的FIT image内核
  10. OctaneRender for Cinema 4D Essential Training OctaneRender for Cinema 4D Essential Training Lynda课程