0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AdaBoost算法相关理论和算法介绍

lviY_AI_shequ 来源:lq 作者:张磊 2019-01-07 18:26 次阅读

作者简介

张磊:从事AI医疗算法相关工作个人微信公众号:机器学习算法那些事(微信ID:zl13751026985)

目录

1. Boosting算法基本原理

2. Boosting算法的权重理解

3. AdaBoost的算法流程

4. AdaBoost算法的训练误差分析

5. AdaBoost算法的解释

6. AdaBoost算法的过拟合问题讨论

7. AdaBoost算法的正则化

8. 总结

本文详细总结了AdaBoost算法的相关理论,相当于深入理解AdaBoost算法,该文详细推导了AdaBoost算法的参数求解过程以及讨论了模型的过拟合问题。

AdaBoost算法的解释

AdaBoost算法是一种迭代算法,样本权重和学习器权重根据一定的公式进行更新,第一篇文章给出了更新公式,但是并没有解释原因,本节用前向分布算法去推导样本权重和学习器权重的更新公式。

1. 前向分布算法

考虑加法模型:

给定训练数据和损失函数L(y,f(x))的条件下,构建最优加法模型f(x)的问题等价于损失函数最小化:

我们利用前向分布算法来求解(2)式的最优参数前向分布算法的核心是从前向后,每一步计算一个基函数及其系数,逐步逼近优化目标函数式(2),那么就可以简化优化的复杂度

算法思路如下:

M-1个基函数的加法模型:

M个基函数的加法模型:

由(3)(4)得:

因此,极小化M个基函数的损失函数等价于:

前向分布算法的思想是从前向后计算,当我们已知的值时,可通过(6)式递归来计算第 i 个基函数及其系数,i = 1,2,...M。

结论:通过前向分布算法来求解加法模型的参数。

2. AdaBoost损失函数最小化

AdaBoost算法的强分类器是一系列弱分类器的线性组合:

其中f(x)为强分类器,共M个弱分类器是对应的弱分类器权重。

由(7)式易知,f(x)是一个加法模型。

AdaBoost的损失函数L(y,f(x))为指数函数

利用前向分布算法最小化(8)式,可得到每一轮的弱学习器和弱学习器权值。第m轮的弱学习器和权值求解过程:

首先根据(9)式来求解弱学习器,权值α看作常数:

求解弱学习器后,(9)式对α求导并使导数为0,得:

其中,α是弱学习器权值,e为分类误差率:

因为AdaBoost是加法迭代模型:

以及,得:

结论:式(14)(15)(16)与第一篇文章介绍AdaBoost算法的权重更新完全一致,即AdaBoost算法的权重更新与AdaBoost损失函数最优化是等价的,每次更新都是模型最优化的结果,(13)式的含义是每一轮弱学习器是最小化训练集权值误差率的结果。一句话,AdaBoost的参数更新和弱学习器模型构建都是模型最优化的结果。

AdaBoost算法的过拟合问题讨论

1. 何时该讨论过拟合问题

模型的泛化误差可分解为偏差、方差与噪声之和。当模型的拟合能力不够强时,泛化误差由偏差主导;当模型的拟合能力足够强时,泛化误差由方差主导。因此,当模型的训练程度足够深时,我们才考虑模型的过拟合问题。

2. 问题的提出

如下图为同一份训练数据的不同模型分类情况:

图(1)(2)的训练误差都为0,那么这两种分类模型的泛化能力孰优孰劣?在回答这个问题,我想首先介绍下边界理论(Margin Theory)。

3. 边界理论

周志华教授在《集成学习方法基础与算法》证明了:

其中,为泛化误差率,为边界阈值。

由上式可知,泛化误差收敛于某个上界,训练集的边界(Margin)越大,泛化误差越小,防止模型处于过拟合情况。如下图:

结论:增加集成学习的弱学习器数目,边界变大,泛化误差减小。

4. 不同模型的边界评估

1) 线性分类模型的边界评估

用边界理论回答第一小节的问题

线性分类模型的边界定义为所有样本点到分类边界距离的最小值,第一小节的图(b)的边界值较大,因此图(b)的泛化能力较好。

2) logistic分类模型的边界评估

logistic分类模型的边界定义为所有输入样本特征绝对值的最小值,由下图可知,模型b边界大于模型a边界,因此,模型b的泛化能力强于模型a 。

3)AdaBoost分类模型边界评估

AdaBoost的强分类器:

AdaBoost的边界定义为f(x)的绝对值,边界越大,泛化误差越好。

当训练程度足够深时,弱学习器数目增加,f(x)绝对值增加,则泛化能力增强。

结论:AdaBoost算法随着弱学习器数目的增加,边界变大,泛化能力增强。

AdaBoost算法的正则化

为了防止AdaBoost过拟合,我们通常也会加入正则化项。AdaBoost的正则化项可以理解为学习率(learning rate)。

AdaBoost的弱学习器迭代:

加入正则化项:

v的取值范围为:0 < v < 1。因此,要达到同样的训练集效果,加入正则化项的弱学习器迭代次数增加,由上节可知,迭代次数增加可以提高模型的泛化能力。

总结

