技术标签: 《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的信息增益是最大的,所以作为决策树的一个根节点。即:
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,但可以做回归。
参考:
http://blog.csdn.net/zhangping1987/article/details/23021381
http://www.cnblogs.com/javawebsoa/archive/2011/11/04/2458116.html
完全符合一线城市微服务电商的需求,对中国程序猿学习微服务电商架构,有非常大的帮助,该项目涵盖从微服务电商需求讨论、数据库设计、技术选型、互联网安全架构、整合SpringCloud各自组件、分布式基础设施、使Docker+k8s+jenkins实现微服务自动化部署、项目上线域名配置、SEO优化、大数据统计分析等。该想项目是采用目前比较流行的SpringBoot/SpringCloud构建微服务...
基本信息原书名: Pro Android Web Apps: Develop for Android using HTML5, CSS3 & JavaScript 原出版社: Apress 作者: (美)Damon Oehlman Sébastien Blanc [作译者介绍] 译者: 张龙 丛书名: 移动与嵌入式开发技术 出版社:清华大学出版社 ISBN:
最近做APP中实现黑夜模式时,使用了Activity的recreate()方法。从Activity B中返回Activity A中时,在A的onResume()中检查模式是否变动,变动即recreate()。但recreate()后,重建的Activity A,经过onStart() 、onResume()、onPause(),并停留在了onPause()状态。停留在onPause()状态后,在
9月14日任务2.14 文件和目录权限chmod2.15 更改所有者和所属组chown2.16 umask2.17 隐藏权限lsattr/chattr文件/目录权限 chmod预备知识所有者user:拥有该文件/目录的用户所属组group:拥有该文件/目录的群组ls命令查看文件、目录的详细信息时,其第一个字段例如"-rwxr--r--.",将除首尾外的9位每3位为一组,分别是其所有者(u)、所属组...
2019独角兽企业重金招聘Python工程师标准>>> ...
实验:基于虚拟机的Linux操作系统安装(Ubuntu).docx实验报告1?课程名称: Linux?程序设计实验名称:基于虚拟机?的Linu?x操作系统?安装学生姓名: 班级: 学号: 指导老师:_ 成绩:_____?_____?_一、实验目的本实验主要?内容是Vm?ware虚?拟软件和L?inux系?统的安装,Vmwar?e是一款功?能相当强大?的虚拟软件?。它可以虚拟?一台计...
文章目录已知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只能找脚本,从此决定发愤图强学...
文章目录概述数据模型-订单微服务API业务逻辑分析搭建订单微服务依赖及配置文件pom.xmlapplication.yml将微服务注册到注册中心实体类Dao层Service层Controller层概述这里我们简单的说下业务相关的需求,重点是体会微服务这种理念是如何落地的。数据模型-订单微服务 通常来讲,微服务都是分数据库的。这里我们新建个数据库给订单微服务 ,数据库实例名 o2o-ord...
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中而已
1. TaskExecutorspring异步线程池的接口类,其实质是Java.util.concurrent.ExecutorSpring 已经实现的异常线程池: 1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。 2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于
jquery实现Tab选项卡菜单 - 爱喝酸奶的吃货 - 博客园
在luasql的安装过程中不能成功编译,主要遇到两个问题缺失mysql.h在安装了mysql的前提下,还需要再安装libmysqlclient-dev,具体指令:sudo apt-get install libmysqlclient-dev系统所用的lua版本及路径与luasql的不一致将config文件的lua路径配置成与系统的一致,具体路径查看,可以使用指令whereis...