决策树

2018 年 4 月 19 日 Datartisan数据工匠 阿猫学编程

点击上方

Datartisan数据工匠

可以订阅哦!

引子


每一天生活中有很多事情需要我们做出决定,降温了就要加衣服,衣服旧了就该买新的,虽然这些事情非常的多,但是并不是非常的复杂,已经存在一些基本的逻辑,只要套用上面的关系,就能够得出答案了,这就是生活给我们的套路。例如过春节的时候,总能碰上七大姑八大姨的,不管这么聊,我们总是成为这些七大姑八大姨调侃的对象。难道他们也有自己的套路吗?总结如下:

这就是一棵决策树了,通过一个个条件来得出,你到底是属于哪一类,适合怎么样的跟你聊天,你谈论的重点是什么。决策树是机器学习中非常常见的一种方法,因为他很简洁,而且也非常的容易知道为什么被归为这个分类的,他相当于一个专家,里面有非常多的规则,决定了我们该往哪个方向去走。但问题是没有专家啊,哪里来的那么多的专家,但是如果有大量 的数据,如果在大数据中,总结出规律,建立自己的规则呢?

创建决策树


如何对数据进行区分,如何找到规则,这是一个重点,先用一维的数据来进行标示,在坐标轴中,分类如下:

用数据来表示,如下的分类

在这个坐标系中,用肉眼是比较容易看出来应该要怎么样来分类的,例如在x轴的-1.5中做一个分割线,把这组数据分为两类,一类中+1比较多,一类中-1比较多,这样的分法是比较可取的,因为这样分开的话,在各个分类中被错误分类的个数比较少。


但是回头再想,我们分类的规则能不能抽出一种更普遍的理论呢?


每个分类中,最好是存在一种类型,不希望掺入太多不同类型的,也就是说一个分类中它的纯度要高,杂质要少。在信息论中,香农定理就能表示数据的纯度,简单的解释是这样的,如果一组数据中有1,1,1,1,1,1,1,1,1这里有9个1,如果使用一种压缩算法简单的可以写成9:1数据就别压缩了,而如果是1,1,1,1,0,1,1,1,0,用压缩算法就得写成7:1,2:0,这样就需要用更多的数据量来表示这个这段信息,通常来讲这也叫做信息增益,或者叫做熵。


这里也可以看出,信息较纯的数据,他的信息增益是比较小的,杂质越多,信息增益越大,可以拿过来用到我们该如果进行分类上。我们可以遍历各种不同的分类结果,找到信息增益最小的那个分类,就是数据该如何进行分类。通过已有的历史信息自动的找出分类的规则,找到熵最小的做法是怎么样的一种分法。


信息的定义如下:

信息熵定义为:

计算信息熵的过程如下:

通过遍历各个分类可能找出最小信息增益的分类可能:

通过递归的方式,把数据做归档,建立起决策树:

建立起决策树关键是如何建立起决策树的规则,而通过数据的分类时较为关键的是如何判断分出的类型是最好的,这就是为何需要使用到信息增益或熵的概念。决策树的理论较为简单,但在实际的使用中,经常会用到,因为决策树有着非常好的可视化,能够明明白白的告诉你,为什么你是属于这个分类下的。


绘制决策树


通过决策树的绘制,我们可以更加清楚的了解我们是如何进行分类的,一组数据经过决策树以后是如何一步一步的得出决策数据的。每一次进行决策的时候,通过选取是分类结果到达分类最纯的标签,这样如此的反复下去。通过把决策过程的树绘制出来,会更容易进行理解。


绘制决策树,我们使用的是graphviz,关于graphviz的 使用可以先看看如下系类的graphviz文章。


在了解了graphviz的绘制以后,决策树就容易很多了。

通过绘制节点,并连接相关的节点,在碰到节点为树的情况下进行递归操作,能够绘制完整棵树。


预测未知数据的决策


创建完决策树以后,使用决策树来对未知的数据进行预测,预测的算法也较为明显,通过一步一步树的不同走向,得出最后不同的结果。

决策树完整的代码在这里,决策树。


实例

