博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AdaBoost 和 Real Adaboost 总结
阅读量:6987 次
发布时间:2019-06-27

本文共 1914 字,大约阅读时间需要 6 分钟。

AdaBoost 和 Real Adaboost 总结

AdaBoost


AdaBoost, Adaptive Boosting(自适应增强), 是一种集成学习算法(ensemble learning),由Yoav Freund 和 Robert Schapire 于1995年提出。其思想是通过多个简单的弱分类器集成一个具有较高准确率的强分类器。


经典AdaBoost算法过程

输入:训练数据1027162-20160915170720836-1052899943.png,其中1027162-20160915170721242-353878322.png分别对应着样本特征和样本标签

输出:最终的强分类器1027162-20160915170721555-904647682.png
初始化:样本权重分布1027162-20160915170722070-1131037467.png
循环:t=1,...,T
....-针对权重样本 1027162-20160915170722555-1445072468.png训练弱分类器 1027162-20160915170723008-2073921393.png
....-计算弱分类器的错误率1027162-20160915170723414-1405104179.png,1027162-20160915170723805-588798442.png是示性函数
....-计算弱分类器的权重1027162-20160915170724367-313967012.png
....-使用当前的弱分类器更新样本的分布 1027162-20160915170724852-1318350252.png,其中1027162-20160915170725164-373980367.png是归一化常数
最终的前分类器为: 1027162-20160915170725555-1849726263.png


AdaBoost过程示意图

enter description here
AdaBoost.png


更新迭代原理

  • 从直观上理解,首先,当错误率$\epsilon$越大时,分类器的权重$\alpha$越小,这符合一般解释及分类器性能越高置信度也就越大,在最终的表决中所占比重也就越大。其次,在新样本分布的更新过程中,分类正确的样本在下次分类器学习中作用越小,而分错的样本在下次分类器学习中的作用越大,这样可以是新的分类器设计更集中在之前错分的样本分类上,使整体的分类性能提高。

  • 从理论上推导:

    AdaBoost采用的是指数误差函数1027162-20160915170726523-712264098.png,其中D是样本的分布,1027162-20160915170726914-247710427.png表示样本的标签,1027162-20160915170727398-1903811428.png表示在分布D上计算期望。

i. 首先是权重的更新,希望分类器1027162-20160915170727930-2040552642.png产生的总体指数误差最小,则

1027162-20160915170728414-670327801.png

其中1027162-20160915170728805-530831068.png表示某个分布上的概率分布函数。于是得到

1027162-20160915170729258-1228564872.png

即分类器权重的更新公式

ii. 接下来将推导分布的更新:

已获得前1027162-20160915170729664-105422237.png个分类器,我们希望获得第t个分类器能纠 正之前错误分类,使指数误差函数最小。

1027162-20160915170730367-327794931.png

泰勒展开1027162-20160915170730773-749424053.png:

1027162-20160915170731273-1335594065.png

这是因为1027162-20160915170731586-577622404.png

1027162-20160915170732008-1934880370.png

1027162-20160915170732383-426499078.png表示一个新的分布,则上式可以写作:

1027162-20160915170732836-202704766.png

类似的

1027162-20160915170733461-1352577533.png

于是得到分布的更新公式。


AdaBoost的误差上界

在更新分布时有归一化常数

1027162-20160915170733867-296402509.png

指数误差函数:

1027162-20160915170734398-76751199.png

AdaBoost分析

虽然在AdaBoost中对弱分类器没有限制,可以是基于多维特征的决策树,SVM等,但通常每个弱分类器都是基于所有特征中某一维构建的,并且输出结果只有+1,-1两种(二分类问题),所以在训练时每一轮迭代相当于挑选最好的特征。


Real AdaBoost


Real AdaBoost 过程:

给定训练集: 1027162-20160915170734883-377934465.png

