AdaBoost算法详解自用笔记(1)二分类问题举例分析

AdaBoost算法详解自用笔记(1)二分类问题举例分析

提升方法的思路

AdaBoost作为一种提升方法,其需要回答两个问题:一是每一轮如何改变训练数据的权重或概率分布;二是如何将弱分类器组合成一个强分类器。对于第一个问题,AdaBoost的做法是提高那些被前一轮弱分类器错误分类样本的权重,而降低那些被正确分类样本的权重,这样一来那些没有得到正确分类的数据,由于权重被增大后,将在下一轮的弱分类器中被给予更大关注。对于第二个问题,AdaBoost的做法是采取多数表决的方式,加大分类误差率小的弱分类器的权重,减小分类误差率大的弱分类器的权重,这样一来使得分类误差率小的弱分类器将会在表决中起到更大的作用。
在这里插入图片描述

以一道例题讲解算法过程

以下面的表格为例,自变量 X X X是一维的离散数据,取值从0到9, Y Y Y是二分类因变量,取值是1或-1。这里通过这么一道简单的例题过一遍AdaBoost的算法过程,而不直接推理证明公式,让大家对其有个直观的理解。
N N N代表样本总数,值为10; ω m , i \omega_m,_i ωm,i代表第 m m m轮弱分类器第 i i i个样本的权重; D m D_m Dm代表第 m m m轮的权重集合; y ^ \hat{y} y^代表预测值。

序号12345678910
X0123456789
Y111-1-1-1111-1
弱分类器1的 y ^ \hat{y} y^111-1-1-1-1-1-1-1
弱分类器2的 y ^ \hat{y} y^111111-1-1-1-1
Step1 初始化数据权重

从上面的表格我们可以知道,共有10个样本,因此每一个样本的权重初始化为:
ω 1 , 1 = ω 1 , 2 = ⋅ ⋅ ⋅ = ω 1 , 10 = 1 N = 1 10 \omega_{1,1}=\omega_{1,2}=\cdot\cdot\cdot=\omega_{1,10}=\frac{1}{N}=\frac{1}{10} ω1,1=ω1,2==ω1,10=N1=101

因此对应的初始权重可以写成集合为:

D 1 = { ω 1 , 1 , ω 1 , 2 ⋅ ⋅ ⋅ ω 1 , 10 } D_1=\left\{\begin{matrix} \omega_{1,1},\omega_{1,2}\cdot\cdot\cdot\omega_{1,10} \end{matrix}\right\} D1={ω1,1,ω1,2ω1,10}

Step2 第一轮学习器的选择

