Ng机器学习系列补充:1、决策树算法ID3和C4.5_mmc2015的博客-程序员秘密

技术标签: 《Machine Learning,Andrew Ng》  

    机器学习补充系列国际权威的学术组织the IEEE International Conference on Data Mining (ICDM,国际数据哇局会议) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART,它们在数据挖掘领域都产生了极为深远的影响,这里对他们做一个简单介绍,仅作为对Ng机器学习教程的补充。

    由于k-Means、SVM、EM、kNN、Naive Bayes在Ng的系列教程中都有涉及,所以此系列教程只涉及决策树算法C4.5、关联规则算法Apriori、网页排名算法PageRank、集成学习算法AdaBoost(Adaptive Boosting,自适应推进)、分类与回归树算法CART(Classification and Regression Trees);另外会加上对神经网络的BP算法介绍,后续也会考虑介绍遗传算法等内容。



1)决策树之ID3

2)决策树之C4.5



1)决策树之ID3

决策树算法是分类算法的一种,基础是ID3算法,C4.5、C5.0都是对ID3的改进。ID3算法的基本思想是,选择信息增益最大的属性作为当前的分类属性。

看Tom M. Mitchell老师的《Machine Learing》第三章中的例子:

我们先解释一下这张表,表中有14条实例数据,就是我们的训练数据,其中 Outlook,Temperature,Humidity ,Wind 称作条件属性PlayTennis 称作是决策属性(标签)

每一个属性都有各自的值记做:Value(Outlook)={Sunny,OverCast,Rain},Value(Temperature)={Hot,Mild,Cool},Value(Humidity)={High,Normal},Value(Wind)={Strong,Weak},Value(PlayTennis)={NO,Yes}。

第一个重要的概念:Entropy。

我们数一下  决策属性PlayTennis,一共有两个类别:Yes,No。Yes的实例数是 9,No的实例数是 5。计算决策属性的Entropy(熵):计算结果为:0.940286

这里的决策属性S的值只有两个值(Yes,No),当然可以有多个值(s1,s2,s3,...,sk),这些决策属性的值的概率分别为:p1,p2,p3,...,pk所以决策属性的Entroy的计算公式:


第二个重要的概念:information gain(信息增益)

我们只Outlook条件属性举例,其他的属性一样:

Value(Outlook)={Sunny,OverCast,Rain}:Outlook是sunny的实例数为5(其中Yes的个数为2,No的个数为3),占总的实例数为5/14,那么针对sunny的Entropy:

Entropy(Sunny)=,计算结果为:0.97095

Outlook是OverCast的实例数为4(其中Yes的个数为4,No的个数为0),占总的实例数为4/14,那么针对Overcast的Entropy:

,计算结果为:0

Outlook是Rain的实例数为5(其中Yes的个数为3,No的个数为2),占总的实例数为5/14,那么针对Rain的Entropy,

,计算结果为:0.97095

那么最后针对Outlook条件属性的information gain为:

,计算结果为:0.24675

所以针对某一条件属性的information gain为:

       

那么其他三个条件属性Temperature、Humidity、Wind的信息增益为:


我们看到Outlook的信息增益是最大的,所以作为决策树的一个根节点。即:



然后,从Outlook下面出来三个树枝,最左边的Sunny,我们从Outlook是Sunny的实例数据中,找到信息增益最大的那一个,依次类推。


2)决策树之C4.5

上面讨论的决策树的ID3算法,属性只能是枚举型的(离散的),当然属性值可以是连续的数值型,但是需要对这些数据进行预处理,变为离散型的,才可以运用ID3算法。

所以Ross Quinlan又提出了C4.5算法,能够处理属性是连续型的。而且,在C4.5算法中,又提出了两个新的概念:分离信息(Split Information)和信息增益率(Information gain ratio)。

首先,给出分离信息的计算方法,数学符号表达式为:。解释为:数据集通过条件属性A的分离信息。上面一个例子,数据集通过Outlook这个条件属性的分离信息,Outlook有三个属性值分别为:Sunny,Overcast,Rain,它们各占5,4,5,所以:


再次,给出信息增益率的公式:。上面这个例子如:数据集S针对Outlook的信息增益率:

,分子和分母这两个值都已经求出来,选择信息增益率最大的那个属性,作为节点。


C4.5算法的核心算法是ID3算法。C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

a)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;

b)在树构造过程中进行剪枝;

c)能够完成对连续属性的离散化处理;

d)能够对不完整数据进行处理。

优点:产生的分类规则易于理解,准确率较高。

缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。



注意:

决策树之C5.0是决策树C4.5的商用算法,在内存管理等方面,给出了改进。比如在商用软件SPSS中,就有该算法。

注意上述三个算法只能做分类,不能做回归,下一篇博文CART类似于C4.5,但可以做回归。

java语言中最著名的的Weka,对ID3,C4.5都有实现。


参考:

http://blog.csdn.net/zhangping1987/article/details/23021381

http://www.cnblogs.com/javawebsoa/archive/2011/11/04/2458116.html




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mmc2015/article/details/42525655

智能推荐

高性能Nginx服务器【免费学习】_TCYONE的博客-程序员秘密

