ID3决策树

决策树是一个树形结构,类似下面这样:

上图除了根节点外,有三个叶子节点和一个非叶子节点。

在解决分类问题的决策树中,叶子节点就表示所有的分类,比如这里的分类就有3种:无聊时阅读的邮件、需及时处理的邮件、无需阅读的邮件。

使用决策树来分类某个样本数据,就是利用根节点选取的特征,将当前输入样本划分到根节点下的某个子节点上,然后再利用子节点表示的特征来将当前样本划分到该子节点下的某个子节点上,以此继续,直到到达某个叶子节点,那么这个叶子节点表示的类别就是当前决策树对该样本数据所属的类别的预测。

对于上图,因为各个节点表示的特征和各个叶子节点表示的分类都已经给出了,所以给定一个数据很容易就能预测出对应的类别,但是在实际的分类场景中,我们手上有了标注好的训练样本数据后,要如何来构建一颗能够预测新样本类别的决策树呢?换句话说就是,我们如何知道这颗决策树的各个节点选取什么特征来划分数据才最合适呢?ok,你可能听过一些算法的名字,比如ID3、C4.5、CART等,它们其实就是用来解决这个问题的。

这里我们将介绍ID3算法。

我们选取划分数据集的特征的时候,需要考虑的标准是什么特征可以更好的将数据集分开,比如判断是男人还是女人,那么【是否穿高跟鞋】要比【是否带耳钉】更容易将人群划分开,或者说更能划分出纯度高的数据子集。

然而,其实很多时候我们都无法轻易的看出哪种特征能划分出更纯的数据子集,所以就需要一种方法能够帮助我们量化每种特征划分出的数据子集的信息纯度,以便筛选出更纯的划分方式。而其中一种方法就是使用信息论,信息论是量化处理信息的分支科学,可以用来度量信息,比如度量我们刚才说的数据子集的纯度。

所以阅读下面的内容之前,建议先了解一下信息论中的相关知识,包括信息量、信息熵,可以参考这篇文章:《信息熵为什么要定义成-Σp * log(p)》。

ID3决策树使用信息熵度量数据子集的纯度,信息熵越大,数据越混乱,纯度越低。

从ID3决策树的第一层开始,如果每一层的信息熵都是按照最大化的方式递减的,才能最快划分出纯度较高的数据子集(就像我们人工做分类,一定是从最显著的特征开始划分物品,才是最大程度利用了显著特征的优势,所以以这种方式做分类最快),然后根据叶子节点划分出的数据子集中的最多出现的类别来确认对应叶子节点的所属分类,从而得到一颗完整的分类决策树。

那么如何保证每一层的信息熵以最大化的方式递减呢?这就要说到信息增益了。

在划分数据集之前之后信息发生的变化称为信息增益, 所以计算出每个特征划分数据集获得的信息增益,然后获得信息增益最高的特征就是最好的选择。

信息增益的计算方式如下:

按某个特征划分当前节点数据集将得到的信息增益 =
?当前节点数据集的信息熵? ? -? ? 按该特征划分出来的各个数据子集的信息熵总和?

ok,对ID3决策树总结一下:

遍历每个特征,找出使得信息增益最大的特征,做为当前节点下数据子集的划分特征,直到所有属性遍历完毕,或者某个数据子集的所有数据都已经具有相同的分类,此时ID3决策树构建完成,可以用来预测新样本的类别了。

然而,ID3还是有缺陷的,比如会偏向选择特征值比较多的特征来划分数据子集,然而如果训练数据中符合这个特征值的数据只出现过很少,甚至是一次,那么将导致构建出的决策树对这个特征的偏见。另外,ID3无法处理含有连续型数值的特征以及处理回归问题,这类场景下,决策树需要另一种算法——CART,下一篇文章会具体介绍。

ok,本篇就这么多内容啦~,感谢阅读O(∩_∩)O。

原文地址:https://www.cnblogs.com/anai/p/12160785.html

时间: 2024-10-13 23:24:44

ID3决策树的相关文章

ID3决策树预测的java实现

刚才写了ID3决策树的建立,这个是通过决策树来进行预测.这里主要用到的就是XML的遍历解析,比较简单. 关于xml的解析,参考了: http://blog.csdn.net/soszou/article/details/8049220 http://lavasoft.blog.51cto.com/62575/71669/ 思路: 先将要预测的数据,例如"sunny mild normal TRUE"根据特征表变成一个map,方便后续查找,结果为 outlook sunny temper

