【原】关于AdaBoost的一些再思考

一、Decision Stumps:

Decision Stumps称为单层分类器,主要用作Ensemble Method的组件(弱分类器)。一般只进行一次判定,可以包含两个或者多个叶结点。对于离散数据,可以选取该属性的任意一个数据作为判定的分割点;对于连续数据,可以选择属性的一个阈值做为分割点进行判定(大于该阈值分配到一类,小于该阈值分配到另一类;当然也可以选取多个阈值并由此得到多个叶结点)。

 

二、AdaBoost的理解:

1、基本流程

简单的说,AdaBoost框架就是根据指定的参数clip_image002c837a63a-9c13-4dde-9a65-d3eab98da80f,进行clip_image00238247447-ab8e-455c-bdf9-8e18697d823f轮训练得到clip_image002e665e325-682a-463d-ae7a-2dd539e819a5个弱分类器clip_image004f1a5b3d3-5c7d-463d-b7ed-95f116a6e53d及每个弱分类器对应的权重clip_image0065d78a53e-2f09-4766-b586-04c7ce7cb1b0,最后将这些弱分类器的结果进行线性组合得到最终的结果。

关于多属性数据集的处理:

在每一轮训练过程中,在每个属性上根据分割的阈值不同得到多个单层分类器。在这些从所有属性上得到的分类器中选取一个带权误差率最小的单层分类器作为该轮训练的弱分类器。

 

2、带权分类误差

在进行训练之前,为训练集中的每个样本分配一个权重,使用向量clip_image008b1806c27-78d1-48b4-b916-b7ad9b31947e表示。在第clip_image010b1f124c2-3fc4-4e90-8810-1c2ef60d89ab轮训练结束后,根据得到的弱分类器clip_image004e9268b1b-cd3c-457d-a2fa-d36cbc4d1420的性能计算该分类器clip_image004e04f18c0-ec55-4a98-92cb-a76678b8819a对应的权值clip_image0068d9c72cf-ff9a-4aae-9fbe-a1ce0932f3e3,并由clip_image004d1ae03db-eebf-4e1e-a1b6-c402cde31cdc的在训练集上的分类结果对权重向量clip_image014b1fc748d-4865-4130-b59c-634242a4f24f进行更新。

分类器clip_image004ffe2c067-932a-46dc-98e0-297d57524cd5的性能度量和该分类器在训练集上的结果,都是通过计算该分类器在训练集上的带权分类误差获取。所谓带权分类误差,是指将待分类的样本包含的权重(此处的权重就是之前为该样本分配的权重),结合在该数据集上的分类误差得到分类器在该数据集上的一个考虑样本权重的分类误差,其定义如下:

clip_image002[9]                                 (1.1)

其中,clip_image01888248a36-ef9c-4f93-91ce-36fac03b9179表示第clip_image010abe83df3-9505-4c1a-80dd-88657ecef591个弱分类器的带权分类误差值,clip_image021bdb478f1-afcd-4c38-8b0d-2af7ff0be1da表示第clip_image0100e881f9a-4c01-448c-9ecf-63053323e079次更新后样本clip_image023c4dac779-84bb-4a49-88ce-6e8c64d945cf的权重,clip_image025c4f68032-fc6c-4016-a0f6-42ed21db5b47表示使用第clip_image0109514886c-e704-49c1-a3d2-3d251b4b9659个弱分类器对样本clip_image023bfbf33a0-ed0c-47a0-adf8-466a75d126e1的分类结果,clip_image027c45a3c9b-f997-46a0-8453-b4b958ba30a8表示样本clip_image0237c45b25f-9427-4abf-b14f-eaf2228eebd2的真实标签,clip_image029c77b4e40-b6f5-4d95-8aa3-de013a320557是一个指示函数,其值如下:

clip_image03121a0c071-8d45-4e0c-aab9-a4ea6fcc4e90                           (1.2)

通过公式(1.1)和(1.2)可以看出带权分类误差clip_image018e7582f61-0d4f-46ff-b055-35e5a2289c6f与两方面的因素相关:

1) 分类器在样本上的误差值;

2) 样本集中每个样本的权重;

注意:AdaBoost就是通过该值与弱分类器产生关系。

 

3、带权分类误差再分析

以DS(Decision Stumps)弱分类器为例,对于一个数据集包含多个属性,要在该数据集上学习一个DS,可以使用不同的属性作为分割判断条件。对于同一个属性,也可以选择多个不同的分割点(离散型)/阈值(连续性)作为判断条件。因此,对于一个数据集实质上可以产生很多不同的DS,那么究竟选择哪一个DS作为我们从该数据集上最终学习得到的弱分类器?

