决策树归纳算法解析之ID3

学习是一个循序渐进的过程,我们首先来认识一下,什么是决策树。顾名思义,决策树就是拿来对一个事物做决策,作判断。那如何判断呢?凭什么判断呢?都是值得我们去思考的问题。

请看以下两个简单例子:

第一个例子

现想象一个女孩的母亲要给自己家的闺女介绍男朋友,女孩儿通过对方的一些情况来考虑要不要去,于是有了下面的对话:

女儿:多大年纪了?
      母亲:26。
      女儿:长的帅不帅?
      母亲:挺帅的。
      女儿:收入高不?
      母亲:不算很高,中等情况。
      女儿:是公务员不?
      母亲:是,在税务局上班呢。
      女儿:那好,我去见见。

这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑

                 

 图1

第二个例子

此例子来自Tom M.Mitchell著的机器学习一书:

小王的目的是通过下周天气预报寻找什么时候人们会打高尔夫,他了解到人们决定是否打球的原因最主要取决于天气情况。而天气状况有晴,云和雨;气温用华氏温度表示;相对湿度用百分比;还有有无风。如此,我们便可以构造一棵决策树,如下(根据天气这个分类决策这天是否合适打网球):

              图2

上述决策树对应于以下表达式:

(Outlook=Sunny ^Humidity<=70)V (Outlook = Overcast)V (Outlook=Rain ^ Wind=Weak)

看完两个例子之后,给出决策树的定义:一种类似于流程图的树结构,其中,

每个非叶子结点表示在一个属性上的测试;

每个分支代表该测试的一个输出;

每个叶子结点代表一个类标号。

看到这里,心里应该大概有了一个决策树的样子了。然后,引出两个问题:

1:如何使用决策树分类?

怎么用?那是很简单的,给定一个元组,我从决策树的根开始,一一地找到一条从根到叶子结点符合条件的路径,那么叶子结点上保存的类预测就是我们想要的答案。因此,决策树容易转换成一种分类规则(把某个类分到哪一条路径上去)。

2:为什么决策树分类器如此流行?

1:决策树的构造不需要任何领域知识或参数设置,因此适合于探测式知识发现;

2:决策树可以处理高维数据;

3:决策树的表现形式直观,容易被理解;

4:一般来说,决策树分类器具有很好地准确率;



有了以上简单的预备知识,相信你已经迫不及待地想去构造一棵决策树玩玩了。那么,问题来了,怎么去构造这棵美丽的树呢?

很显然,有些东西我们可以猜想一下:

1、既然他是一棵树,如果要构造他,一定要从根开始构造吧?!没有根的存在其他的结点毫无意义,因此,决策树的构造将会是一个自顶向下的过程(根在最顶部);

2、当我们要向下进行延拓这棵树,那么每一次选择属性进行延拓的过程就是一个递归的过程,至于选择哪一个属性用来延拓,我们一定会学习到相应地度量方法。

下面,为大家隆重推出两个方法(算法)来解决这个问题。他们就是ID3和C4.5。因为C4.5算法是ID3算法的改进版,因此,首先来介绍一下ID3是怎么回事。

打开维基百科:

ID3算法(Iterative Dichotomiser 3 迭代二叉树3代)是一个由Ross Quinlan发明的用于决策树算法

这个算法是建立在奥卡姆剃刀的基础上:越是小型的决策树越优于大的决策树(简单理论)。尽管如此,该算法也不是总是生成最小的树形结构。而是一个启发式算法。奥卡姆剃刀阐述了一个信息熵的概念:

这个ID3算法可以归纳为以下几点:

  1. 使用所有没有使用的属性并计算与之相关的样本熵值
  2. 选取其中熵值最小的属性
  3. 生成包含该属性的节点

