决策树
决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。
这张图很好地解释了决策树:
明天要不要出去玩?
- 晴天:
- 潮湿:不出去
- 不潮湿:出去
- 阴天:出去玩
- 雨天:
- 刮风:不出去
- 不刮风:出去
例子中可以找到两层的分类依据属性,第一层是晴/阴/雨,第二层是是否潮湿和是否刮风,分类依据的确定和先后顺序对决策树的质量有决定性的影响。另外,在实际构造决策树时,经常要进行剪枝,主要是因为数据中往往存在一些噪音数据,或者是存在分类过细的问题,反而失去了分类的意义。一种是先剪枝,在构造树的过程中,当某个节点满足剪枝条件,则直接停止此分支的构造;还有一种是后剪枝,先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。
ID3算法
ID3算法是J. Ross Quinlan提出的分类预测算法,它的核心是用贪心算法来根据“信息熵”分类。何为信息熵?这个概念还是香农(C. E. Shannon)提出来的,用以表示信息的不确定性。信息不确定的因素越多,这个熵就越大。
如果一组数据由{d1,d2,…,dn}构成,其和是sum,那么信息熵可以表示为:
下面举例来说明这个公式:
假使说我们要研究狗的智商(目标属性),潜在的关联因素包括颜色和毛的长度。
颜色(color) | 毛的长度(length) | 智商(IQ) |
black | 长 | 高 |
white | 长 | 高 |
white | 短 | 高 |
white | 短 | 低 |
3次出现“高”智商,1次出现“低智商”,所以目标属性IQ的信息熵:HIQ(D)=-(2/4)log2(2/4)-(1/4)log2(1/4)
color属性在取不同的值对应目标属性IQ的信息熵:
- 在color取值为black的时候,IQ只取“高”这个值:Hcolor(Dblack)=-(1/1)log2(1/1)
- 在color取值为white的时候,IQ取值有两个“高”,一个“低”:Hcolor(Dwhite)=-(1/3)log2(1/3)-(2/3)log2(2/3)
而color属性的整体信息熵是上述二者的加权平均值:Hcolor(D)=(1/4)Hcolor(Dblack)+(3/4)Hcolor(Dwhite)。同样可以求得Hlength(D)。
现在定义信息增益Gaincolor=HIQ(D)-Hcolor(D),Gainlength=HIQ(D)-Hlength(D),它是信息熵的有效减少量,值越高,说明目标属性IQ在参考属性处损失的信息熵越多,也就是失去的不确定性越多,那么在决策树进行分类的时候,这个参考属性应该越早作为决策的依据属性。
这个例子中如果Gainlength > Gaincolor,说明length比color要对IQ有更大的影响,所以决策树中,要先依据length来进行分类。
在实际应用中,往往引入一个“阈值”,当节点下的任意一分类所占百分比超过这个阈值时,就不再进行分类,以避免产生出过小的没有实际意义分类节点。
ID3算法也存在诸多不足,比如分类偏向于取值数量,只能处理离散数据等等问题。C4.5算法是对ID3的一个改进,但是总体来看,由于需要反复遍历数据,二者都是效率很低的算法。
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》
相关推荐
总的来说,ID3算法是理解和学习决策树算法的一个重要起点,通过它的实现,我们可以了解决策树的基本构造原理和分类过程。在实际应用中,由于ID3对于连续型属性和缺失值的处理较为局限,后续的C4.5和CART算法对其进行...
ID3(Iterative Dichotomiser 3)算法是决策树学习方法的一种,由Ross Quinlan于1986年提出,主要用于分类任务。在本项目中,我们将深入探讨ID3算法的原理以及如何使用C++进行实现。 ID3算法基于信息熵和信息增益来...
### 应用C4.5算法构造客户分类决策树的方法 #### 一、决策树生成的基本过程及相关算法 ##### 1.1 决策树概述 决策树是一种类似流程图的树状结构,在数据挖掘领域中被广泛应用于分类任务。在决策树中,每个内部节点...
关键方法可能包括`buildTree()`用于构造决策树,`splitData()`用于数据划分,以及`evaluateInstance()`用于评估实例并作出预测。 `FormatTrans.java`文件可能是数据预处理部分,负责将原始数据转化为C4.5算法可以...
ID3(Iterative Dichotomiser 3)是决策树学习算法的一种,由Ross Quinlan于1986年提出。它是一种基于信息熵和信息增益来构建决策树的算法,主要用于分类任务。ID3算法的核心思想是通过不断地划分数据集,找到最佳...
准备数据: 树构造算法(这里使用的是ID3算法,因此数值型数据必须离散化。) 分析数据: 可以使用任何方法,构造树完成之后,我们可以将树画出来。 训练算法: 构造树结构 测试算法: 使用习得的决策树执行分类 使用...
### C 实现决策树ID3算法 #### 一、概览 本文档旨在解析一个用C语言实现的决策树ID3算法的代码片段。决策树是一种常用的机器学习方法,广泛应用于分类与回归任务中。ID3(Iterative Dichotomiser 3)是决策树的一种...
一个经典的决策树算法是ID3算法,它通过计算信息增益来选择特征,目标是构建一棵具有最小化熵值(或最大信息增益)的决策树。ID3的一个限制是对特征的限制,它只能应用于那些属性值是名义型的特征。为了克服这一点,...
构造决策树的过程是一个递归的决策过程,通过选择最具分辨力的属性来划分数据集,直到所有子集的数据属于同一类别为止。 #### 1.3 ID3决策树算法模型 ID3算法是决策树算法中的一种经典实现,由Ross Quinlan提出,...
Matlab实现决策树算法,使用ID3_2函数并设计了十指交叉验证,可显示每一次的模型精度。资源提供类一个数据集用于模型训练,将之直接替换为自己的数据即可运行。最终的决策树建立结果以画图的形式表示,并且为每一类...
1986年,J.R.Quinlan提出了ID3算法,该算法基于信息增益原理来构造决策树。在ID3的基础上,Quinlan又提出了C4.5算法,它在很多方面对ID3进行了改进。这些改进包括处理连续属性、防止过拟合以及能够处理缺失值等。 ...
通过阅读和理解这段代码,你可以了解到如何处理数据、计算信息增益并构造决策树的具体步骤。 这个项目对于学习和理解ID3算法及其Java实现非常有帮助。通过运行代码,你可以观察决策树的生成过程,并结合`app.arff`...
"数据挖掘决策树ID3算法优化" 数据挖掘是从大量数据中提取出可信、新颖、有效并能被人理解的模式的高级处理过程。它是一门交叉学科,把人们对数据的应用从低层次的简单查询,提升到从大量数据中提炼有价值的信息,...
具体实现时,可以先将数据集转化为特征向量形式,然后通过遍历数据集、计算信息熵和信息增益,构造决策树。在Java代码中,可以使用`ArrayList`等集合类来存储数据,利用递归或栈等数据结构来实现树的构建。 最后,...
决策树算法构造决策树来发现数据中蕴涵的分类规则.如何构造精度高、规模小的决策树是决策树算法的核心内容。决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般情况下,训练样本...
决策树的构建算法:决策树的构建算法是自顶向下的递归构造决策树。算法的步骤包括:(1)训练数据批处理,(2)选择一个属性作为根结点,(3)对每个可能的值,创建一个子树,(4)递归构造子树。 熵和信息增益:熵...
- `ID3` 类:包含构造决策树的主要逻辑,如`calcEntropy()`(计算熵)、`calcGain()`(计算信息增益)和`buildTree()`(构建决策树)等方法。 **4. 应用场景** ID3算法因其简单易懂、易于实现而被广泛应用于各个...