ID3决策树分析

1 简述 1.1    id3是一种基于决策树的分类算法,由J.Ross Quinlan在1986年开发.id3根据信息增益,运用自顶向下的贪心策略建立决策树.信息增益用于度量某个属性对样本集合分类的好坏程度.由于采用了信息增益,id3算法建立的决策树规模比较小,查询速度快.id3算法的改进是C4.5算法,C4.5算法可以处理连续数据,采用信息增益率,而不是信息增益.理解信息增益,需要先看一下信息熵. 1.2 信息熵    信息熵是随机变量的期望.度量信息的不确定程度.信息的熵越大,信息就越不容

数据挖掘-CART,C4.5,ID3,决策树

CART和C4.5决策树有什么区别? 1.C4.5算法是在ID3算法的基础上采用信息增益率的方法选择测试属性. ID3算法和C4.5算法虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但其生成的决策树分支较大,规模较大.为了简化决策树的规模,提高生成决策树的效率,又出现了根据GINI系数来选择测试属性的决策树算法CART.2.CART算法采用一种二分递归分割的技术,与基于信息熵的算法不同,CART算法对每次样本集的划分计算GINI系数,GINI系数,GINI系数越小则划分越合理.CART算法总

ID3决策树---Java

1)熵与信息增益: 2)以下是实现代码: //import java.awt.color.ICC_ColorSpace; import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; //imp

决策树ID3算法[分类算法]

ID3分类算法的编码实现 1 <?php 2 /* 3 *决策树ID3算法(分类算法的实现) 4 */ 5 6 /* 7 *把.txt中的内容读到数组中保存 8 *$filename:文件名称 9 */ 10 11 //-------------------------------------------------------------------- 12 function gerFileContent($filename) 13 { 14 $array = array(NULL); 15

决策树之ID3算法

一.决策树之ID3算法简述 1976年-1986年,J.R.Quinlan给出ID3算法原型并进行了总结,确定了决策树学习的理论.这可以看做是决策树算法的起点.1993,Quinlan将ID3算法改进成C4.5算法,称为机器学习的十大算法之一.ID3算法的另一个分支是CART(Classification adn Regression Tree, 分类回归决策树),用于预测.这样,决策树理论完全覆盖了机器学习中的分类和回归两个领域. 本文只做了ID3算法的回顾,所选数据的字段全部是有序多分类的分

决策树一

决策树是一种对样本进行划分的机器学习算法,其要点在于最优特征的选取,决策树生成与剪枝,决策树的生成是个递归过程,其中有三种情况会导致递归返回: ①当前节点所属样本属于同一类而不需要划分: ②所有样本在所有属性上取值相同而不能划分: ③当前没有所属样本 对于属性的选取主要有三种方法: 一. 基于信息增益的选取划分方法,对应于ID3决策树学习算法 信息熵的定义如下: \[H(X) = - \sum\limits_{i = 1}^n {{p_i}} \times {\log _2}{p_i}\] 其中

MATLAB简单实现ID3

再看<MATLAB数据分析与挖掘实战>,简单总结下今天看到的经典的决策树算法——ID3. ID3:在决策树的各级节点上,使用信息增益的方法作为属性的选择标准,来帮助确定生成每个节点时所应采取的合适属性. 关于信息增益,知乎上这个回答也讲的很不错.信息增益=熵 - 条件熵,信息增益越大,说明该条件对事件确定性的影响越大.所以,在决策树中,我们将信息增益值作为测试属性.把测试属性取值相同的样本划为同一个子样本集. 基本流程: ·对当前样本,计算所有属性的信息增益,并将信息增益作为测试属性: ·若子

ID3算法(Java实现)

数据存储文件:buycomputer.properties #数据个数 datanum=14 #属性及属性值 nodeAndAttribute=年龄:青/中/老,收入:高/中/低,学生:是/否,信誉:良/优,归类:买/不买 #数据 D1=青,高,否,良,不买 D2=青,高,否,优,不买 D3=中,高,否,良,买 D4=老,中,否,良,买 D5=老,低,是,良,买 D6=老,低,是,优,不买 D7=中,低,是,优,买 D8=青,中,否,良,不买 D9=青,低,是,良,买 D10=老,中,是,良,买