分类算法:决策树(C4.5)

C4.5是机器学习算法中的另一个分类决策树算法,它是基于ID3算法进行改进后的一种重要算法,相比于ID3算法,改进有如下几个要点:

  • 用信息增益率来选择属性。ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(entropy, 熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率。
  • 在决策树构造过程中进行剪枝,因为某些具有很少元素的结点可能会使构造的决策树过适应(Overfitting),如果不考虑这些结点可能会更好。
  • 对非离散数据也能处理。
  • 能够对不完整数据进行处理。

首先,说明一下如何计算信息增益率。
熟悉了ID3算法后,已经知道如何计算信息增益,计算公式如下所示(来自Wikipedia):



或者,用另一个更加直观容易理解的公式计算:

  • 按照类标签对训练数据集D的属性集A进行划分,得到信息熵:
  • 按照属性集A中每个属性进行划分,得到一组信息熵:
  • 计算信息增益

然后计算信息增益,即前者对后者做差,得到属性集合A一组信息增益:


这样,信息增益就计算出来了。

  • 计算信息增益率

下面看,计算信息增益率的公式,如下所示(来自Wikipedia):

其中,IG表示信息增益,按照前面我们描述的过程来计算。而IV是我们现在需要计算的,它是一个用来考虑分裂信息的度量,分裂信息用来衡量属性分 裂数据的广度和均匀程序,计算公式如下所示(来自Wikipedia):

简化一下,看下面这个公式更加直观:


其中,V表示属性集合A中的一个属性的全部取值。

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

上面的训练集有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

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

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
2 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
3 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
4 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

接下来,我们计算分裂信息度量H(V):

  • OUTLOOK属性

属性OUTLOOK有3个取值,其中Sunny有5个样本、Rainy有5个样本、Overcast有4个样本,则

1 H(OUTLOOK) = - 5/14 * log2(5/14) - 5/14 * log2(5/14) - 4/14 * log2(4/14) = 1.577406282852345
  • TEMPERATURE属性

属性TEMPERATURE有3个取值,其中Hot有4个样本、Mild有6个样本、Cool有4个样本,则

1 H(TEMPERATURE) = - 4/14 * log2(4/14) - 6/14 * log2(6/14) - 4/14 * log2(4/14) = 1.5566567074628228
  • HUMIDITY属性

属性HUMIDITY有2个取值,其中Normal有7个样本、High有7个样本,则

1 H(HUMIDITY) = - 7/14 * log2(7/14) - 7/14 * log2(7/14) = 1.0
  • WINDY属性

属性WINDY有2个取值,其中True有6个样本、False有8个样本,则

1 H(WINDY) = - 6/14 * log2(6/14) - 8/14 * log2(8/14) = 0.9852281360342516

根据上面计算结果,我们可以计算信息增益率,如下所示:

1 IGR(OUTLOOK) = Gain(OUTLOOK) / H(OUTLOOK) = 0.246/1.577406282852345 = 0.15595221261270145
2 IGR(TEMPERATURE) = Gain(TEMPERATURE) / H(TEMPERATURE) = 0.029 / 1.5566567074628228 = 0.018629669509642094
3 IGR(HUMIDITY) = Gain(HUMIDITY) / H(HUMIDITY) = 0.151/1.0 = 0.151
4 IGR(WINDY) = Gain(WINDY) / H(WINDY) = 0.048/0.9852281360342516 = 0.048719680492692784

根据计算得到的信息增益率进行选择属性集中的属性作为决策树结点,对该结点进行分裂。

C4.5算法的优点是:产生的分类规则易于理解,准确率较高。
C4.5算法的缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

时间: 2024-10-27 19:24:52

分类算法:决策树(C4.5)的相关文章

分类算法之决策树(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 )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强调客户细分.客户类别分析

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

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

数据挖掘-AdditiveRegression 分类方法与其他分类算法比优点有哪些?

问题描述 AdditiveRegression 分类方法与其他分类算法比优点有哪些? 现在大多数数据集分类最后都是 yes or no 不是numeric 类型的就不能用AdditiveRegression方法分类 那我如何对比它与C4.5等分类方法的性能呢? 解决方案 朴素贝叶斯分类算法分类算法简介

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

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

一种效率极高的分类算法

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