【ML】关于机器学习中AdaBoost算法的学习

简介: 关于机器学习中AdaBoost算法的学习

AdBoost介绍

AdaBoost分类器就是一种元算法分类器,AdaBoost分类器利用同一种基分类器(弱分类器),基于分类器的错误率分配不同的权重参数,最后累加加权的预测结果作为输出。

1、 Bagging方法

在介绍AdaBoost之前,我们首先大致介绍一种基于数据随机重抽样的分类器构建方法,即bagging(bootstrap aggregating)方法,其是从原始数据集选择s次后得到s个新数据集的一种技术。需要说明的是,新数据集和原数据集的大小相等。每个数据集都是通过在原始数据集上先后随机选择一个样本来进行替换得到的新的数据集(即先随机选择一个样本,然后随机选择另外一个样本替换之前的样本),并且这里的替换可以多次选择同一样本,也就是说某些样本可能多次出现,而另外有一些样本在新集合中不再出现。s个数据集准备好之后,将某个学习算法分别作用于每个数据集就得到s个分类器。当要对新的数据进行分类时,就应用这s个分类器进行分类,最后根据多数表决的原则确定出最后的分类结果。

2、 Boosting方法

Boosting与上面提到的Bagging很类似,都是采用同一种基分类器的组合方法。而与Bagging不同的是,Boosting是集中关注分类器错分的那些数据来获得新的分类器。

此外,Bagging中分类器权重相等,而Boosting中分类器的权值并不相等,分类器的错误率越低,那么其对应的权重也就越大,越容易对预测结果产生影响。

Boosting 是一类算法的总称,Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类。

为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到很好的效果。(俗话说,"三个臭皮匠,顶个诸葛亮"、“兄弟齐心,其利断金”,就是这个道理)

这类 boosting 算法的特点是各个弱分类器之间是串行训练的,当前弱分类器的训练依赖于上一轮弱分类器的训练结果。
各个弱分类器的权重是不同的,效果好的弱分类器的权重大,效果差的弱分类器的权重小。

为学习算法的设计提供了一种有效的新思路和新方法。其中最为成功应用的是,Yoav Freund和Robert Schapire在1995年提出的AdaBoost算法

Boosting有许多版本,而今天要着重介绍的是比较流行的AdaBoost

当然,AdaBoost 不止适用于分类模型,也可以用来训练回归模型。这需要将弱分类器替换成回归模型,并改动损失函数。

下面介绍用 AdaBoost 进行分类的算法的原理。

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

AdaBoost的一般流程如下所示:

(1)收集数据

(2)准备数据:依赖于所用的基分类器的类型,这里的是单层决策树,即树桩,该类型决策树可以处理任何类型的数据。

(3)分析数据

(4)训练算法:利用提供的数据集训练分类器

(5)测试算法:利用提供的测试数据集计算分类的错误率

(6)使用算法:算法的相关推广,满足实际的需要

训练算法:基于错误提升分类器的性能
上面所述的基分类器,或者说弱分类器,意味着分类器的性能不会太好,可能要比随机猜测要好一些,一般而言,在二类分类情况下,弱分类器的分类错误率达到甚至超过50%,显然也只是比随机猜测略好。但是,强分类器的分类错误率相对而言就要小很多,AdaBoost算法就是易于这些弱分类器的组合最终来完成分类预测的。

AdaBoost的运行过程:训练数据的每一个样本,并赋予其一个权重,这些权值构成权重向量D,维度等于数据集样本个数。开始时,这些权重都是相等的,首先在训练数据集上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器,但是在第二次训练时,将会根据分类器的错误率,对数据集中样本的各个权重进行调整,分类正确的样本的权重降低,而分类错的样本权重则上升,但这些权重的总和保持不变为1.

并且,最终的分类器会基于这些训练的弱分类器的分类错误率,分配不同的决定系数alpha,错误率低的分类器获得更高的决定系数,从而在对数据进行预测时起关键作用。alpha的计算根据错误率得来:
alpha=0.5*ln(1-ε/max(ε,1e-16))
其中,ε=为正确分类的样本数目/样本总数,max(ε,1e-16)是为了防止错误率为0而造成分母为0的情况发生!
计算出alpha之后,就可以对权重向量进行更新了,使得分类错误的样本获得更高的权重,而分类正确的样本获得更低的权重。

D的计算公式如下:
如果某个样本被正确分类,那么权重更新为:
D(m+1,i)=D(m,i)*exp(-alpha)/sum(D)
如果某个样本被错误分类,那么权重更新为:
D(m+1,i)=D(m,i)*exp(alpha)/sum(D)
其中,m为迭代的次数,即训练的第m个分类器,i为权重向量的第i个分量,i<=数据集样本数量

当我们更新完各个样本的权重之后,就可以进行下一次的迭代训练。AdaBoost算法会不断重复训练和调整权重,直至达到迭代次数,或者训练错误率为0。

基于单层决策树构建弱分类器
单层决策树是一种简单的决策树,也称为决策树桩。单层决策树可以看做是由一个根节点直接连接两个叶结点的简单决策树。

https://blog.csdn.net/px_528/article/details/72963977

AdaBoost 算法只直接支持二分类,遇到多分类的情况,需要借助 one-versus-rest 的思想来训练多分类模型。

引用:
https://www.cnblogs.com/litthorse/p/9062214.html

https://www.cnblogs.com/davidwang456/articles/8927029.html

https://www.cnblogs.com/zy230530/p/6909288.html

相关文章
|
10月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
275 0
|
8月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
9月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
362 1
|
算法 数据可视化 开发者
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
为什么要学习数据结构与算法
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
3013 11
架构学习:7种负载均衡算法策略
|
算法 数据安全/隐私保护
基于Adaboost的数据分类算法matlab仿真
本程序基于Adaboost算法进行数据分类的Matlab仿真,对比线性与非线性分类效果。使用MATLAB2022A版本运行,展示完整无水印结果。AdaBoost通过迭代训练弱分类器并赋予错分样本更高权重,最终组合成强分类器,显著提升预测准确率。随着弱分类器数量增加,训练误差逐渐减小。核心代码实现详细,适合研究和教学使用。
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!