分类算法:决策树(ID3)

决策树是以实例为基础的归纳学习算法。 它从一组无次序、无规则的元组中推理出决策树表示形式的分类规则。它采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较,并根据不同的属性值从该结点向下分支,叶结点是要学习划分的类。从根到叶结点的一条路径就对应着一条合取规则,整个决策树就对应着一组析取表达式规则。
一棵决策树由以下3类结点构成:

  • 根结点
  • 内部结点(决策结点)
  • 叶结点

其中,根结点和内部结点都对应着我们要进行分类的属性集中的一个属性,而叶结点是分类中的类标签的集合。如果一棵决策树构建起来,其分类精度满足我们的实际需要,我们就可以使用它来进行分类新的数据集。
这棵决策树就是我们根据已有的训练数据集训练出来的分类模型,可以通过使用测试数据集来对分类模型进行验证,经过调整模型直到达到我们所期望的分类精度,然后就可以使用该模型来预测实际应用中的新数据,对新的数据进行分类。
通过上面描述,我们已经能够感觉出,在构建决策树的过程中,如果选择其中的内部结点(决策结点),才能够使我们的决策树得到较高的分类精度,这是难点。其中,ID3算法主要是给出了通过信息增益的方式来进行决策结点的选择。
首先,看一下如何计算信息熵。熵是不确定性的度量指标,假如事件A的全概率划分是(A1,A2,…,An),每部分发生的概率是(p1,p2,…,pn),那么信息熵通过如下公式计算:

1 Info(A) = Entropy(p1,p2,...,pn) = -p1 * log2(p1) -p2 * log2(p2) - ... -pn * log2(pn)

我们以一个很典型被引用过多次的训练数据集D为例,来说明ID3算法如何计算信息增益并选择决策结点,训练集如图所示:



上面的训练集有4个属性,即属性集合A={OUTLOOK, TEMPERATURE, HUMIDITY, WINDY};而类标签有2个,即类标签集合C={Yes, No},分别表示适合户外运动和不适合户外运动,其实是一个二分类问题。
数据集D包含14个训练样本,其中属于类别“Yes”的有9个,属于类别“No”的有5个,则计算其信息熵:

1 Info(D) = -9/14 * log2(9/14) - 5/14 * log2(5/14) = 0.940

下面对属性集中每个属性分别计算信息熵,如下所示:

  • OUTLOOK属性

OUTLOOK属性中,有3个取值:Sunny、Overcast和Rainy,样本分布情况如下:
类别为Yes时,Sunny有2个样本;类别为No时,Sunny有3个样本。
类别为Yes时,Overcast有4个样本;类别为No时,Overcast有0个样本。
类别为Yes时,Rainy有3个样本;类别为No时,Rainy有2个样本。
从而可以计算OUTLOOK属性的信息熵:

1 Info(OUTLOOK) = 5/14 * [- 2/5 * log2(2/5) – 3/5 * log2(3/5)] + 4/14 * [ - 4/4 * log2(4/4) - 0/4 * log2(0/4)] + 5/14 * [ - 3/5 * log2(3/5) – 2/5 * log2(2/5)] = 0.694
  • TEMPERATURE属性

TEMPERATURE属性中,有3个取值:Hot、Mild和Cool,样本分布情况如下:
类别为Yes时,Hot有2个样本;类别为No时,Hot有2个样本。
类别为Yes时,Mild有4个样本;类别为No时,Mild有2个样本。
类别为Yes时,Cool有3个样本;类别为No时,Cool有1个样本。

1 Info(TEMPERATURE) = 4/14 * [- 2/4 * log2(2/4) – 2/4 * log2(2/4)] + 6/14 * [ - 4/6 * log2(4/6) - 2/6 * log2(2/6)] + 4/14 * [ - 3/4 * log2(3/4) – 1/4 * log2(1/4)] = 0.911
  • HUMIDITY属性

TEMPERATURE属性中,有2个取值:High和Normal,样本分布情况如下:
类别为Yes时,High有3个样本;类别为No时,High有4个样本。
类别为Yes时,Normal有6个样本;类别为No时,Normal有1个样本。

1 Info(HUMIDITY) = 7/14 * [- 3/7 * log2(3/7) – 4/7 * log2(4/7)] + 7/14 * [ - 6/7 * log2(6/7) - 1/7 * log2(1/7)] = 0.789
  • WINDY属性

WINDY属性中,有2个取值:True和False,样本分布情况如下:
类别为Yes时,True有3个样本;类别为No时,True有3个样本。
类别为Yes时,False有6个样本;类别为No时,False有2个样本。

1 Info(WINDY) = 6/14 * [- 3/6 * log2(3/6) – 3/6 * log2(3/6)] + 8/14 * [ - 6/8 * log2(6/8) - 2/8 * log2(2/8)] = 0.892

根据上面的数据,我们可以计算选择第一个根结点所依赖的信息增益值,计算如下所示:

1 Gain(OUTLOOK) = Info(D) - Info(OUTLOOK) = 0.940 - 0.694 = 0.246
2 Gain(TEMPERATURE) = Info(D) - Info(TEMPERATURE) = 0.940 - 0.911 = 0.029
3 Gain(HUMIDITY) = Info(D) - Info(HUMIDITY) = 0.940 - 0.789 = 0.151
4 Gain(WINDY) = Info(D) - Info(WINDY) = 0.940 - 0.892 = 0.048

根据上面对各个属性的信息增益值进行比较,选出信息增益值最大的属性:

1 Max(Gain(OUTLOOK), Gain(TEMPERATURE), Gain(HUMIDITY), Gain(WINDY)) = Gain(OUTLOOK)