常见一组简单的实验数据,训练符合决策树,通过决策树预测未知的数据。

绘制的决策树如下:

sklearn 下的决策树


sklearn同样的也有决策树的实现,使用的是sklearn.tree下的DecisionTreeClassifier。 在如下的例子中,使用的数据是sklearn自带的 iris 数据,把数据分为两部分,前面120个数据用来作为训练数据,其余30个数据用来做测试,最后测出决策树的准确率。

同样的sklearn也可以使用graphviz,进行决策树的绘制,export_graphviz方法也很简单。

输出iris.dot文件,文件的内容如下:

使用命令:

结果图如下:

是不是很清楚,明明白白每一步是如何走的。


有了决策树,有了树,就会有森林。在现实中森林中是由许多的树组成的。关键的问题在于如何构建这些树。在集成算法中有一种方法叫做Bagging算法。 Bagging算法是最符合评分系统的算法,在Bagging算法中,包原始的数据集分为S份,在S个数据集建好之后,用某个学习算法对数据集进行训练,得出S个分类器。最具有代表性的是随机森林算法(random forest),这种算法较容易用各种语言实现。


转载请标明来之:阿猫学编程

更多教程:阿猫学编程-python基础教程


更多课程和文章尽在微信号:

「datartisan数据工匠」

登录查看更多
4

相关内容

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

知识荟萃

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

更多

查看相关VIP内容、论文、资讯等
【2020新书】监督机器学习,156页pdf,剑桥大学出版社
专知会员服务
151+阅读 · 2020年6月27日
少标签数据学习,54页ppt
专知会员服务
196+阅读 · 2020年5月22日
【天津大学】知识图谱划分算法研究综述
专知会员服务
106+阅读 · 2020年4月27日
【机器学习课程】机器学习中的常识性问题
专知会员服务
73+阅读 · 2019年12月2日
可解释推荐:综述与新视角
专知会员服务
111+阅读 · 2019年10月13日
AI从业者必须了解的决策树指南
AI前线
7+阅读 · 2019年1月14日
入门 | 机器学习第一课:决策树学习概述与实现
机器之心
4+阅读 · 2018年4月29日
【机器学习理论】我所理解的 SVM(支持向量机)- 1
机器学习研究会
5+阅读 · 2018年3月16日
基于概率论的分类方法:朴素贝叶斯
Python开发者
8+阅读 · 2017年11月9日
【推荐】决策树/随机森林深入解析
机器学习研究会
5+阅读 · 2017年9月21日
手写决策树
七月在线实验室
4+阅读 · 2017年9月20日
机器学习(16)之支持向量机原理(二)软间隔最大化
机器学习算法与Python学习
6+阅读 · 2017年9月8日
机器学习算法实践:决策树 (Decision Tree)
Python开发者
9+阅读 · 2017年7月17日
从逻辑回归到最大熵模型
夕小瑶的卖萌屋
4+阅读 · 2017年7月11日
Arxiv
8+阅读 · 2019年3月28日
Arxiv
6+阅读 · 2018年8月27日
VIP会员
相关VIP内容
相关资讯
AI从业者必须了解的决策树指南
AI前线
7+阅读 · 2019年1月14日
入门 | 机器学习第一课:决策树学习概述与实现
机器之心
4+阅读 · 2018年4月29日
【机器学习理论】我所理解的 SVM(支持向量机)- 1
机器学习研究会
5+阅读 · 2018年3月16日
基于概率论的分类方法:朴素贝叶斯
Python开发者
8+阅读 · 2017年11月9日
【推荐】决策树/随机森林深入解析
机器学习研究会
5+阅读 · 2017年9月21日
手写决策树
七月在线实验室
4+阅读 · 2017年9月20日
机器学习(16)之支持向量机原理(二)软间隔最大化
机器学习算法与Python学习
6+阅读 · 2017年9月8日
机器学习算法实践:决策树 (Decision Tree)
Python开发者
9+阅读 · 2017年7月17日
从逻辑回归到最大熵模型
夕小瑶的卖萌屋
4+阅读 · 2017年7月11日
Top
微信扫码咨询专知VIP会员