完全符合一线城市微服务电商的需求,对中国程序猿学习微服务电商架构,有非常大的帮助,该项目涵盖从微服务电商需求讨论、数据库设计、技术选型、互联网安全架构、整合SpringCloud各自组件、分布式基础设施、使Docker+k8s+jenkins实现微服务自动化部署、项目上线域名配置、SEO优化、大数据统计分析等。该想项目是采用目前比较流行的SpringBoot/SpringCloud构建微服务...

Android Web应用高级编程_阐述aandroid web编程是什么_清图的博客-程序员秘密

基本信息原书名: Pro Android Web Apps: Develop for Android using HTML5, CSS3 & JavaScript 原出版社: Apress 作者: (美)Damon Oehlman    Sébastien Blanc    [作译者介绍] 译者: 张龙 丛书名: 移动与嵌入式开发技术 出版社:清华大学出版社 ISBN:

Activity recreate 后停留在onPause()状态_Morning_qiang的博客-程序员秘密

最近做APP中实现黑夜模式时,使用了Activity的recreate()方法。从Activity B中返回Activity A中时,在A的onResume()中检查模式是否变动,变动即recreate()。但recreate()后,重建的Activity A,经过onStart() 、onResume()、onPause(),并停留在了onPause()状态。停留在onPause()状态后,在

chmod u x mysql.sh_chmod、chown、umask、lsattr和chattr命令_weixin_39631094的博客-程序员秘密

9月14日任务2.14 文件和目录权限chmod2.15 更改所有者和所属组chown2.16 umask2.17 隐藏权限lsattr/chattr文件/目录权限 chmod预备知识所有者user:拥有该文件/目录的用户所属组group:拥有该文件/目录的群组ls命令查看文件、目录的详细信息时,其第一个字段例如"-rwxr--r--.",将除首尾外的9位每3位为一组,分别是其所有者(u)、所属组...

Tomcat 服务器Netty+Protobuf 并发压力测试以及http测试_weixin_33806509的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

基于ubuntu的linux实验,实验:基于虚拟机的Linux操作系统安装(Ubuntu).docx_weixin_39629352的博客-程序员秘密

实验:基于虚拟机的Linux操作系统安装(Ubuntu).docx实验报告1?课程名称: Linux?程序设计实验名称:基于虚拟机?的Linu?x操作系统?安装学生姓名: 班级: 学号: 指导老师:_ 成绩:_____?_____?_一、实验目的本实验主要?内容是Vm?ware虚?拟软件和L?inux系?统的安装,Vmwar?e是一款功?能相当强大?的虚拟软件?。它可以虚拟?一台计...

随便推点

个人收集的RSA常用脚本_mon0dy的博客-程序员秘密

文章目录已知dp,n,e,c求明文m已知n,dp,dq,c求d和明文m已知n,e,c求m已知n,e求秘钥d已知n,e求秘钥d和key已知c1,c2,e1,e2,n求明文m(共模攻击)e=1e=2e=3低解密指数攻击(e较大)e,m相同,存在两个n有公约数e取随机数自减至与欧拉函数互质最优非对称加密填充由于本人实在太菜,死活不会写脚本(实际是py没好好学),遇到RSA只能找脚本,从此决定发愤图强学...

Spring Cloud【Finchley】实战-02订单微服务_微服务电商gitee_小小工匠的博客-程序员秘密

文章目录概述数据模型-订单微服务API业务逻辑分析搭建订单微服务依赖及配置文件pom.xmlapplication.yml将微服务注册到注册中心实体类Dao层Service层Controller层概述这里我们简单的说下业务相关的需求,重点是体会微服务这种理念是如何落地的。数据模型-订单微服务 通常来讲,微服务都是分数据库的。这里我们新建个数据库给订单微服务 ,数据库实例名 o2o-ord...

Docker 1.12新功能探索(8):Remote Api 1.24_淼叔的博客-程序员秘密

Docker的Remote Api并不是1.12才有的,Docker1.12的Remote Api升到了1.24。Remote api的使用在1.12中没有大的变化,稍微大一点的变化是到这个版本之后,二进制文件分裂成了主client的docker以及主server的dockerd了。在centos上通过systemd的配置变化不大,无非是将tcp://ip:port设定到启动的Option中而已

Spring @Async异步线程池用法总结_asynctaskexecutor 使用_Happy王子乐的博客-程序员秘密

1. TaskExecutorspring异步线程池的接口类,其实质是Java.util.concurrent.ExecutorSpring 已经实现的异常线程池: 1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。 2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于

jquery实现Tab选项卡菜单_jqtab editoptions_滕青山ᅠ的博客-程序员秘密

jquery实现Tab选项卡菜单 - 爱喝酸奶的吃货 - 博客园

luasql脚本工具的安装_Fu_Lin_的博客-程序员秘密

在luasql的安装过程中不能成功编译,主要遇到两个问题缺失mysql.h在安装了mysql的前提下,还需要再安装libmysqlclient-dev,具体指令:sudo apt-get install libmysqlclient-dev系统所用的lua版本及路径与luasql的不一致将config文件的lua路径配置成与系统的一致,具体路径查看,可以使用指令whereis...

推荐文章

热门文章

相关标签