声明: 这篇笔记是自己对AdaBoost原理的一些理解,如果有错,还望指正,俯谢~

背景:

AdaBoost算法,这个算法思路简单,但是论文真是各种晦涩啊~,以下是自己看了A Short Introduction to Boosting和PRML的一些笔记. 摔~ 

正文:

  AdaBoost算法,是一种组合算法(通过多个弱分类器,组合成一个强分类器):

关于AdaBoost算法的流程,简单的描述,我们以A Short Introduction to Boosting中提到的用AdaBoosting进行二分类来描述一下AdaBoost算法的具体流程:

  1, 不放假设给定要训练的数据包含下面三个信息data{weight,value,values[num]}; 注意:num表示的分类的数目,这里num=2;

   然后data也是一个大小N的数组,我们这里假定有T个弱分类器(T的大小需要自定义,原则上越大越好,但是T了会有性能问题,需要主观把握一下),其中value,values中的值取值范围在{-1,+1}之间取舍.

  2, 初始化data数组中的weight=1/N;

3,  for t = 1,...,T;

    3.1使用第t个弱分类器对数据data进行分类,然后得到分类的数组ht:X -> {-1,+1};

    3.2 统计分类错误率:  E=表示错误率,errorNum表示样本分类错误的个数,totalNum表示总样本数.

    3.3 计算a的值,并保存在数组中,计算公式: Et为上面计算所得的错误率,一般要求错误率不要低于1/2

    3.4   更新数据data中的权重weight

         for i=1 , ...., N ;

         if ht(xi) == data[i].value:

            

else

            

    注:Zt代码

3.5 data中的权重weight更新完成之后,t=t+1,重新将新的权重的data交给下一个弱分类器进行分类,重复3~3.5;

最后将得到的at  , ht(x),进行累成,

    4 for i=1 , ..... , N ;

        

5.1计算accuray:

         

 以上就是整个Adaboost原理的详细流程,更加形象的流程图,出自依据PRML;

           

如果理解了上面流程之后,建议移步去这个地方学习一下,因为总结的比较到位,所以就直接给出地址,去哪儿看吧~;

  http://baidutech.blog.51cto.com/4114344/743809/

数据挖掘学习笔记--AdaBoost算法(一)的更多相关文章

  1. 集成学习值Adaboost算法原理和代码小结(转载)

    在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类: 第一个是个体学习器之间存在强依赖关系: 另一类是个体学习器之间不存在强依赖关系. 前者的代表算法就是提升(bo ...

  2. [ML学习笔记] XGBoost算法

    [ML学习笔记] XGBoost算法 回归树 决策树可用于分类和回归,分类的结果是离散值(类别),回归的结果是连续值(数值),但本质都是特征(feature)到结果/标签(label)之间的映射. 这 ...

  3. 集成学习之Adaboost算法原理小结

    在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系.前者的代表算法就是是boostin ...

  4. 学习笔记 - Manacher算法

    Manacher算法 - 学习笔记 是从最近Codeforces的一场比赛了解到这个算法的~ 非常新奇,毕竟是第一次听说 \(O(n)\) 的回文串算法 我在 vjudge 上开了一个[练习],有兴趣 ...

  5. 集成学习之Adaboost算法原理

    在boosting系列算法中,Adaboost是最著名的算法之一.Adaboost既可以用作分类,也可以用作回归. 1. boosting算法基本原理 集成学习原理中,boosting系列算法的思想:

  6. 学习笔记——EM算法

    EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步组成:E步,求期望(expectation):M步,求 ...

  7. 学习笔记-KMP算法

    按照学习计划和TimeMachine学长的推荐,学习了一下KMP算法. 昨晚晚自习下课前粗略的看了看,发现根本理解不了高端的next数组啊有木有,不过好在在今天系统的学习了之后感觉是有很大提升的了,起 ...

  8. Java学习笔记——排序算法之快速排序

    会当凌绝顶,一览众山小. --望岳 如果说有哪个排序算法不能不会,那就是快速排序(Quick Sort)了 快速排序简单而高效,是最适合学习的进阶排序算法. 直接上代码: public class Q ...

  9. 数据挖掘学习笔记:挖掘频繁模式、关联和相关[ZZ]

    所 谓挖掘频繁模式,关联和相关,即指在出现的数据集中找到一个经常出现的序列模式或者是一个经常出现的数据结构.就像搞CPU设计的人知道,Cache的预 取机制有流预取和指针预取,前者就是发现流模式,即发 ...

随机推荐

  1. Extjs4---Cannot read property 'addCls' of null - heirenheiren的专栏 - 博客频道 - CSDN.NET

    body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLi ...

  2. form2js的使用(续BootstrapTable)

    通过收集表单数据,并且转换为json格式,实现表格的查询. 引入插件:不要忘记引入jquery. <script src="${ctx}/assets/plugins/form2js/ ...

  3. CSS3 线型渐变

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Openlayers修改矢量要素并且可捕捉

    <!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content= ...

  5. Sping--集合注入

    UserDAOImpl.java: package com.bjsxt.dao.impl; import java.util.List; import java.util.Map; import ja ...

  6. 微信小程序下拉刷新和上拉加载

    小程序知识点二 1.上拉加载和下拉刷新 Wxml文件 <scroll-view scroll-top="{{scrollTop}}" scroll-y="true& ...

  7. Android studio中添加外部的jar包

    1.下载相关的jar包, 2,将jar包复制到当前module的lib中 3.选择新添加的jar包.右键.add as library 就好啦

  8. ucos内存管理原理详解

    应用程序中为了某种特殊需要,经常需要动态的分配内存,而操作系统的特质置一,就是能不能保证动态内存分配的时效性,也就是说分配时间是可确定的 Ucos提供内存分配功能,它将内存空间分为两级管理,将一块连续 ...

  9. 自然语言处理高手_相关资源_开源项目(比如:分词,word2vec等)

    (1) 中科院自动化所的博士,用神经网络做自然语言处理:http://licstar.net (2) 分词项目:https://github.com/fxsjy/jieba(3) 清华大学搞的中文分词 ...

  10. lower_bound和upper_bound算法实现

    lower_bound算法要求在已经按照非递减顺序排序的数组中找到第一个大于等于给定值key的那个数,其基本实现原理是二分查找,如下所示: int lower_bound(vector<int& ...