看到这里,心里差不多对ID3有点感觉了。下面,引用一个网上的关于ID3思想的总结:

  1. 自顶向下的贪婪搜索遍历可能的决策树空间构造决策树(此方法是ID3算法和C4.5算法的基础);
  2. 从“哪一个属性将在树的根节点被测试”开始;
  3. 使用统计测试来确定每一个实例属性单独分类训练样例的能力,分类能力最好的属性作为树的根结点测试(如何定义或者评判一个属性是分类能力最好的呢?这便是下文将要介绍的信息增益,or 信息增益率)。
  4. 然后为根结点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支(也就是说,样例的该属性值对应的分支)之下。
  5. 重复这个过程,用每个分支结点关联的训练样例来选取在该点被测试的最佳属性。

在大概了解了ID3是如何构造决策树之后,我们来对仍不太清楚的环节进行讨论。

a:在构造决策树的过程中,如何判断哪个属性是最佳属性,即我们要用哪个属性进行延拓决策树?

显然,这是一个属性相互PK的过程,谁输谁赢,要有一个评判的标准,专业名称就是属性选择度量。一般有三种常用的属性选择度量——信息增益(ID3),增益率(C4.5)和基尼指数(Gini指数,CART)。ID3使用信息增益作为属性选择度量,因此,本文只讲信息增益。他是由香农在研究消息的值或“信息内容”的信息论中提出来的。设结点N代表或存放分区D的元组。选择具有最高信息的属性作为结点N的分裂属性。该属性使结果分区中对元组分类所需要的信息量最小,并反映这些分区中的最小随机性或“不纯性”。这种方法使得对一个对象分类所需要的期望测试数目最小,并确保找到一棵简单的树(还记得“奥卡姆剃刀”么?)。

(因为书上讲的足够详细,且并不晦涩。所以,在次引用书本上的内容。)

下面作一些补充:

在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量。所谓信息量,就是熵。

因此,我们在计算出每个属性的Gain()值之后,要挑最大的!

既然已经了解了熵以及信息增益的概念与计算方法。我们就拿一个例子来练练手吧。

eg:

问题描述:根据以上表中的信息,得到一棵预测顾客是否会购买电脑的决策树。

步骤:

1、计算Info(buy_computer);

buy_computer是离散的(这个例子中所有的属性都是离散的,如果是连续的,可以对其进行离散化)

表中可以看出,类no对应5个元组,类yes对应9个元组。

故得:

2、计算其余每个属性的期望信息需求。

age的熵:

age的信息增益:

显然,age在属性中具有最高的信息增益,所以它被选作分裂属性。

得到:

接下来,我们要做的事情就是递归下去。也就是把问题分为了3个子问题进行求解。

决策树归纳算法解析之ID3

时间: 2024-11-10 13:51:50

决策树归纳算法解析之ID3的相关文章

决策树归纳一般框架(ID3,C4.5,CART)

感性认识决策树 构建决策树的目的是对已有的数据进行分类,得到一个树状的分类规则,然后就可以拿这个规则对未知的数据进行分类预测. 决策树归纳是从有类标号的训练元祖中学习决策树. 决策树是一种类似于流程图的树结构,其中每个内部节点(非树叶结点)表示一个属性上的测试,每个分支代表该测试上的一个输出,而每个树叶结点(或终端结点)存放一个类标号.树的最顶层结点是根结点.一个典型的决策树如下图所示, 该决策树是通过下表所示的训练元组和它们对应的类标号得到的, 为什么决策树如此流行 决策树分类器的构造不需要任

决策树分类算法(ID3)

1. 什么是决策树/判定树(decision tree)? 判定树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布.树的最顶层是根结点. 2.  机器学习中分类方法中的一个重要算法 3.  构造决策树的基本算法 3.1 熵(entropy)概念: 信息和抽象,如何度量? 1948年,香农提出了 "信息熵(entropy)"的概念 一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,

决策树归纳(ID3属性选择度量)Java实现

