机器学习之Adaboost(自适应增强)算法追寻的鹿

注:本篇博文是根据其他优秀博文编写的,我只是对其改变了知识的排序,另外代码是《机器学习实战》中的。转载请标明出处及参考资料。

Adaboost是英文"AdaptiveBoosting"(自适应增强)的缩写,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。通俗地讲就是,将若干带有权值的弱分类器累加得到强分类器的过程。

Adaboost算法可以简述为三个步骤:(1)首先,是初始化训练数据的权值分布D1。假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:w1=1/N。(2)然后,训练弱分类器hi。具体训练过程中是:如果某个训练样本点,被弱分类器hi准确地分类,那么在构造下一个训练集中,它对应的权值要减小;相反,如果某个训练样本点被错误分类,那么它的权值就应该增大。权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。(3)最后,将各个训练得到的弱分类器组合成一个强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换而言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

给定一个训练数据集T={(x1,y1),(x2,y2)…(xN,yN)},其中实例x属于Rn,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。

Adaboost算法流程如下:

步骤1.首先,初始化训练数据的权值分布。每一个训练样本最开始时都被赋予相同的权值:1/N。

步骤2.进行多轮迭代,用m=1,2,...,M表示迭代的第多少轮。

a.使用具有权值分布Dm的训练数据集学习,得到基本分类器(选取让误差率最低的阈值来设计基本分类器):

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

由上述式子可知,Gm(x)在训练数据集上的误差率em就是被Gm(x)误分类样本的权值之和。c.计算Gm(x)的系数,αm表示Gm(x)在最终分类器中的重要程度(目的:得到基本分类器在最终分类器中所占的权重):

由上述式子可知,em<=1/2时,αm>=0,且αm随着em的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大。d.更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代

步骤3.组合各个弱分类器

从而得到最终分类器,如下:

其中,sign()是符号函数,取值为{-1,0,1}。

如下图所示的便是一个加法模型

其中,称为b(x;γm)基函数,γm称为基函数的参数,βm称为基函数的系数。在给定训练数据及损失函数L(y;f(x))的条件下,学习加法模型f(x)成为经验风险极小化问题,即损失函数极小化问题:

随后,该问题可以作如此简化:从前向后,每一步只学习一个基函数及其系数,逐步逼近上式,即:每步只优化如下损失函数:

这个优化方法便就是所谓的前向分步算法。下面,咱们来具体看下前向分步算法的算法流程:

输入:训练数据集损失函数:基函数集:输出:加法模型算法步骤:

得到参数和。

在上文第2.1节最后,我们说Adaboost还有另外一种理解,即可以认为其模型是加法模型、损失函数为指数函数、学习算法为前向分步算法的二类分类学习方法。其实,Adaboost算法就是前向分步算法的一个特例,Adaboost中,各个基本分类器就相当于加法模型中的基函数,且其损失函数为指数函数。换句话说,当前向分步算法中的基函数为Adaboost中的基本分类器时,加法模型等价于Adaboost的最终分类器

你甚至可以说,这个最终分类器其实就是一个加法模型。只是这个加法模型由基本分类器及其系数组成,m=1,2,...,M。前向分步算法逐一学习基函数的过程,与Adaboost算法逐一学习各个基本分类器的过程一致。

下面,咱们便来证明:当前向分步算法的损失函数是指数损失函数

时,其学习的具体操作等价于Adaboost算法的学习过程。

假设经过m-1轮迭代,前向分步算法已经得到:

而后在第m轮迭代得到、和。其中,为:

而和未知。所以,现在咱们的目标便是根据前向分步算法训练和,使得最终在训练数据集T上的指数损失最小,即

针对这种需要求解多个参数的情况,可以先固定其它参数,求解其中一两个参数,然后逐一求解剩下的参数。例如我们可以固定和,只针对和做优化。

换言之,在面对和这2m个参数都未知的情况下,可以:

且考虑到上式中的既不依赖也不依赖G,所以是个与最小化无关的固定值,记为,即,则上式可以表示为(后面要多次用到这个式子,简记为):

值得一提的是,虽然与最小化无关,但依赖于,随着每一轮迭代而发生变化。

接下来,便是要证使得上式达到最小的和就是Adaboost算法所求解得到的和。

为求解上式,咱们先求再求。

首先求。对于任意,使上式最小的G(x)由下式得到:

别忘了,。

跟1.3节所述的误差率的计算公式对比下:

可知,上面得到的便是Adaboost算法的基本分类器,因为它是在第m轮加权训练数据时,使分类误差率最小的基本分类器。换言之,这个便是Adaboost算法所要求的,别忘了,在Adaboost算法的每一轮迭代中,都是选取让误差率最低的阈值来设计基本分类器。

