十大算法---Adaboost
当我们有针对同一数据集有多个不同的分类器模型时,怎样组合它们使预测分类的结果更加准确,
针对这种情况,机器学习通常两种策略。
1 一种是bagging,一种是boosting
- bagging:随机对样本重采样,采得N个数据集(数据集可能有交叉),对每个数据集进行训练,可以使用相同分类器也可以使用不同分类器,
这样我们就得到N个分类器,当对新样本进行预测时,这N个分类器同时预测,对同一样本得到N个预测结果,进行投票表决(实际应用中,每个
分类器可以有不同的权重,可以人为设定也可以根据训练结果)。代表是随机森林算法。
特点:各个分类器独立训练,是并行的结果。
- boosting:与bagging不同,boosting是串行的,各个分类器的训练是迭代进行,第k-1次的迭代会对第k次训练优化目标造成影响,具体来
讲,每次迭代调整的是样本的权重,而每次预测结果的评价指标决定了该分类器的权重。最后通过各个分类器的加权和表决。下面详细介绍最流
行的一个版本AdaBoost.
2详解AdaBoost
2.1在理解AdaBoost之前需要准备好如下三个东西:
- 第一个:弱分类器模型
输入:X,Y,样本初始权重矩阵(均值填充1/m)(m个样本)D0
输出:判断指标(错误率),预测结果Xp0
- 第二个:分类器的权重计算。
分类器的权重与我们侧重的指标有关即在训练分类器时的评价指标有关。评价指标越好分类器权重越大。
其计算公式如下:

其中
指的错误率,通常大于0.5(样本比例平均,比随机预测强)α是一个大于0.5的值,
越小,权重越大。
- 第三个:样本权重调整策略和意义。
样本权重的迭代原则:上一次样本的错分样本的权重增加。具体办法,样本权重的调整与分类器的权重有关。
样本权重的迭代策略:
正分样本的权重调整,变小了。

错分样本的权重调整,变大了

样本权重调整影响的是下一次迭代训练模型的
从而影响下一次的训练,具体来说对于错误率的计算:
不再是累加错分样本/总样本,而是每个错分样本乘以权重/总样本
2.2AdaBoost训练过程
输入:迭代次数,累计错误率终止条件
输出:弱分类器数组,每一项是,弱分类器训练参数,弱分类器的权重
算法流程
设置分类器数组weekClassArr(存储每次迭代的弱分类器参数)
for 每次迭代i:
- 训练一次弱分类器Modeli,得到分类器的错误率和预测结果。
- 根据上述公式,计算弱分类器的权重。
- 计算累计错误率而不是单次的错误率,如果累计错误率小于设定值即结束循环。
解释累计错误率:
将第i次的预测结果和前i-1次的预测结果加权,并利用sign()函数将结果化为-1和1,将这个作为adaboost的错误率
- 根据预测结果和分类器权重,利用上面提到的样本权重公式,计算新Di+1。
注:sign函数:由于加权累加结果是浮点数,sign()会将加权结果变为离散-1和1.
2.3使用Adaboost:
利用弱分类器数组中的每个分类器分别预测,将预测结果按照分类器对应的权重加权即可
十大算法---Adaboost的更多相关文章
- 机器学习十大算法之KNN(K最近邻,k-NearestNeighbor)算法
机器学习十大算法之KNN算法 前段时间一直在搞tkinter,机器学习荒废了一阵子.如今想重新写一个,发现遇到不少问题,不过最终还是解决了.希望与大家共同进步. 闲话少说,进入正题. KNN算法也称最 ...
- 机器学习十大算法 之 kNN(一)
机器学习十大算法 之 kNN(一) 最近在学习机器学习领域的十大经典算法,先从kNN开始吧. 简介 kNN是一种有监督学习方法,它的思想很简单,对于一个未分类的样本来说,通过距离它最近的k个" ...
- 十大算法 pagerank 傅里叶变换
来源于最近阅读的一些链接 首先是介绍十大算法的 http://blog.jobbole.com/70639/ 然后是pageRank算法 http://blog.jobbole.com/23286/ ...
- 【十大算法实现之KNN】KNN算法实例(含测试数据和源码)
KNN算法基本的思路是比较好理解的,今天根据它的特点写了一个实例,我会把所有的数据和代码都写在下面供大家参考,不足之处,请指正.谢谢! update:工程代码全部在本页面中,测试数据已丢失,建议去UC ...
- CSDN总结的面试中的十大算法
1.String/Array/Matrix 在Java中,String是一个包含char数组和其它字段.方法的类.如果没有IDE自动完成代码,下面这个方法大家应该记住: toCharArray() / ...
- 数据挖掘十大算法--K-均值聚类算法
一.相异度计算 在正式讨论聚类前,我们要先弄清楚一个问题:怎样定量计算两个可比較元素间的相异度.用通俗的话说.相异度就是两个东西区别有多大.比如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能 ...
- 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现
关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.h ...
- 机器学习十大算法总览(含Python3.X和R语言代码)
引言 一监督学习 二无监督学习 三强化学习 四通用机器学习算法列表 线性回归Linear Regression 逻辑回归Logistic Regression 决策树Decision Tree 支持向 ...
- 机器学习十大算法之EM算法
此文已由作者赵斌授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于目前论坛的Markdown不支持Mathjax,数学公式没法正常识别,文章只能用截图上传了... ...
随机推荐
- 别再说“我已经努力了”,你的“努力”一文不值!
有次,让一个研究生男收集一份资料,快下班了问结果,竟然毛也没有.见我要怒,他慷慨激昂地说:"我已经很努力找了,但真的查不到." 作为主管,"我已经努力"这话我不 ...
- -_-#【JS】隐含全局变量
隐含全局变量与明确定义的全局变量有细微的不同,不同之处在于能否使用delete操作符撤销变量 使用var创建的全局变量(这类变量在函数外部创建)不能删除不使用var创建的隐含全局变量(尽管它是在函数内 ...
- soundtouch源码分析__based on csdn :
1. soundtouch介绍和相关资源 The SoundTouch Library Copyright © Olli Parviainen 2001-2014 SoundTouch is an o ...
- 汇编学习笔记(11)int指令和端口
格式 int指令也是一种内中断指令,int指令的格式为int n,n是中断类型码.也就是说,使用int指令可以调用任意的中断例程,例如我们可以显示的调用0号中断例程,还记得在汇编学习笔记(10)中我们 ...
- hdu 4403 枚举
#include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...
- Digital Root - SGU 118(高精度运算)
题目大意:有K组测试数据,然后每组有N个正整数,A1,A2,A3.....An,求出 A1 + A1*A2 + A1*A2*A3 + .......A1*A2*...An 的数根. 分析:有个对9取余 ...
- hdoj 1342 Lotto【dfs】
Lotto Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- Sublime Text 2/3如何支持中文GBK编码
Sublime Text默认是只支持UTF8的编码,所以有些时候,当我们打开GBK文件时候,文件内会出先部分的乱码, 在菜单栏选择"Preferences"-->" ...
- memcached与redis 对比
一. 综述 读一个软件的源码,首先要弄懂软件是用作干什么的,那memcached和redis是干啥的?众所周知,数据一般会放在数据库中,但是查询数据会相对比较慢,特别是用户很多时,频繁的查询,需要耗费 ...
- 6 Java学习之 枚举
1. 概念 枚举是一种规范,它规范了参数的形式,这样就可以不用考虑类型的不匹配,并且显示的替代了int型参数可能带来的模糊概念. 常用来定义一个final类型的变量(常量),保证输入安全.如 ...