AdaBoost的核心思想在于样本权重的更新和弱分类器权值的生成,样本权重的更新保证了前面的弱分类器重点处理普遍情况,后续的分类器重点处理疑难杂症。最终,弱分类器加权组合保证了前面的弱分类器会有更大的权重,这其实有先抓总体,再抓特例的分而治之思想。

关于AdaBoost算法的过拟合问题,上两节描述当弱学习器迭代数增加时,泛化能力增强。AdaBoost算法不容易出现过拟合问题,但不是绝对的,模型可能会处于过拟合的情况

(1)弱学习器的复杂度很大,因此选择较小复杂度模型可以避免过拟合问题,如选择决策树桩。adaboost + 决策树 = 提升树模型。

(2)训练数据含有较大的噪声,随着迭代次数的增加,可能出现过拟合情况。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4437

    浏览量

    90552
  • Adaboost算法
    +关注

    关注

    0

    文章

    5

    浏览量

    1290

原文标题:比较全面的Adaboost算法总结(二)

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数字信号处理理论算法与实现

    系统介绍数字信号处理理论、相应的算法,以及实现这些算法的软件和硬件
    发表于 05-04 21:29

    Adaboost算法的Haar特征怎么进行并行处理?

    Adaboost 算法是Freund 和Schapire 于1995 年提出的,全称为Adaptive Boosting。它是 Boosting 算法的改进,意为该算法通过机器训练与学
    发表于 08-28 07:05

    实现AdaBoost算法的代码

    AdaBoost算法实现
    发表于 11-07 09:19

    SVPWM算法架构介绍

    简要文档说明算法介绍算法架构如下所示,其中采用SVPWM矢量控制,id=0。主要包括三个部分:转速环PI调节器,电流环PI调节器,SVPWM算法等。主要参数计算3.1 转速环ADRC
    发表于 08-27 07:41

    基于模拟退火结合粒子群算法相关资料分享

    【优化选址】基于模拟退火结合粒子群算法求解分布式电源定容选址问题matlab源码1 算法介绍1.1 模拟退火算法1.2 粒子群算法粒子群
    发表于 01-03 07:58

    Adaboost算法的FPGA实现与性能分析

    Adaboost算法采用由弱到强的级联型分类器用以快速检测人脸。但在实际应用中计算量巨大。在PC机上用纯软件实现该算法得到的目标检测速度也难以达到实时。本文论述了一种采用像
    发表于 07-17 18:11 22次下载

    基于Adaboost算法的驾驶员眨眼识别

    基于Adaboost算法的驾驶员眨眼识别 眨眼是一种睁闭眼睛的生理活动,眨眼的速度会受疲劳程度、情感压力、行为种类、睡觉数量、眼睛受伤程度、疾
    发表于 11-09 17:17 1135次阅读

    AdaBoost算法流程和证明

    Discete-AdaBoost算法 1、给定训练集: ,其中 ,表示 的正确的类别标签, , 表示第i副图像的第j个特征值 2、训练集上样本的初始分布: 3、寻找若分类器 ht( ) (1)对于每个样本中的第j个特
    发表于 07-18 10:40 0次下载

    基于AdaBoost_Bayes算法的中文文本分类系统

    基于AdaBoost_Bayes算法的中文文本分类系统_徐凯
    发表于 01-07 18:56 2次下载

    一种多分类的AdaBoost算法

    多类指数损失函数逐步添加模型( SAMME)是一种多分类的AdaBoost算法,为进一步提升SAMME算法的性能,针对使用加权概率和伪损失对算法的影响进行研究,在此基础上提出了一种基于
    发表于 12-01 16:50 1次下载

    非线性AdaBoost算法

    AdaBoost是数据挖掘领域最常见的提升算法之一。对传统AdaBoost将各个基分类器线性相加所存在的不足进行分析,并针对AdaBoost各个弱分类器的加权方式提出新的改进,将传统的
    发表于 01-04 16:58 0次下载

    关于二叉树一些数据结构和算法相关的题目

    最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的。
    的头像 发表于 02-07 13:57 2988次阅读

    Adaboost算法总结

    集成学习的Boosting算法通过结合多个弱学习器组成强学习器,AdaBoost算法是Boosting算法中的一种,本文详细的总结了AdaBoost
    的头像 发表于 12-29 16:08 2868次阅读
    <b class='flag-5'>Adaboost</b><b class='flag-5'>算法</b>总结

    基于AdaBoost算法的复杂网络链路预测

    链路预测是复杂网络的重要研究方向,当前的链路预测算法因可利用的网络信息有限,导致预测算法的精确度受限为了提高预测算法的性能,采用改进的 Adaboost
    发表于 04-08 11:21 15次下载
    基于<b class='flag-5'>AdaBoost</b><b class='flag-5'>算法</b>的复杂网络链路预测

    基于SVM与Adaboost算法的入侵检测系统

    入侵检测系统在大数据量的情况下误报率高、泛化能力弱,且单一机器学习算法不能较好地应对多种攻击类型。为此,设计一个基于支持向量机(SM)与 Adaboost算法的入侵检测系统。依托 Snort系统
    发表于 05-25 16:35 6次下载