训练集样本的初始分布: 1027162-20160915170735273-20493278.png
循环t=1,2,...,T: (T是弱分类器的个数)
.... - 将每一维特征的取值空间划分为若干个不相交的1027162-20160915170735570-1756933211.png
.... - 计算在每个子空间上上正负样本的权重

1027162-20160915170735867-770740587.png

.... - 计算每一个弱分类器的输出,1027162-20160915170736148-440340455.png,其中1027162-20160915170736398-1547749679.png是一个很小的正常量用于平滑。

.... - 计算归一化因子 1027162-20160915170736586-403034189.png
.... - 选择Z最小的的弱分类器作为该轮迭代选出的弱分类器 1027162-20160915170736820-1337774777.png
.... - 更新样本分布 1027162-20160915170737117-1531394045.png
最终的强分类器为:1027162-20160915170737461-408327702.png, b是阈值。


Real AdaBoost 的理解

相对于AdaBoost而言,Real AdaBoost中弱分类器不再仅输出{+1,-1},而是输出[-1,1]间的实数,所以称为Real AdaBoost, 我们可以认为输出的值其实就是AdaBoost里的权重加权后的结果,即1027162-20160915170737758-1922948677.png,所以Real AdaBoost也符合AdaBoost的框架

Real AdaBoost 的每个弱分类器设计是一种决策树的简单形式,而每个叶子节点判断依据是将该区间样本分类为样本数最多的那一类。简单的阈值化函数适用于线性可分情况,而对于线性不可分情形,采用这种分区间,即决策树的形式能取得较好的性能。

每次迭代都希望寻找最小分类误差的分类器,而Z值越小表示在对应样本分布下该分类器对应的正负样本个数差别越大,分类结果的置信度越高

下面我们从理论上分析迭代过程:

指数误差函数为:

1027162-20160915170738102-380688590.png

每次迭代的目标是寻找一个误差最小的分类器,即1027162-20160915170738492-196872820.png最小,那么由AdaBoost框架得到

1027162-20160915170738867-352278071.png

其中1027162-20160915170739117-1097223366.png是在该维度上分成N个区间后,落在第j个区间分类器输出值,为了使Z最小,可以得到

1027162-20160915170739539-309167379.png

此时Z取得最小值

1027162-20160915170740148-257552418.png

为了使输出函数更加平滑,也为了抑制差距太大或者一方为0的情形,引入平滑因子1027162-20160915170740586-1333094927.png,一般情况下令1027162-20160915170741039-893188982.png


Adaboost和Real Adaboost中弱分类器的区别示意图:

enter description here
realandnon.JPG


matlab实现Real AdaBoost


References:

  • 《机器学习》,周志华著

  • 李志轩,复杂场景中监控视频事件检测算法[D],北京邮电大学,2014

转载于:https://www.cnblogs.com/YiXiaoZhou/p/5875077.html

你可能感兴趣的文章
利用Windows Azure Pack创建虚拟化网络
查看>>
DBA的40条军规
查看>>
Election方法2
查看>>
@@identity , SCOPE_IDENTITY,IDENT_CURRENT 三者的异同
查看>>
RHEL 7.1操作系统安装过程说明
查看>>
基于Python的性能自动化测试框架设计思路和实现
查看>>
Spark里几个重要的概念及架构
查看>>
SpringDataJpa杂记(二) SpringMVC与SpringDataJpa小集成
查看>>
dubbo-rpc基本功能
查看>>
2013年中国域名商报告:易名中国净增11.6万域名
查看>>
7月国内电脑分辨率TOP10 :1366*768跌破13%
查看>>
11月9日全球域名商解析新增量TOP10 :西部数码第七
查看>>
.top域名总量15强:中国数据被赶超 阿里云晋身五强
查看>>
ios第一天
查看>>
使用Kubeadm部署Kubernetes
查看>>
实现按钮点击事件
查看>>
第一次作业
查看>>
009 牌视图实现
查看>>
Kubernetes安装
查看>>
4、AngularJS2 数据显示
查看>>