然后求。还是回到之前的这个式子上:

这个式子的后半部分可以进一步化简,得:

接着将上面求得的

代入上式中,且对求导,令其求导结果为0,即得到使得一式最小的,即为:

这里的跟上文1.3节中的计算公式完全一致。

此外,毫无疑问,上式中的便是误差率:

即就是被Gm(x)误分类样本的权值之和。

就这样,结合模型,跟,可以推出

从而有:

与上文1.3节介绍的权值更新公式

相比,只相差一个规范化因子,即后者多了一个Zm

所以,整个过程下来,我们可以看到,前向分步算法逐一学习基函数的过程,确实是与Adaboost算法逐一学习各个基本分类器的过程一致,两者完全等价。

Adaboost在学习的过程中不断减少训练误差e,直到各个弱分类器组合成最终分类器,那这个最终分类器的误差界到底是多少呢?事实上,Adaboost最终分类器的训练误差的上界为:

下面,咱们来通过推导来证明下上述式子。

当G(xi)≠yi时,yi*f(xi)<0,因而exp(-yi*f(xi))≥1,因此前半部分得证。

关于后半部分,别忘了:

整个的推导过程如下:

这个结果说明,可以在每一轮选取适当的Gm使得Zm最小,从而使训练误差下降最快。接着,咱们来继续求上述结果的上界。

对于二分类而言,有如下结果:

其中,。

继续证明下这个结论。

由之前Zm的定义式跟本节最开始得到的结论可知:

而这个不等式可先由e^x和1-x的开根号,在点x的泰勒展开式推出。值得一提的是,如果取γ1,γ2…的最小值,记做γ(显然,γ≥γi>0,i=1,2,...m),则对于所有m,有:

这个结论表明,AdaBoost的训练误差是以指数速率下降的。另外,AdaBoost算法不需要事先知道下界γ,AdaBoost具有自适应性,它能适应弱分类器各自的训练误差率。

这里的数据是《机器学习实战》的马疝病数据,包括:训练集的名称'horseColicTraining2.txt',测试集的名称'horseColicTest2.txt'。具体数据如下:

优点:

(1)Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。

(2)Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。

(3)Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。

(4)Adaboost对同一个训练样本集训练不同的弱分类器,按照一定的方法把这些弱分类器集合起来,构造一个分类能力很强的强分类器,即“三个臭皮匠赛过一个诸葛亮”。