很直观的想法,我们可以使用穷举产生所有的DS,然后分别计算每个DS的分类误差,选择具有最小分类误差的DS作为从该数据集上学习到的弱分类器。然而,问题出在我们学习的这个数据集中的所有样本权重(此处可以理解为每个样本的价值、贡献度等)并不相同。我们在考虑选择哪个DS最为最终的弱分类器时不但要考虑该DS的分类错误率,还要考虑每个样本的权重问题,因为将高权重的样本分错造成的后果远比将低权重样本分错更为严重。

考虑公式(1.1)中带权分类误差clip_image01862093f6f-04b6-44d2-a880-57f52c5d9352的定义,该指标有效的将分类器的分类误差和待分类样本的权重结合起来,因此可以作为选择弱分类器时的一个标准使用。

总结起来简单的说,带权分类误差clip_image018db5ea93e-955a-48f5-93a1-fc516204d89e将分类器的分类误差和样本本身的权重进行结合,可以作为模型选择的一个标准使用。

 

4、弱分类器的权重计算

弱分类器clip_image002[5]对应的权重clip_image004[5]与其本身的带权分类误差相关,其计算公式如下:

clip_image006[5]                                          (1.3)

通过简单分析可以知道,带权分类误差的范围是[0,1],绘制分类器的权重函数的图像,如下所示:

clip_image008[5]

Fig. 1. 弱分类器权重函数分布

Fig. 1.可以看出,弱分类器的权重与其对应的带权分类误差呈反比关系,即就是带权分类误差越小,该分类器对应的权值越大;反之亦然。

 

5、训练样本的权重更新

训练得到新的弱分类器clip_image0041ab7fbcf-56ee-4616-b309-a59c6bab7440后需要对样本权值clip_image035a1f06846-9712-4e07-ab08-690fbfa58509进行更新,更新的公式如下:

clip_image037b3eced21-0ef4-46f3-b5bc-1e96bb7c6af7                                           (1.4)

公式(1.4)定义了计算弱分类器clip_image0049295fa61-9f5a-4a26-ab9f-5b3c3b05a002对应的权值clip_image006703d11ca-a1c6-4e62-9ca3-f1788536a49f后,对样本clip_image0239dabe373-a7c4-4160-adaa-a5ca6df1c667的权重更新过程。如果该分类器在该样本上分类正确,则降低该样本的权值;如果分类错误,则提高该样本的权值。公式中前半部分clip_image04128cbbc2a-9b35-4bc1-b26d-2bb1b00e87c7clip_image043c1f9df6c-29b3-4a9f-b12e-df9948e8eab8主要用于对整个权值向量进行归一化,以使其和为1。

 

6、参考

维基百科关于AdaBoost算法的介绍:

用 xi 和 yi 表示原始样本集D的样本点和它们的类标(注意,yi的取值只能是+1或-1)。用 Wk(i) 表示第k次迭代时全体样本的权重分布。这样就有如下所示的AdaBoost算法:

1. begin initial D={x1,y1,...,xn,yn},kmax(最大循环次数),Wk(i)=1/n,i=1,...,n

2. k ← 0

3. do k ← k+1

4. 训练使用按照 Wk(i) 采样的 D 的弱学习器 Ck

5. Ek ← 对使用 Wk(i) 的 D 测量的 Ck 的训练误差

6. clip_image044972658ef-8963-4f3b-8e5b-79d99c500776

7. clip_image045c1650ba7-f892-4a66-b9d4-dd39050ffa5f

8. until k=kmax

9. return Ck和αk,k=1,...,kmax(带权值分类器的总体)

10. end

注意第5行中,当前权重分布必须考虑到分类器 Ck 的误差率。在第7行中, Zk 只是一个归一化系数,使得 Wk(i) 能够代表一个真正的分布,而 hk(xi) 是分量分类器 Ck 给出的对任一样本点 xi 的标记(+1或-1),hk(xi) = yi 时,样本被正确分类。第8行中的迭代停止条件可以被换为判断当前误差率是否小于一个阈值。

最后的总体分类的判决可以使用各个分量分类器加权平均来得到:

clip_image046a3145377-128f-43f4-a5e4-68518f999109

这样,最后对分类结果的判定规则是:

clip_image047baa0390d-7d38-451e-aa70-2a8ff40c7f62

 

三、整体流程再梳理

按照自己的理解将AdaBoost的框架再进行梳理一遍,整个Boost框架分为两部分:训练和分类。

假设样本的类别为:clip_image002

1、训练部分

a) 为训练集中每个样本分配权重clip_image004

b) 训练弱分类器clip_image006

c) 计算带权分类误差clip_image008

d) 计算弱分类器对应的权重clip_image010

e) 更新样本权重clip_image012

最终得到clip_image014个不同的弱分类器及其对应的权重。 clip_image016

 

2、分类部分

a) 对待分类样本clip_image018计算函数clip_image020

b) 对该样本最终的分类结果为clip_image022

 

四、核心问题再讨论

 

1、带权分类误差的作用:

在第二部分详细讨论了带权样本误差的生成机制问题,描述了如何计算带权样本误差和它怎样对AdaBoost框架产生影响。这里,将带权样本误差的作用再做以简单的总结,带权分类误差的主要作用有两个:

1、 在训练弱分类器时,使用该指标在训练的多个DS中选择带权分类误差最小的最为该轮训练的弱分类器;

2、 在AdaBoost框架中,使用该指标计算该轮训练得到的弱分类器对应的权值;

 

2、弱分类器的误差和AdaBoost框架的误差:

实质上,在整个训练的过程中,每轮训练得到的弱分类器可能一直会存在分类错误的问题(不论训练了多少轮,生成的单个弱分类器都有分类错误),然而整个AdaBoost框架却有可能快速收敛(整个AdaBoost框架的错误率为0)。造成这个现象的原因是:

每轮训练结束后,AdaBoost框架会对样本的权重进行调整,该调整的结果是越到后面被错误分类的样本权重会越高。这样到后面,单个弱分类器为了达到较低的带权分类误差都会把样本权重高的样本分类正确。虽然单独来看,单个弱分类器仍会造成分类错误,但这些被错误分类的样本的权重都较低,在AdaBoost框架的最后输出时会被前面正确分类的高权重弱分类器“平衡”掉。这样造成的结果就是,虽然每个弱分类器可能都有分错的样本,然而整个AdaBoost框架却能保证对每个样本进行正确分类,从而实现快速收敛。

转载于:https://www.cnblogs.com/chaosimple/p/4029795.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机系统时间无法更改,电脑时间不能修改|系统时间改不了 四个处理办法

电脑时间不能修改|系统时间改不了 四个处理办法?电脑时间不但可以让网友准确的查看时间,还对软件的运行、工作等方面至关重要,有时大家看电脑时间不准确想要修改,确发现改不了系统时间。碰到该故障的朋友不要惊慌,下面…

斐波那契数列(fabnacci)java实现

斐波那契数列定义:From Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Fibonacci_number In mathematics, the Fibonacci numbers or Fibonacci sequence are the numbers in the following integer sequence:[2][3] or (often, in modern usage)…

计算机二级offic考试题库2017,2017年9月计算机二级MSOffice考试题「带答案」

2017年9月计算机二级MSOffice考试题「带答案」一、单选题1). 存储一个3232点的汉字字形码需用的字节数是( )。A.256B.128C.72D.16正确答案:B2). 无符号二进制整数101001转换成十进制整数等于( )。A.41B.43C.45D.39正确答案:A3). 一个教师讲授多门课程&am…

LiveQing直播点播存储流媒体服务-服务器并发性能及消耗带宽计算参考

LiveQing云端直播点播流媒体软件: 提供设备接入; RTMP推流服务、RTMP分发、HLS分发、HTTP-FLV分发; 云端录像、云端录像检索、云端录像点播、云端录像下载; RTMP转推、推流鉴权验证、推流信息统计、播放信息统计; 直播…

思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式

主要思想:将各硬件模块作为观察者加入观察者队列,当机器状态改变时Notify所有观察者,各观察者根据消息类型做不同反应或不作反应。 下面贴出代码简单实现,希望引起圈内朋友的关注,起到抛砖引玉的效果。 下面两个类是两个基类.…

Visual studio 打包

Visual studio 打包2009-08-07 11:171.打开要打包的“.lsn”文件,在“解决方案资源管理器”中随便打开一个窗口 2.菜单栏“文件”--->“添加”--->“新建项目” 3. 点击“项目类型”--->“其他项目类型”--->“安装和部署”,再在“模板”点击…

MySQL 性能优化的最佳20多条经验分享