所以,第一个根结点我们选择属性OUTLOOK。

继续执行上述信息熵和信息增益的计算,最终能够选出其他的决策结点,从而建立一棵决策树,这就是我们训练出来的分类模型。基于此模型,可以使用一组测试数据及进行模型的验证,最后能够对新数据进行预测。

ID3算法的优点是:算法的理论清晰,方法简单,学习能力较强。
ID3算法的缺点是:只对比较小的数据集有效,且对噪声比较敏感,当训练数据集加大时,决策树可能会随之改变。

时间: 2024-09-29 06:27:00

分类算法:决策树(ID3)的相关文章

分类算法之决策树(Decision tree)

3.1.摘要       在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法.这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断.在这一篇文章中,将讨论另一种被广泛使用的分类算法--决策树(decision tree).相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用. 3.2.决策树引导       通俗来说,决策树分类的思想类似于找对象.现想象一个女孩的母亲要给这个女孩介绍男朋友,

分类算法总结

决策树分类算法 决策树归纳是经典的分类算法. 它采用自顶向下递归的各个击破方式构造决策树. 树的每一个结点上使用信息增益度量选择测试属性. 可以从生成的决策树中提取规则. KNN法(K-Nearest Neighbor): KNN法即K最近邻法,最初由Cover和Hart于1968年提出的,是一个理论上比较成熟的方法. 该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 该方法在定类决策上只依据最邻近的一个

机器学习(二)--- 分类算法详解

感觉狼厂有些把机器学习和数据挖掘神话了,机器学习.数据挖掘的能力其实是有边界的.机器学习.数据挖掘永远是给大公司的业务锦上添花的东西,它可以帮助公司赚更多的钱,却不能帮助公司在与其他公司的竞争中取得领先优势,所以小公司招聘数据挖掘/机器学习不是为了装逼就是在自寻死路.可是相比Java和C++语言开发来说,机器学习/数据挖掘确实是新一些老人占的坑少一些,而且可以经常接触一些新的东西.还是赶紧再次抓住机会集中的再总结一下吧,不能再拖拖拉拉了.  其实数据挖掘的主要任务是分类.聚类.关联分析.预测.时

数据挖掘系列(7)分类算法评价

一.引言 分类算法有很多,不同分分类算法又用很多不同的变种.不同的分类算法有不同的特定,在不同的 数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一 个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法. 正确率确实是一个很好很直观的评价指标,但是有时候正确率高并不能代表一个算法就好.比如某 个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震 .1:发生地震.一个不加思考的分类器

Netflix工程总监眼中的分类算法:深度学习优先级最低

英文原文:What are the advantages of different classification algorithms?(翻译/王玮编辑/周建丁) [编者按]针对 Quora 上的一个老问题:不同分类算法的优势是什么?Netflix 公司工程总监 Xavier Amatriain 近日给出新的解答,他根据奥卡姆剃刀原理依次推荐了逻辑回归.SVM.决策树集成和深度学习,并谈了他的不同认识.他并不推荐深度学习为通用的方法. 不同分类算法的优势是什么?例如有大量的训练数据集,上万的实例

数据挖掘中分类算法小结

数据仓库,数据库或者其它信息库中隐藏着许多可以为商业.科研等活动的决策提供所需要的知识.分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型.分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强调客户细分.客户类别分析

一小时了解数据挖掘②:分类算法的应用和成熟案例解析

接上篇:一小时了解数据挖掘①:解析常见的大数据应用案例 分类算法的应用 本节将为大家介绍数据挖掘中的分类算法在一些行业中的代表性应用.我们将算法应用分为表述问题和解决过程两个阶段,表述问题即需要运用数据挖掘能够理解和处理的语言来阐述业务问题,最重要的是能够用正确且符合实际的方式把业务问题转化成数据挖掘问题,这往往决定了后续工作是否能有效的展开,尝试解决一个不符合实际的业务问题往往会使得数据挖掘的工作陷入数据的海洋中,既费时费力又得不到想要的结果.而解决过程,顾名思义就是将表述清楚的问题通过数据挖

一种效率极高的分类算法(转--非常好,帮助很大对于想做好asp的朋友)

算法 分类算法要解决的问题在网站建设中,分类算法的应用非常的普遍.在设计一个电子商店时,要涉及到商品分类:在设计发布系统时,要涉及到栏目或者频道分类:在设计软件下载这样的程序时,要涉及到软件的分类:如此等等.可以说,分类是一个很普遍的问题. 我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题.下面的举几个我常常询问的问题.你认为你可以很轻松地回答么^_^. 1.分类算法常常表现为树的表示和遍历问题.那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段?2

一种效率极高的分类算法

算法 分类算法要解决的问题在网站建设中,分类算法的应用非常的普遍.在设计一个电子商店时,要涉及到商品分类:在设计发布系统时,要涉及到栏目或者频道分类:在设计软件下载这样的程序时,要涉及到软件的分类:如此等等.可以说,分类是一个很普遍的问题. 我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题.下面的举几个我常常询问的问题.你认为你可以很轻松地回答么^_^. 1.分类算法常常表现为树的表示和遍历问题.那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段?2

介绍一种效率极高的分类算法

算法 在网站建设中,分类算法的应用非常的普遍.在设计一个电子商店时,要涉及到商品分类:在设计发布系统时,要涉及到栏目或者频道分类:在设计软件下载这样的程序时,要涉及到软件的分类:如此等等.可以说,分类是一个很普遍的问题. 我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题.下面的举几个我常常询问的问题.你认为你可以很轻松地回答么^_^.1. 分类算法常常表现为树的表示和遍历问题.那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段?2. 如何快速地从这个