机器学习(5)之决策树ID3及Python实现

2017 年 7 月 12 日 机器学习算法与Python学习 昱良

微信公众号

关键字全网搜索最新排名

【机器学习算法】:排名第一

【机器学习】:排名第二

【Python】:排名第三

【算法】:排名第四

ID3是什么?

ID3算法是决策树的一种,基于奥卡姆剃刀原理,即用尽量用较少的东西做更多的事。ID3算法( Iterative Dichotomiser 3),迭代二叉树3代,是Ross Quinlan发明的一种决策树算法,这个算法的基础就是上面提到的奥卡姆剃刀原理,越是小型的决策树越优于大的决策树,尽管如此,也不总是生成最小的树型结构,而是一个启发式算法。


在信息论中,期望信息越小,那么信息增益就越大,从而纯度就越高。ID3算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策空间。


在1948年,香农引入了信息熵,将其定义为离散随机事件出现的概率,一个系统越有序,信息熵越低,反之越是混乱,它的信息熵越高。所以信息熵可以被认为是系统有序化程度的一个度量。

信息增益是针对一个一个特征而言的,就是看一个特征,系统有它和没有它时的信息量各是多少,两者的差值就是这个特征给系统带来的信息量,即信息增益。计算公式如下


Python实现

源代码下载请加入机器学习交流2群(634808033)在文件区中下载或者后台回复关键词:“20170711”下载。


这里采用的是从UCI上获得的一个名为agaricus-lepiota的数据集,它的属性全都是标称的,最终的分类效果不错,准确率达到了99.63%代码在实现决策树节点的分枝时是用递归实现的。其中,递归的终止条件有两种:一是无法通过分枝产生信息增益,这样自然就不必再分枝了,二是节点本身分得的样本数达到了下限值minNumOfInstances,这种情况不再进行分枝的目的是为了避免造成过度拟合的问题。

main.py

pre_processing.py

decision_tree.py

参考:

1. 周志华《机器学习》

2. ACdreamers的博客:http://blog.csdn.net/acdreamers/article/details/44661149

3. stridehuan的博客:http://blog.csdn.net/u012822866/article/details/42419471

招募 志愿者

广告、商业合作

请加QQ:357062955@qq.com

喜欢,别忘关注~

帮助你在AI领域更好的发展,期待与你相遇!

登录查看更多
0

相关内容

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。 分类树(决策树)是一种十分常用的分类方法。他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
281+阅读 · 2020年6月3日
专知会员服务
137+阅读 · 2020年5月19日
【经典书】机器学习高斯过程,266页pdf
专知会员服务
225+阅读 · 2020年5月2日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
347+阅读 · 2020年2月15日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
197+阅读 · 2020年2月11日
《机器学习实战》代码(基于Python3)
专知
32+阅读 · 2019年10月14日
机器学习面试题精讲(一)
七月在线实验室
4+阅读 · 2018年1月11日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
动手写机器学习算法:SVM支持向量机(附代码)
七月在线实验室
12+阅读 · 2017年12月5日
机器学习(7)之感知机python实现
机器学习算法与Python学习
4+阅读 · 2017年7月23日
机器学习算法实践:决策树 (Decision Tree)
Python开发者
9+阅读 · 2017年7月17日
机器学习(4)之线性判别式(附Python源码)
机器学习算法与Python学习
13+阅读 · 2017年7月11日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Embedding Logical Queries on Knowledge Graphs
Arxiv
3+阅读 · 2019年2月19日
Arxiv
18+阅读 · 2019年1月16日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
26+阅读 · 2018年2月27日
Arxiv
3+阅读 · 2018年2月22日
Arxiv
3+阅读 · 2017年7月6日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
281+阅读 · 2020年6月3日
专知会员服务
137+阅读 · 2020年5月19日
【经典书】机器学习高斯过程,266页pdf
专知会员服务
225+阅读 · 2020年5月2日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
347+阅读 · 2020年2月15日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
197+阅读 · 2020年2月11日
相关资讯
《机器学习实战》代码(基于Python3)
专知
32+阅读 · 2019年10月14日
机器学习面试题精讲(一)
七月在线实验室
4+阅读 · 2018年1月11日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
动手写机器学习算法:SVM支持向量机(附代码)
七月在线实验室
12+阅读 · 2017年12月5日
机器学习(7)之感知机python实现
机器学习算法与Python学习
4+阅读 · 2017年7月23日
机器学习算法实践:决策树 (Decision Tree)
Python开发者
9+阅读 · 2017年7月17日
机器学习(4)之线性判别式(附Python源码)
机器学习算法与Python学习
13+阅读 · 2017年7月11日
相关论文
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Embedding Logical Queries on Knowledge Graphs
Arxiv
3+阅读 · 2019年2月19日
Arxiv
18+阅读 · 2019年1月16日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
26+阅读 · 2018年2月27日
Arxiv
3+阅读 · 2018年2月22日
Arxiv
3+阅读 · 2017年7月6日
Top
微信扫码咨询专知VIP会员