一般的决策树归纳框架见之前的博文:http://blog.csdn.net/zhyoulun/article/details/41978381 ID3属性选择度量原理 ID3使用信息增益作为属性选择度量.该度量基于香农在研究消息的值或"信息内容"的信息论方面的先驱工作.该结点N代表或存放分区D的元组.选择具有最高信息增益的属性作为结点N的分裂属性.该属性使结果分区中对元祖分类所需要的信息量最小,并反映这些分区中的最小随机性或"不纯性".这种方法使得对一个对象分类所需

重新认识决策树系列算法和逻辑斯特回归(一)

一.决策树通俗到深入理解 我们知道决策树可以用来分类,同样可以用来回归,我们主要其应用于分类的情况,回归其实是相似的. 举一个例子,一家银行要确定是否给用户发信用卡,那么它要根据用户的基本信息来确定是否要发给这个用户,假设我们知道用户的信息如下: 年龄 是否有工作 是否有自己的房子 信贷情况 性别 青年.中年.老年 是.否 是.否 差.非常差.一般.好.非常好 男.女 分类的结果当然是:发信用卡,不发信用卡 如果学过逻辑回归算法的话,我们知道,它是把这些特征进行加权之后的和然后带入sigmod函

Mmseg中文分词算法解析

@author linjiexing 开发中文搜索和中文词库语义自己主动识别的时候,我採用都是基于mmseg中文分词算法开发的Jcseg开源project.使用场景涉及搜索索引创建时的中文分词.新词发现的中文分词.语义词向量空间构建过程的中文分词和文章特征向量提取前的中文分词等,整体使用下来,感觉jcseg是一个非常优秀的开源中文分词工具,并且可配置和开源的情况下,能够满足非常多场景的中文分词逻辑.本文先把jcseg使用到最主要的mmseg算法解析一下. 1. 中文分词算法之争 在分析mmseg

用Python开始机器学习(2:决策树分类算法)

http://blog.csdn.net/lsldd/article/details/41223147 从这一章开始进入正式的算法学习. 首先我们学习经典而有效的分类算法:决策树分类算法. 1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题.因此如何构建一棵好的决策树是研究的重点. J. Ross Q

02-23 决策树CART算法

[TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 决策树CART算法 决策树C4.5算法虽然对决策树ID3算法做了很大的改良,但是缺点也是很明显的,无法处理回归问题.使用较为复杂的熵来作为特征选择的标准.生成的决策树是一颗较为复杂的多叉树结构,CART算法针对这些问题又做了进一步的优化. 一.决策树CART算法学习目标 基尼指数和熵 CART算法对连续值和特

[转]SURF算法解析

SURF算法解析 一.积分图像    积分图像的概念是由Viola和Jones提出的.积分图像中任意一点(i,j)的值为原图像左上角到任意点(i,j)相应的对焦区域的灰度值的总和,其数学公式如图1所示: 那么,当我们想要计算图片一个区域的积分,就只需计算这个区域的四个顶点在积分图像里的值,便可以通过2步加法和2步减法计算得出,其数学公式如下: 二.Hession矩阵探测器1.斑点检测    斑点:与周围有着颜色和灰度差别的区域.    在一个一维信号中,让它和高斯二阶导数进行卷积,也就是拉普拉斯

KMP串匹配算法解析与优化

朴素串匹配算法说明 串匹配算法最常用的情形是从一篇文档中查找指定文本.需要查找的文本叫做模式串,需要从中查找模式串的串暂且叫做查找串吧. 为了更好理解KMP算法,我们先这样看待一下朴素匹配算法吧.朴素串匹配算法是这样的,当模式串的某一位置失配时将失配位置的上一位置与查找串的该位置对齐再从头开始比较模式串的每一个位置.如下图所示. KMP串匹配算法解析 KMP串匹配算法是Knuth-Morris-Pratt算法的简称,KMP算法的思想就是当模式串的某一位置失配时,能不能将更前面的位置与查找串的该位