小扯--AdaBoost的大世界
来源:互联网 发布:今日头条看nba数据 编辑:程序博客网 时间:2024/04/29 22:16
提升(boosting)方法是一种常用的统计学习方法,应用广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。
提升方法,基于这样一种思想:对于一个复杂的任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独判断的好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
提升方法的几个理论概念:
o一个概念如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么,这个概念是强可学习的;
boosting方法有许多不同的变形。其中最流行的一种就是AdaBoost方法,这个名称是“adaptive boostint”的缩写。这个方法允许设计者不断地加入新的“弱分类器”,直到达到某个预定的足够小的误差率。在AdaBoost方法中,每一个训练样本都被赋予一个权重,表明它被某个分类分类器选入训练集的概率。如果某个样本点已经被准确分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被正确分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能够“聚焦于”那么较为困难(更富有信息)的样本上。
AdaBoost算法:
给定一个训练数据集T={(x1,y1), (x2,y2)…(xN,yN)},其中实例,而实例空间,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。
实现流程:
输入:设训练数据集T={(x1,y1), (x2,y2)…(xN,yN)}
输出:最终分类器 G(x)
(1)初始化训练数据的权值分布
(2)对于满,2,3...M
a. 使用具有权值分布Dm的训练数据集学习,得到基本分类器
b.计算Gm(x)在训练数据集上的分类误差率
c.计算Gm(x)的系数
d.更新训练数据集的权值分布
这里,Zm是规范化因子:
(3)构建基本分类器的线性组合
得到最终分类器
Adaboost 举例:
借鉴百度人才的例子;
图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器,来进行分类。
首先,
根据分类的正确率,得到一个新的样本分布D2,一个子分类器h1
其中划圈的样本表示被分错的。在右边的途中,比较大的“+”表示对该样本做了加权。
其次,
根据分类的正确率,得到一个新的样本分布D3,一个子分类器h2
然后,
得到一个子分类器h3
整合所有子分类器:
由例子结果分析,即使每个弱的分类器,各自的分类效果并不好,但是最终整合成的强分类器,也是有很好的效果!
总结:
AdaBoost是一种迭代算法,核心思想是在初始化权重后,进行训练得到每一次迭代的弱分类器,接着计算分类错误的错误率去调整错分样本权重,作为下一次迭代的输入参数,这样便可以突出错分样本的比重,受到“更多的照顾”,知道错误率小于某一个设定的阈值,得到N个弱分类器后,最终融合成一个强分类器。实验证明,当简单分类器数量趋向于无穷时,强分类器的错误率也将趋于零。
- 小扯--AdaBoost的大世界
- 乔布斯的世界: “小物件”,大世界
- 乔布斯的世界: “小物件”,大世界
- 走进MicroRNA的大世界
- 大世界
- websphere mq 小扯
- 灵格斯词霸 2.6.3 - 小窗口, 大世界
- [ javasript ] 从js小问题看大世界。
- AdaBoost----小分类器累积的力量
- 小扯 读书与编程
- 扯扯所学的编程语言
- 扯扯DNS解析的流程
- 可拉扯的形状
- 扯犊子的CPI
- 扯
- 小算法大世界之冒泡排序VS选择排序
- 虎扯:《小苹果》为什么那么火
- 特别扯蛋的日记
- nyoj 930 回文数猜想
- 从零配置Linux服务器,部署lnmp
- Android调用系统关机指令
- List 、Set、 Map有什么区别
- JDBC连接数据库步骤
- 小扯--AdaBoost的大世界
- 提高篇项目5——反序数
- Object-C程序设计(第6版)读书笔记2016-05-12
- Statement和PreparedStatement的区别
- Java知识图谱收集整理(学习路线等问题)
- iOS 引入支付宝 缺少 #include <openssl/asn1.h>
- JSON 和 NSDictionary NSArray互转
- spark使用hive出错,添加以下配置
- iOS CoreLocation框架第二章—— CLLocationManagerDelegate全解