对于上面10个样本的情况,有9种切分方法(以 X = 2.5 X=2.5 X=2.5 X = 2.6 X=2.6 X=2.6作为阈值的切分效果是一样的),每一种切分方法都对应了一种弱分类器。对于弱分类器1而言,误判的个数有3个,分别是序号7、8、9对应的样本;对于弱分类器2而言,误判的个数有6个,分别是序号4、5、6、7、8、9对应的样本。
那么我们如何评估哪一个弱分类器效果更好呢?这里引入误分类率 e m e_m em这个概念,其不仅关注误判的个数,还关注数据的权重。其中,第 m m m轮学习器(这一轮最好的弱分类器和往轮的学习器组成这一轮的学习器,对于第一轮而言,最好的弱分类器就是学习器)的误分类率计算如下:
e m = ∑ i = 1 N ω m , i I ( P ( G 1 ( x i ) ≠ y i ) ) e_m=\sum_{i=1}^{N}\omega_{m,i}I(P(G_1(x_i)\neq y_i)) em=i=1Nωm,iI(P(G1(xi)=yi))
由于计算针对的是一轮而不是一个样本,那么要将当前轮的所有样本的误分类率累加求和。引入示性函数 I I I告诉我们误分类率关注的是错误分类的部分,因此在计算的时候以及权重更新的时候,不用去关注正确分类的部分,因为示性函数将这一部分赋值为0。其中,示性函数定义如下:
I ( P ( G 1 ( x i ) ≠ y i ) = { 1 , G 1 ( x i ) ≠ y i 0 , G 1 ( x i ) = y i I(P(G_1(x_i)\neq y_i)= \begin{cases} 1,G_1(x_i)\neq y_i\\ 0,G_1(x_i)=y_i \end{cases} I(P(G1(xi)=yi)={1,G1(xi)=yi0,G1(xi)=yi

第一轮中,我们在 D 1 D_1 D1的权重下进行9种弱分类器误分类率的计算,对于弱分类器1而言,误分类率计算如下:
3 × 1 10 × 1 = 0.3 3\times\frac{1}{10}\times1=0.3 3×101×1=0.3
对于弱分类器2而言,误分类率计算如下:
6 × 1 10 × 1 = 0.6 6\times\frac{1}{10}\times1=0.6 6×101×1=0.6
以此类推计算剩下的7种切分方式,发现弱分类器1的误分类率最低,因此我们选择弱分类器1作为第一轮的分类器学习器,我们把它记为:
G 1 = { + 1 , x < 2.5 − 1 , x > 2.5 G_1=\begin{cases} +1,x<2.5\\ -1,x>2.5 \end{cases} G1={+1,x<2.51,x>2.5
对应的误分类率为:
e 1 = P ( G 1 ( x i ) ≠ y i ) = 0.3 e_1=P(G_1(x_i)\neq y_i)=0.3 e1=P(G1(xi)=yi)=0.3
在选择了第一轮的学习器后,现在我们要为第二轮的选择进行权重更新,使得第二轮组合成的新学习器效果优于第一轮的学习器。对于第二轮的数据权重,其计算公式如下:
ω 2 , i = ω 1 , i Z 1 exp ⁡ ( − α 1 y i G 1 ( x i ) ) \omega_{2,i}=\frac{\omega_{1,i}}{Z_1}\exp(-\alpha_1y_iG_1(x_i)) ω2,i=Z1ω1,iexp(α1yiG1(xi))
其中, Z 1 Z_1 Z1规范化因子。通俗地讲,是将更新后的权重之和归为 1,保证权重序列以一个离散的概率分布出现(后面章节再进行详细推导)。其计算公式如下:
Z 1 = ω 1 , i exp ⁡ ( − α 1 y i G 1 ( x 1 ) ) Z_1=\omega_{1,i}\exp(-\alpha_1y_iG_1(x_1)) Z1=ω1,iexp(α1yiG1(x1))
α i \alpha_i αi转换系数,它与误分类率之间有一个公式(如何推导出来的也在后面章节会详细说明)。其中,弱分类器1的转换系数为:
α 1 = 1 2 l n 1 − e 1 e 1 = 0.4236 \alpha_1=\frac{1}{2}ln\frac{1-e_1}{e_1}=0.4236 α1=21lne11e1=0.4236
在上面三条公式中, y i y_i yi G 1 ( x i ) G_1(x_i) G1(xi)分别代表第 i i i个样本的真实值和第一轮学习器第 i i i个样本的预测值。如果真实值和预测值相同,即预测正确,那么 ( − α 1 y i G 1 ( x 1 ) ) (-\alpha_1y_iG_1(x_1)) (α1yiG1(x1))即为 − α 1 -\alpha_1 α1,如果预测错误,那么 ( − α 1 y i G 1 ( x 1 ) ) (-\alpha_1y_iG_1(x_1)) (α1yiG1(x1))即为 α 1 \alpha_1 α1。经过计算,第二轮的数据权重集合为:
D 2 = { 0.07143 , 0.07143 , 0.07143 , 0.07143 , 0.07143 , 0.07143 , 0.16667 , 0.16667 , 0.16667 , 0.16667 } D_2=\left\{\begin{matrix} 0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.16667 \end{matrix}\right\} D2={0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.16667}
由上述公式可知,分类正确的数据权重从0.1下降到了0.07143,而分类错误的数据权重从0.1提升到了0.16667。此时,第一轮的决策函数可写为:
f 1 ( x ) = α 1 G 1 ( x ) f_1(x)=\alpha_1G_1(x) f1(x)=α1G1(x)
第一轮的学习器可写为:
s i g n [ f 1 ( x ) ] sign[f_1(x)] sign[f1(x)]

Step3 第二轮学习器的选择

仿照Step2,我们最佳弱分类器划分阈值为 X = 8.5 X=8.5 X=8.5,因此我们把它作为第二轮的学习器,记为:
G 2 = { + 1 , x < 8.5 − 1 , x > 8.5 G_2=\begin{cases} +1,x<8.5\\ -1,x>8.5 \end{cases} G2={+1,x<8.51,x>8.5
此时的误判样本即为序号为4,5,6对应的样本,在 D 2 D_2 D2的权重基础下,我们求得第二轮学习器的误分类率为:
e 2 = ∑ i = 1 10 ω 2 , i I ( P ( G 2 ( x i ) ≠ y i ) ) = 0.07143 × 1 + 0.07143 × 1 + 0.07143 × 1 = 0.2143 e_2=\sum_{i=1}^{10}\omega_{2,i}I(P(G_2(x_i)\neq y_i)) =0.07143\times1+0.07143\times1+0.07143\times1 =0.2143 e2=i=110ω2,iI(P(G2(xi)=yi))=0.07143×1+0.07143×1+0.07143×1=0.2143
同理,第二轮所选学习器的转换系数计算如下:
α 2 = 1 2 l n 1 − e 2 e 2 = 1 2 l n 1 − 0.2143 0.2143 = 0.6496 \alpha_2=\frac{1}{2}ln\frac{1-e_2}{e_2}=\frac{1}{2}ln\frac{1-0.2143}{0.2143}=0.6496 α2=21lne21e2=21ln0.214310.2143=0.6496
此时,第二轮的决策函数可写为:
f 2 ( x ) = α 1 G 1 ( x ) + α 2 G 2 ( x ) f_2(x)=\alpha_1G_1(x)+\alpha_2G_2(x) f2(x)=α1G1(x)+α2G2(x)
相应的学习器为:
s i g n [ f 2 ( x ) ] = s i g n [ 0.4236 G 1 ( x ) + 0.6496 G 2 ( x ) ] sign[f_2(x)]=sign[0.4236G_1(x)+0.6496G_2(x)] sign[f2(x)]=sign[0.4236G1(x)+0.6496G2(x)]
这个时候分类的结果看的是 s i g n [ f 2 ( x ) ] sign[f_2(x)] sign[f2(x)],比如序号1对应的样本, G 1 ( x 1 ) = 1 G_1(x_1)=1 G1(x1)=1 G 2 ( x 1 ) = 1 G_2(x_1)=1 G2(x1)=1,对应的 s i g n [ f 2 ( x ) ] = s g i n [ 0.4236 × 1 + 0.6469 × 1 = 1.0732 > 0 ] sign[f_2(x)]=sgin[0.4236\times1+0.6469\times1=1.0732>0] sign[f2(x)]=sgin[0.4236×1+0.6469×1=1.0732>0],所以第二轮学习器将序号1这个样本分类为1。

Step4 第三轮学习器的选择

仿照Step2和Step3,我们首先更新数据权重,计算得到的第三轮的权重集合为:
D 3 = { 0.0455 , 0.0455 , 0.0455 , 0.16667 , 0.16667 , 0.16667 , 0.1060 , 0.1060 , 0.1060 , 0.0455 } D_3=\left\{\begin{matrix} 0.0455,0.0455,0.0455,0.16667,0.16667,0.16667,0.1060,0.1060,0.1060,0.0455 \end{matrix}\right\} D3={0.0455,0.0455,0.0455,0.16667,0.16667,0.16667,0.1060,0.1060,0.1060,0.0455}
接着我们计算第三轮各个弱分类器的误分类率,最终发现阈值为 X = 5.5 X=5.5 X=5.5的弱分类器误分类率最小,我们把其作为第三轮的学习器,记为:
G 3 = { + 1 , x < 5.5 − 1 , x > 5.5 G_3=\begin{cases} +1,x<5.5\\ -1,x>5.5 \end{cases} G3={+1,x<5.51,x>5.5
其分类错误的是序号为1,2,3,10对应的样本,那么我们可以计算出第三轮学习器的误分类率为:
e 3 = ∑ i = 1 10 ω 3 , i I ( P ( G 3 ( x i ) ≠ y i ) ) = 0.0455 × 1 + 0.0455 × 1 + 0.0455 × 1 + 0.0455 × 1 = 0.1820 e_3=\sum_{i=1}^{10}\omega_{3,i}I(P(G_3(x_i)\neq y_i)) =0.0455\times1+0.0455\times1+0.0455\times1+0.0455\times1 =0.1820 e3=i=110ω3,iI(P(G3(xi)=yi))=0.0455×1+0.0455×1+0.0455×1+0.0455×1=0.1820
最后我们计算第三轮所选的学习器的转换系数:
α 3 = 1 2 l n 1 − e 3 e 3 = 1 2 l n 1 − 0.1820 0.1820 = 0.7514 \alpha_3=\frac{1}{2}ln\frac{1-e_3}{e_3}=\frac{1}{2}ln\frac{1-0.1820}{0.1820}=0.7514 α3=21lne31e3=21ln0.182010.1820=0.7514
此时,到第三轮这里生成的决策函数就变成了:
f 3 ( x ) = α 1 G 1 ( x ) + α 2 G 2 ( x ) + α 3 G 3 ( x ) f_3(x)=\alpha_1G_1(x)+\alpha_2G_2(x)+\alpha_3G_3(x) f3(x)=α1G1(x)+α2G2(x)+α3G3(x)
相应的学习器为:
s i g n [ f 3 ( x ) ] = s i g n [ 0.4236 G 1 ( x ) + 0.6496 G 2 ( x ) + 0.7514 G 3 ( x 3 ) ] sign[f_3(x)]=sign[0.4236G_1(x)+0.6496G_2(x)+0.7514G_3(x_3)] sign[f3(x)]=sign[0.4236G1(x)+0.6496G2(x)+0.7514G3(x3)]
经过了这三轮选择的学习器的叠加,此时的强学习器所预测的准确率达到了100%,自此大功告成!

参考知乎文章【十分钟 机器学习 系列课程】 讲义(55):AdaBoost例题讲解 - 知乎 (zhihu.com)以及李航《统计学习方法》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/509767.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【御控物联】JavaScript JSON结构转换(7):数组To数组——键值互换属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、案例之《JSON数组 To JSON数组》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0c;生成新的JS…

《FDTD Solutions仿真全面教程:从基础入门到论文复现》

2024年5月11日-5月12日 2024年5月18日-5月19日 适用人群&#xff1a; 1.光电工程、物理学、材料科学等相关专业的硕博研究生及科研人员 2.工作于微纳光学、超构材料、光通信、光电子器件等领域的研发工程师 3.对光电仿真技术有浓厚兴趣且希望提升自身科研能力的高校教师和企业研…

ArcGIS操作(四)

任务&#xff1a; 根据江苏省夜间灯光影像完成数据处理与分析查阅统计年鉴数据以提取建成区空间分布位置完成建成区重心转移轨迹 步骤&#xff1a; 这里选取江苏省2000年、2004年、2008年夜光数据进行分析 加载影像 掩膜提取 投影 栅格转面 融合 栅格转面数据时分冗余&…

2024年,短期PMP备考上岸攻略!

今天分享一个PMP备考经验&#xff0c;正在备考PMP的小伙伴&#xff0c;咱们共勉&#xff01; 第一周、阅读教材 之前是第六版教材&#xff0c;花了很长时间阅读和梳理框架。现在是第七版教材&#xff0c;内容少了很多&#xff0c;只有300多页&#xff0c;不会特别耗时间&…

数据结构进阶篇 之 【堆的应用】(堆排序,TOP-K问题)详细讲解

所有人都关心我飞的高不高&#xff0c;只有我妈关心我翅膀硬不硬 一、堆的应用 1. 堆排序 1.1 建堆 1.2 利用堆删除思想来进行排序 2.TOP-K问题 二、完结撒❀ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–❀–❀–…

GPT-5:更强的ChatGPT!将在高级推理功能上实现重大进步!GPT-5有哪些功能作用?

自 Claude 3 发布以来&#xff0c;外界对 GPT-5 的期待越来越强。毕竟Claude 3已经全面超越了 GPT-4&#xff0c;成为迄今为止最强大模型。 对于即将发布的GPT-5&#xff0c;有哪些期待&#xff1f; 目前来说&#xff0c;GPT-5的将具备哪些新能力&#xff1f; GPT-5性能进步…

SA2601A 矽塔SYTATEK双NMOS半桥栅极驱动芯片 600V单相

SA2601A是一款针对于双NMOS的半桥栅极驱动芯片&#xff0c;专为高压、高速驱动N型功率MOSFET和IGBT设计&#xff0c;可在高达600V电压下工作。 SA2601A内置VCC和VBS欠压(UVLO)保护功能&#xff0c;防止功率管在过低的电压下工作&#xff0c;提高效率。 SA2601A输入脚兼容3.3-15…

安装pytorch3d 0.3.0遇到的一些问题

官网&#xff1a;PyTorch3D A library for deep learning with 3D datahttps://pytorch3d.org/最新版本pytorch3d/INSTALL.md at main facebookresearch/pytorch3d (github.com) 之前版本Releases facebookresearch/pytorch3d (github.com) 找到需要的版本&#xff0c;例如…

2024春算法训练3——数组与字符串

一、题解 1、A-[NOIP2013]记数问题_2024春算法训练3——数组与字符串 (nowcoder.com) 直接暴力用一个哈希表存每个数出现的次数&#xff0c;最坏的时间时间复杂度为7*10^7&#xff08;实际上比这个数要小&#xff09;&#xff1b;代码如下&#xff1a; #include<iostream…

SSL安全证书多少钱?

SSL安全证书多少钱&#xff1f;单域名、多域名与通配符SSL证书的全面对比与价格分析。SSL&#xff08;Secure Sockets Layer&#xff09;证书作为一种加密技术&#xff0c;能够确保网站数据传输的安全性和可靠性&#xff0c;对于提升网站信誉和保护用户隐私具有至关重要的作用。…

niushop单商户V5多店版源码分享三端uniapp打包方法包括PC端_小程序或h5端打包_收银端打包_APP端打包_商户端

目前多店版有四端uniapp&#xff0c;包括PC端uniapp&#xff0c;商家端uniapp&#xff0c;收银端uniapp&#xff0c;门店手机端uniapp&#xff0c;下面我总结下这些端的打包流程希望能帮助到大家&#xff0c;需要交流的可以看我昵称或者点我头像关注我分享代码和教程 一.niush…

kettle介绍-参数变量

ETL中为什么使用参数变量 实现ETL的复用D,Q,P环境不同,使用变量方便发布有的条件需要外部传入增量ETL灵活性强 kettle中参数变量种类 Environment VariablesKettle VariablesInternal VariablesTransformation中的变量Job中的变量 Environment Variables 通过Set Environm…

QT - 日志:qDebug/qInfo/qWarning/qCritical

篇一、日志打印函数 头文件&#xff1a; #include <QDebug> 代码&#xff1a;qDebug()<<"hello world!"; 其他打印级别&#xff1a; qInfo(): 普通信息 qDebug(): 调试信息 qWarning(): 警告信息 qCritical(): 严重错误 qFatal(): 致命错误 1. qDebug…

FSH6罗德与施瓦茨FSH6频谱分析仪

181/2461/8938产品概述&#xff1a; R&S FSH6频谱分析仪坚固耐用、方便易用&#xff0c;专为野外使用而设计。它重量轻、操作简单、设计合理且具有大量测量功能&#xff0c;是任何需要高效测量仪器进行户外工作的人不可或缺的工具。 R&S FSH6是一款手持式频谱分析仪&…

Jupyter Notebook启动及其常用快捷键

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 1.JupyterNotebook 第一种启动方式 点击 windows 电脑左下角开始 > 搜索 Anaconda > 点击 Anaconda Prompt 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 在命令行窗口输入&…

华盛顿大学撰文反驳微软,我们无法删除大模型关于哈利波特的记忆

在人工智能的发展过程中&#xff0c;一个引人入胜的议题是机器学习模型是否能够被训练以忘记其曾经学到的信息。近期&#xff0c;Ronen Eldan和Mark Russinovich在其研究“谁才是哈利波特&#xff1f;”[1]中提出了一种创新技术&#xff0c;声称能够从LLMs中“抹去”特定数据集…

城市交通视频视频联网系统实施方案

目录 1.需求调研 2.系统设计 3.技术分析 4.技术开发 5.系统平台环境要求 6.网络要求 7.安全要求 8.项目交付和验收 8.1交付准备 8.2系统安装、培训 8.2.1系统验收 8.2.2项目进度计划 附录&#xff1a;交通监控设备情况调研表 1.需求调研 从SZ市交通运输局、以及下…

opencv使用问题记录一二

opencv介绍 opencv是一个计算机视觉处理软件库&#xff0c;拥有强大的功能和高效的性能。 但是由于早期版本的原因&#xff0c;存在一些与目前主流使用不兼容的问题 问题与解决 RGB通道顺序 一般图片处理类库的通道顺序就是RGB&#xff0c;但是opencv的是反过来的&#xf…

如何改写出优质文案,AI写作工具有方法

在当今数字化时代&#xff0c;内容创作已成为企业和个人在市场竞争中脱颖而出的关键因素。而写作优质文案是吸引读者注意力、传达信息以及促使行动的重要手段之一。然而&#xff0c;对许多人来说&#xff0c;写作可能是一项具有挑战性的任务。幸运的是&#xff0c;随着人工智能…

书生·浦语大模型开源体系(二)笔记

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…