Adaboost with trees is the best off-the-shelf classifier in the world.   -Breiman 1996

决策树算法起源于1984年Breiman,Friedman等人提出的CART,后来又有人(Quinlan等)提出ID3,C4.5,C5.0,CHAID等算法,但是90年代随着支持向量机(SVM)的提出和发展,决策树遇到了极大的挑战。1996年,Freund和Schapire等人提出了Adaboost算法,可以将多个弱分类器(比如Stump决策树)组合起来形成一个更加强大的强分类器,其性能可以与支持向量机媲美,所以才会有Breiman上面那句话。

(一) 算法:

Adaboost算法的思想起源于80年代Valiant提出的PAC理论(Valiant因此获得2010年图灵奖),1996年由Freund和Schapire提出该算法(二人因此获得2003年的Godel Price,是计算机理论界的最高奖),其大体思想是,训练多个弱分类器(Weak Classifier,所谓弱分类器是指分类效果仅比随机分类器效果好就可以,亦即分类错误率要小于0.5,典型的弱分类器如Stump,亦即只有一个决策节点的决策树),每个弱分类器都会更加关注上个弱分类器分错类的训练样例,最终的分类器由所有的这些弱分类器加权组成,亦即其分类结果为多个弱分类器的分类结果的加权和。下面是详细介绍:

Adaboost算法会训练M个弱分类器,每个分类器都会给所有的训练样例赋予权重,第一个分类器所有训练样例的权重都是1/N(N为训练样例的个数),后面每个弱分类器都会提高前面的弱分类器分错类的训练样例的权重,以便使得这些训练样例尽量不会再分错。在此,我们仅讨论最简单的二分类,亦即分类结果为{+1,-1}:

1. 为第一个弱分类器的所有训练样例初始化权重,都设为1/N。

2. 迭代M次,亦即训练M个弱分类器:

(a) 训练当前弱分类器,使得训练样例的加权误差Jm最小。

(b) 求得当前弱分类器的加权误差率ε,如果ε>0.5,则当前分类器效果太差,算法终止,否则计算α=ln((1-ε)/ε),α是一个大于1的数,用来增加被分错类的训练样例的权重。

(c) 对于所有被当前弱分类器分错类的训练样例,增大其权重(乘以α),以便在训练下一个弱分类器时重视这些被分错类的训练样例(真正实现时还应进行标准化,亦即使得所有权重的和为1)。

3. 最终得到的强分类器利用M个弱分类器的分类结果的加权和作为测试训练样例的分类结果。

(二)Java实现

为了充分理解Adaboost算法,我写了一个简单的Java程序,训练样例是二维空间上的N个点,用到的弱分类器是最简单的Stump,亦即树桩。当训练数据是随机生成的时候,迭代10次后得到的分类器的准确率会达到75%-90%。当训练数据是形如下所示的分布时(但是我的数据集只有20个点),准确率可以达到100%。

参考文献:

[1] Christopher M.Bishop Pattern Recognization and Machine Learnin (PRML),Chapter 14 Combining Models, p657

[2] Ethern Alpaydin 机器学习导论 15章 组合多学习器 p236

c5.0 java_机器学习-AdaBoosting及其Java实现相关推荐

  1. 随机森林 java_机器学习weka,java api调用随机森林及保存模型

    工作需要,了解了一下weka的java api,主要是随机森林这一块,刚开始学习,记录下. 了解不多,直接上demo,里面有一些注释说明: package weka; import java.io.F ...

  2. [机器学习-Sklearn]决策树学习与总结 (ID3, C4.5, C5.0, CART)

    决策树学习与总结 (ID3, C4.5, C5.0, CART) 1. 什么是决策树 2. 决策树介绍 3. ID3 算法 信息熵 信息增益 缺点 4. C4.5算法 5. C5.0算法 6. CAR ...

  3. r语言中c5.0参数解释,机器学习与R语言:C5.0

    #---------------------------------------- # 功能描述:演示C50建模过程 # 数据集:汉堡大学信贷模型,信贷数据 # #------------------ ...

  4. 《Python Spark 2.0 Hadoop机器学习与大数据实战_林大贵(著)》pdf

    <Python+Spark 2.0+Hadoop机器学习与大数据实战> 五星好评+强烈推荐的一本书,虽然内容可能没有很深入,但作者非常用心的把每一步操作详细的列出来并给出说明,让我们跟着做 ...

  5. ID3、C4.5、C5.0、CART决策树区别

    ID3决策树 ID3选用使得信息增益最大的那个属性来划分样本 ID3算法缺点: 倾向于使用属性值多的属性来划分样本 不能处理具有连续值的属性. 不能处理属性具有缺失值的样本. 由于按照上面的算法会生成 ...

  6. Eclipse 3.5 Classic+Tomcat 6.0+MySql 5.5搭建java web开发环境

    Eclipse 3.5 Classic+Tomcat 6.0+MySql 5.5搭建java web开发环境 对于初学者来说,如果没有接触过java web开发的话,搭建开发环境将是一个门槛.以前一直 ...

  7. 决策树c语言程序代码,R C5.0 决策树c50代码,名为 exit 1_r_开发99编程知识库

    我收到以下错误 c50代码,名为 exit exit exit 我是根据Kaggle提供的泰坦尼克数据做# Importing datasets train # this is the structu ...

  8. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  9. tomcat 设置java_为tomcat配置java环境变量

    我的tomcat 中java标签里是这么写的 java virual Machine: C:\Program Files\Java\jre1.6.0\bin\client\jvm.dll java c ...

最新文章

  1. html 二叉树模式,重建二叉树.html
  2. 北邮计算机学不学单片机,北邮小学期PC单片机.docx
  3. Oracle存储过程 使用游标、数组的配合查询
  4. 对比俩个字符串的相似度
  5. 41岁,她破格提拔为高校副校长
  6. 关于计算机维护的相关试题,比较好写的计算机系统维护论文选题 计算机系统维护论文题目哪个好...
  7. 堆排序的Java实现
  8. 用C语言数组编写贪吃蛇
  9. JQuery 解决多个文件下载只下载一个的问题
  10. ios13 微信提示音插件_iOS13免越狱修改微信提示音方法!亲测有用!
  11. C站万字详解二叉树基本操作演示程序(附图)
  12. 快速查询的秘籍 —— B+ 树索引
  13. 树莓派4B突然连不上手机热点问题解决
  14. 计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll解决办法
  15. LSB匹配算法 python实现
  16. 使用jmeter进行接口压力性能测试
  17. 一个北京人的买房血泪史:我不想一辈子做房奴!
  18. P1365 WJMZBMR打osu! / Easy (期望dp)
  19. 从“非主流”到“潮流”,开源早已值得拥有
  20. javaweb网上点歌系统

热门文章

  1. 读《白帽子讲Web安全》之安全意识篇(一)
  2. java中比较字符串的大小用String的compareTo()
  3. ES权威指南[官方文档学习笔记]-8
  4. 【转】集合类说明及区别
  5. 关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值...
  6. Android调用WebService
  7. asp.net textbox 控件如何清除缓存
  8. ref out param 区别
  9. php7.3安装yaf扩展(亲测)
  10. Linux的tree