THE END
1.自适应学习率算法:智能调整学习步伐传统的梯度下降法通常采用固定的学习率,但这在实际应用中往往会遇到一些问题。例如,学习率过大可能导致模型震荡,无法收敛到最优解;而学习率过小则会导致收敛速度过慢,训练时间过长。为了解决这些问题,研究人员提出了自适应学习率算法,它能够根据训练过程中的信息动态调整学习率,从而提高模型的训练效率和性能。 https://download.csdn.net/blog/column/12592623/138250357
2.什么是自适应学习自适应学习简介自适应学习(adaptive learning)是一种基于学习者的个体差异和学习需求,为每个学习者提供定制化的学习内容和学习路径的学习方式。自适应学习通常使用人工智能、机器学习、数据挖掘等技术,通过对学习者的学习行为和反馈数据的分析,为学习者提供个性化的学习内容和学习路径,以提高学习效果和学习满意度。 https://cloud.tencent.com/developer/techpedia/1763
3.自适应学习率算法(六)自适应学习率算法51CTO博客Delta-bar-delta算法是一个早期的在训练时适应模型参数各自学习率的启发方式。该方法基于一个很简单的想法,如果损失对于某个给定模型参数的偏导数保持相同的符号,那么学习率应该增加。如果对于该参数的偏导变化了符号,那么学习率应该更小。最近,提出了一些增量(或者基于小批量)的算法来自适应模型参数的学习率。 https://blog.51cto.com/u_13977270/3398969
4.深度学习常用优化器——自适应学习率算法上一篇说了一下改进梯度的最优化算法,下面说一下自适应学习率算法,以及两者的结合。自适应学习率算法主要是相对不同参数和训练的不同阶段有不同的学习率。 1.自适应学习率算法 —— AdaGrad AdaGrad应该是Adaptive Gradient的缩写,是怎么个适应法呢,就是每个参数都有自己的学习率,这里的学习率是和每个参数的梯度相https://www.jianshu.com/p/dfeba2ac6559
5.自适应算法在网络学习系统的应用研究AET摘要: 随着现代信息技术与教育产业的深度融合,建设远程开放式的网络学习平台已成为构建智慧校园网的核心;同时也为构建学习型社会,实现终身教育提供了环境支撑和技术保障。主要着手于自适应算法研究,以网络学习者为对象,针对网络学习平台中存在的问题,设想将自适应算法引入到网络学习平台中,设计一个包含自适应网络学习模型http://www.chinaaet.com/article/3000015389
6.基于自适应LASSO先验的稀疏贝叶斯学习算法其中,∥·∥1表示?1范数.凸优化问题 (3)可以通过LASSO 算法进行求解,但是LASSO 算法不能一定保证收敛,为提高算法性能,Zou 在文献[20]中对LASSO 算法进行了改进,提出了自适应LASSO算法,并对该算法的Oracle 特性进行了证明1Oracle 特性具体包括模型选择相和性和参数估计渐进正态性.其含义为,在一些变量不是提前已https://www.fx361.com/page/2022/0618/14396851.shtml
7.工业过程故障检测自适应流形学习算法研究及应用针对这些问题,基于现有研究基础,本文提出一种自适应流形学习算法用于工业过程故障检测领域,并进行实例仿真来验证该方法的有效性和可行性。(1)介绍了本文研究背景和意义,对工业过程故障检测领域的主要研究内容和现状进行描述。根据实际工业过程中变量数据存在的特性,剖析了现有故障检测方法的局限性,阐述了流形学习方法在故障https://cdmd.cnki.com.cn/Article/CDMD-10673-1018250920.htm
8.[多智能体强化学习笔记]CM3:合作式多目标多阶段多智能体强化学习为了应对这两个挑战,我们将问题重组为一个新的两阶段问题,在学习多智能体合作之前先学习单智能体目标的实现,并推导出一个新的多目标多智能体策略梯度,该梯度具有局部信用分配的信用函数。 完整的体系结构称为CM3,在三个具有挑战性的多目标多智能体问题上,其学习速度明显快于现有算法的直接适应:困难编队中的合作导航https://zhuanlan.zhihu.com/p/451200587
9.检测区域自适应调整的TLD多目标跟踪算法1 DKF检测区域自适应调整检测算法 TLD算法的运行速度虽然优于一般在线学习方法, 但其检测器要对每一帧的整幅图像的所有子窗口进行检索, 由于子窗口过多, 而绝大部分子窗口并不包含真正的跟踪目标, 所以对这些子窗口内的图像块进行检测会浪费大量运算时间, 严重影响目标跟踪的实时性.因此, 提出一种检测区域可动态https://xuebao.neu.edu.cn/natural/article/html/2017-2-214.htm
10.自适应学习是「忽悠」还是「突破」?我们和专注其中的公司聊了聊极在国外,自适应学习并不是个新鲜概念,相反,其是在上世纪七十年代随着人工智能的概念逐渐为人熟知。难怪王枫说,自适应学习就是人工智能在教育里的深度应用。根据维基百科的解释,自适应学习,也称为自适应教育,是一种教育方法,它使用计算机算法来协调与学习者的交互,并提供定制的资源和学习活动,以满足每个学习者的个性化https://www.geekpark.net/news/232390
11.增强型DeepLab算法和自适应损失函数的高分辨率遥感影像分类注册 登录 English Version 论文 图片 资讯 高级检索 首页 关于本刊 期刊在线 特色资源 写作指南 投稿须知 下载中心 期刊征订 联系我们 遥感智能解译 | 浏览量 : 0 下载量: 737 CSCD: 4 更多指标 PDF 导出 分享 收藏 专辑 增强型DeepLab算法和自适应损失函数的高分辨率遥感影像分类 Classification of high-https://www.ygxb.ac.cn/zh/article/doi/10.11834/jrs.20209200/
12.学习报告:一种基于能量的领域适应的主动学习方法所有的方法都是基于 pytorch 实现的, 使用了 ResNet 模型在 ImageeNet 上进行训练。同时比较了主动学习算法、主动领域自适应算法和域自适应算法。 图2 1. 主要结果 VisDA-2017 在VisDA-2017上标注预算为5% 的不同方法的实验结果列于表1的第一栏,证明 EADA 优于所有的基线。随机选取样本的性能优于 ResNet,https://www.scholat.com/teamwork/teamwork/showPostMessage.html?id=10971
13.科学网—随机梯度下降算法研究进展图4学习率对优化过程的影响 本文对近年来随机梯度下降算法的研究进展及主要研究成果进行了综述.根据算法的更新策略,将几种具有代表性的随机梯度下降算法分为四类,包括基于动量的算法、基于方差缩减的算法、基于增量梯度的算法以及自适应学习率的算法.本文介绍了这些算法的原理、核心思想以及相互之间的区别与联系,并通过数https://blog.sciencenet.cn/blog-3291369-1348385.html