当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧…

RabbitMQ(2) 一般介绍

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲…

python--Websocket实现, 加密 sha1,base64

需要用到gevent-websocket包,这里我们用下图这个 一.websocket简单实现 ep1.py from geventwebsocket.handler import WebSocketHandler from gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket # 引这个模块为了注释中显示提示用from flask i…

[工具] 解决sublime text运行javascript console无输出问题

1、使用nodeJS在sublime text 运行javascript 下载安装nodeJS在sublime text新建build system:tools->build system->new build system…,输入代码:{ "cmd": ["node", "$file"], "selector"…

计算机考试怎么复制粘贴文件,复制粘贴,教您电脑复制粘贴不能用了怎么解决...

操作电脑过程中经常需要复制、粘贴文字或图片,直接点击右键就可以操作的。但是使用过程中难免遇到一些故障问题导致右键复制粘贴功能无法使用,有些是软件引起的,有些是硬件引起的,怎么解决?下面,小编给大家…

【未解决】Reporting Services报表在浏览器中的显示

今天把微软的报表重新部署一遍,发现在不同的浏览器中,显示的尺寸大小不一样。在IE8浏览器中是正常的:而在火狐浏览器中却始终只有全屏的四分之一大小,无论在报表中如何修改尺寸也没有变化。看起来,应该是在浏览器的什么…

纽大计算机博士,斑马博士捷报|纽约大学 (NYU) MSc Computer Engineering 计算机工程硕士录取...

原标题:斑马博士捷报|纽约大学 (NYU) MSc Computer Engineering 计算机工程硕士录取马博士 (Dr. Zebra, Since 2010), 10年来深受海内外名校申请者的青睐!“定制化" 助你被“高于自身背景”的名校录取!斑马博士、斑马博士留学…

GridView中的CheckBox单击事件(oncheckedchanged)

在GridView中加入 CheckBox控件&#xff0c;想通过单击选中出现如下图所示效果&#xff1a; 具体做法是&#xff1a; 前台GV部份省掉。只加关键的CheckBox部份。 <asp:CheckBox ID"ItemCheckBox" oncheckedchanged"ItemCheckBox_CheckedChanged" AutoPo…

我的世界服务器怎么找到指定路径,[小白]MC服务端目录详解

服务器的前期准备工作都做好了&#xff0c;是时候上传服务端到服务器了。不过……先等等&#xff0c;在上传前你应该先了解一下服务端目录的结构以便于后期的维护&#xff01;如图所示的是MCPC1.6.4的服务端结构示意图&#xff0c;其他开服端基本相同&#xff0c;接下来我将逐一…

java中方法的参数传递机制

转载自 &#xff1a;https://www.cnblogs.com/lixiaolun/p/4311863.html 问&#xff1a;当一个对象被当作参数传递到一个方法后&#xff0c;此方法可改变这个对象的属性&#xff0c;并可返回变化后的结果&#xff0c;那么这里到底是值传递还是引用传递?   答:是值传递。Java…

GIT-Linux(CentOS7)系统部署git服务器

GIT-Linux(CentOS7)系统部署git服务器 root账号登录 一、 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖&#xff1a;ssh&#xff0c;防火墙,postfix(用于邮件通知) &#xff0c;wget&#xff0c;以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问。 1.安装ssh su…

2字段添加注释_Tableau学习系列(7):计算字段

计算字段是使用函数和运算符构造公式&#xff0c;对数据源字段&#xff08;包括维度、度量、参数等&#xff09;进行重新定义的字段。1 创建计算字段这里使用自带超市的数据&#xff0c;对各省市销售额从高到低排序进行可视化&#xff0c;但是如果想对各省销售额划份为高、中、…

SourceProvider.getJniDirectories

2019独角兽企业重金招聘Python工程师标准>>> 今天android studio跑项目&#xff0c;build了一下&#xff0c;始终跑不起&#xff0c;把gradle和android studio都更新了一下&#xff0c;还是不行&#xff0c; 一直报这个错误 UnsupportedMethodExceptionFailed to se…

虚拟服务器问题,虚拟主机常见的五大问题

导语&#xff1a;关于虚拟主机&#xff0c;很多用户在使用过程中&#xff0c;会遇到各种各样的问题&#xff0c;根据以往的客户咨询经验&#xff0c;我们总结出了几个比较常见的问题和相应的解决方案&#xff0c;希望能够帮到大家。1.空间的使用情况怎么查看有的时候客户想要看…