决策树算法:
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关的特征数据。
缺点:可能会产生过度匹配问题。
适用数据类型:数值型和标称型。

算法原理:
决策树是一个简单的为输入值选择标签的流程图。这个流程图由检查特征值的决策节点和分配标签的子叶节点组成。为输入值选择标签,我们以流程图的初始决策节点(即根节点)开始。此节点包含一个条件,检查输入值的特征之一,基于该特征的值选择一个分支。沿着这个描述我们输入值的分支,我们到到了一个新的决策节点,有一个关于输入值的特征的新条件。我们继续沿着每个节点的条件选择的分支,直到到达叶节点,它为输入值提供了一个标签。

image.png

算法流程:
收集数据:即建立训练测试数据集。
准备数据:决策树构造算法只适用于标称型数据,因此数值型数据必须是离散化的。
分析数据:建立构造树,构造树完成后我们检查图形是否符合预期。
训练数据:完善构造树的数据结构。
测试数据:使用经验树计算。
使用算法:对实际数据进行预测。

ID3算法:
ID3算法(Iterative Dichotomiser 3,迭代二叉树3代)是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。

为了实现ID3算法我们还需要了解这个高富帅提出的三个概念:信息、信息熵和信息增益。

ID3算法

并且由上面的公式我们可以看出其实信息熵就是信息的期望值,所以我们可知,信息熵越小,信息的纯度越高,也就是信息越少,在分类领域来讲就是里面包含的类别越少,所以我们可以得出,与初始信息熵的差越大分类效果越好。

下面我们来举个例子:
买苹果的时候,从外观上评判一个苹果甜不甜有两个依据:红不红 和 圆不圆 (原谅我浅薄的挑苹果经验吧。。。)

挑苹果

下面来算一下啊这5个苹果是不是好苹果的信息熵(只看结果值):

信息熵

下面给出python求信息熵的代码

def calcShannonEnt(dataSet):
numEntries = len(dataSet) #数据集大小
labelCounts = {}
for featVec in dataSet:currentLabel = featVec[-1]   #获取分类标签if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0labelCounts[currentLabel] += 1  #每个类中数据个数统计
shannonEnt = 0.0
for key in labelCounts:  #信息熵计算prob = float(labelCounts[key])/numEntriesshannonEnt -= prob * log(prob,2)
return shannonEnt

我们来用程序求一下我们这个小例子的结果:

小例子的结果

接下来我们要寻找怎么分类比较好也就是决策树的叉,我们的例子中可以按两个方式分类,红不红和圆不圆。。到的按哪个分更好一点呢,这下就用到信息增益了:

def 

按红不红分类的各项数据结果

红不红分类

计算方法为:总的信息熵 - 红不红的信息熵

红不红的信息增益

我们可以看出,这种分类的信息熵是0.5509775,它的信息增益是0.419973

如果按照圆不圆来分类:

圆不圆分类

我们可以看出,这种分类的信息熵是0.8,它的信息增益是0.17095
显然第一种分类的信息增益较大

我们来看一下啊两个划分的结果集:

两个划分的结果集

确实第一种方法划分的较好。

这样我们的决策树也就构建好了:

id3决策树_信息熵、信息增益和决策树(ID3算法)相关推荐

  1. java决策树_【Java】决策树介绍和使用

    现在生活中,越来越多的时候 需要进行判断和决策,因此关于怎么去判断和决策,需要根据一定的依据进行判断和决策,并不是凭空的按照自己的意愿去判断和决策,就比如举个例子: 假如甲同学准备结婚,但是在准备结婚 ...

  2. python展现决策树_使用Python实现决策树

    决策树是一种主要应用于数据分类场景的算法.它是一个树形结构,其中每个节点代表要素,每个边缘代表所做出的决策.从根节点开始,我们继续评估分类特征,并决定遵循特定的优势.每当有新数据点出现时,都会反复应用 ...

  3. python中如何画出决策树_使用Python绘制决策树

    决策树为字典格式,示例如下: {'tearRate': {'reduced': 'no lenses', 'normal': {' astigmatic': {'yes': {' prescript' ...

  4. 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5

    推荐阅读:纯度:信息熵:信息增益 关键词: 纯度:信息熵:信息增益:增益率:ID3:C4.5:基尼指数:预剪枝:后剪枝 4.1基本流程 关键词:决策树(decision tree) 决策树是一种分类方 ...

  5. cart算法_【统计学】决策树模型大比拼!ID3/C4.5/CART算法哪个更好用?

    - 点击上方"中国统计网"订阅我吧!- 决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boos ...

  6. 机器学习--决策树(熵、信息增益(ID3)、C4.5、多方式源码实战)

    谈决策树之前先做一些预备性知识: 1.什么是信息?如何衡量信息的多少?怎么衡量? 信息:从广义上讲,是事物运动时发出的信号所带来的消息,是事物存在方式和运动规律的一种表现形式.不同的事物具有不同的存在 ...

  7. 最大信息熵增益_机器学习笔记(三)——搞懂决策树必备的信息增益

    一.何为决策树 决策树是监督学习算法之一,并且是一种基本的分类与回归方法:决策树也分为回归树和分类树,本文讨论的是分类树.如果了解或者学过数据结构,肯定对"树"这个概念是不陌生的, ...

  8. 12_信息熵,信息熵公式,信息增益,决策树、常见决策树使用的算法、决策树的流程、决策树API、决策树案例、随机森林、随机森林的构建过程、随机森林API、随机森林的优缺点、随机森林案例

    1 信息熵 以下来自:https://www.zhihu.com/question/22178202/answer/161732605 1.2 信息熵的公式 先抛出信息熵公式如下: 1.2 信息熵 信 ...

  9. ID3决策树 Python实现 + sklearn库决策树模型的应用

    本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...

最新文章

  1. 谈一谈浏览器解析CSS选择器的过程【前端每日一题-6】
  2. 浅析中科红旗的生与死
  3. 长春分享网站服务器迁移,网站迁移公告
  4. 十年沉淀,阿里云发布全球领先的对象存储OSS可用性SLA
  5. 大一萌新看过来,“这样”学C++,让你不再迷茫!
  6. umi脚手架搭建的项目_还在从零开始搭建项目?手撸了款快速开发脚手架!
  7. php 无法创建com组件,关于IIS php调用com组件的权限问题
  8. python是动态_Python中的对象和动态性 [菜鸟的理解,高手莫入]
  9. openstack的逻辑概念_基本概念 - 深入理解 OpenStack 网络实现 Neutron
  10. android配置多个url,Retrofit中使用多个baseUrl
  11. Manjaro启动项目及服务配置备忘
  12. Python练习之购物车
  13. Hamilton四元数
  14. C语言图形库——easyx的使用
  15. ie 无人操作自动关闭_为什么一打开IE浏览器就自动关闭解决办法 IE浏览器打开后马上自动关闭了如何办...
  16. 前端水印生成方案(网页水印+图片水印)
  17. oracle 考勤记录表,基于C#+Oracle的考勤管理系统的设计与开发_.doc
  18. 制药工业4.0 智慧工厂探索
  19. 《Science》教你如何写好一篇博士毕业论文!
  20. Android实现QQ分享功能

热门文章

  1. SAP Spartacus org unit list点击item之后的页面跳转实现
  2. Spring Bean的继承
  3. SAP CRM Fiori my Opportunity Etag handling
  4. OPA PropertyStrictEquals match check logic
  5. How is error message Could not create note displayed from backend to ui
  6. Model share between master view and detail view breaks - didn't find root cause
  7. regular expression in SAP jam integration
  8. Angular groupBy test
  9. 使用Javascript递归遍历本地文件夹
  10. nodejs库express是如何接收inbound json请求的