数据挖掘算法——ID3(决策树)
来源:互联网 发布:linux环境安装jmeter 编辑:程序博客网 时间:2024/05/16 16:34
决策树算法:决策树是对数据进行分类,以此达到预测的目的。该决策树方法先根据训练集数据形成决策树,如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到训练集数据中,重复该过程一直到形成正确的决策集。决策树代表着决策集的树形结构。决策树由决策结点、分支和叶子组成。决策树中最上面的结点为根结点,每个分支是一个新的决策结点,或者是树的叶子。每个决策结点代表一个问题或决策,通常 对应于待分类对象的属性。每一个叶子结点代表一种可能的分类结果。沿决策树从上到下遍历的过程中,在每个结点都会遇到一个测试,对每个结点上问题的不同的测试输出导致不同的分支,最后会到达一个叶子结点,这个过程就是利用决策树进行分类的过程,利用若干个变量来判断所属的类别。
ID3 (Iterative Dichotomiser 3) 是由Ross Quinlan提出的分类预测算法;用以给一个数据集创建决策树。该算法是以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。
预备知识
信息的定量描述:衡量信息多少的物理量称为信息量。
- 若概率很大,受信者事先已有所估计,则该消息信息量就很小;
- 若概率很小,受信者感觉很突然,该消息所含信息量就很大。
信息量的定义:若一个消息x出现的概率为p,则这一消息所含的信息量为:
I=−log2p 其中,对数的底大于1。以2为底时,单位为 bit(binary unit,比特)例如:抛一枚均匀硬币,出现正面与反面的信息量是多少?
出现正面与反面的概率均为0. 5,故,I(正)=−log212=1b 。当然,I(反)=−log212=1b 信源含有的信息量是信源发出的所有可能消息的平均不确定性,香农把信源所含有的信息量称为信息熵(entropy)。是指每个属性所含信息量的统计平均值。m种属性的平均信息量为:
H(x)=∑mi=0p(xi)I(xi)=−∑mi=0p(xi)log2p(xi) 例如:抛一枚均匀硬币的信息熵是多少?
H(x)=−∑2i=1p(xi)log2p(xi)=−(0.5log212+0.5log212)=1b
当H(x)=0 意味着数据集X 被完美的分类了(即所有元素都属于同一类别)。ID3会为每一个属性计算信息熵,具有最小信息熵的属性在本次迭代中用来划分数据集X 。条件自信息量:
在事件yj 出现的条件下,随机事件xi 发生的条件概率为p(xi|yj) ,则它的条件自信息量定义为条件概率对数的负值:I(xi|yj)=−log2p(xi|yj) 条件熵
计算当一个特征t不能变化时,系统的信息量是多少。这个信息量其实也有专门的名称,就叫做“条件熵”
当计算条件熵而需要把每一种可能都要固定一下,计算n个值,然后取均值才是条件熵。而取均值是要用每个值出现的概率来算的。
在给定yj 条件下,xi (i=1…n)的条件自信息量为I(xi|yj) ,X 集合的条件熵H(X|yj) 为:H(X|yj)=∑nip(xi|yj)I(xi|yj)
在给定Y (即各个yj )条件下,X 集合的条件熵H(X|Y) 为:H(X|Y)=∑yj∈Yp(yj)H(X|yj) ——-条件熵H(X|Y) 表示已知属性Y 后,X 的不确定度.信息增益(Information Gain)
IG(Y) 是表示集合X 被属性Y 分类之前和之后熵的差异。即:集合X 原来的熵和已知属性Y 之后的熵之差。表示属性Y 被固定前后集合X 的不确定性降低了多少。IG(Y,X)=H(X)−H(X|Y)=H(X)−∑yj∈Yp(yj)H(X|yj)
ID3会为每一个属性计算信息熵,具有最大信息增益的属性在本次迭代中用来划分数据集X 。
信息增益的问题:
信息增益最大的问题还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而无法做“本地”的特征选择(每个类别有自己的特征集合)
关于信息增益可参考此文
算法示例
下面我们以是否打球这个例子看一下ID3算法的计算过程:
从图中我们很容易得到这些信息:
活动进行与否的概率分别为:
活动有两个属性,进行和取消,
天气有三个属性,晴、阴和雨;其在已知天气的情况下活动的条件熵分别为:
由此得到在已知天气的情况下活动的条件熵为:
从而得到天气的信息增益:
同理可得到:
取最大的信息增益来划分,即天气,得到如下决策树:
ID3算法的缺点:
(1)ID3算法往往偏向于选择取值较多的属性,而在很多情况下取值较多的属性并不总是最重要的属性,即按照使熵值最小的原则被ID3算法列为应该首先判断的属性在现实情况中却并不一定非常重要。例如:在银行客户分析中,姓名属性取值多,却不能从中得到任何信息。
(2)ID3算法不能处理具有连续值的属性,也不能处理具有缺失数据的属性。
(3)用信息增益作为选择属性的标准存在一个假设,即训练子集中的正、反例的比例应与实际问题领域中正、反例的比例一致。一般情况很难保证这两者的比例一致,这样计算训练集的信息增益就会存在偏差。
(4)在建造决策树时,每个结点仅含一个属性,是一种单变元的算法,致使生成的决策树结点之间的相关性不够强。虽然在一棵树上连在一起,但联系还是松散的。
(5)ID3算法虽然理论清晰,但计算比较复杂,在学习和训练数据集的过程中机器内存占用率比较大,耗费资源。
(6)当训练数据集加大时,决策树结构会发生变化。
计算过程
ID3(
{
if
if
if
将A中属性之间具有最大
将属性a的值赋给
将分别由对应于
返回一棵树,其根标记为
再分别构造以下树:
}
参考:
https://en.wikipedia.org/wiki/ID3_algorithm
http://wenku.baidu.com/view/7aa9fbd776eeaeaad1f3305d.html
http://blog.csdn.net/lixuemei504/article/details/7278748
http://www.dzsc.com/data/html/2011-8-29/95580.html
- 数据挖掘算法——ID3(决策树)
- 数据挖掘算法-ID3决策树
- 数据挖掘决策树——ID3
- 【数据挖掘】决策树之ID3算法
- 数据挖掘--分类之决策树算法ID3
- 数据挖掘 决策树算法 ID3 通俗演绎
- 学习数据挖掘决策树ID3算法
- ID3—决策树算法
- 数据挖掘之决策树算法ID3算法的相关原理
- 数据挖掘回顾二:分类算法之 决策树 算法 (ID3算法)
- 数据挖掘-决策树ID3分类算法的C++实现
- 数据挖掘-决策树ID3分类算法的C++实现
- 数据挖掘-决策树ID3分类算法的C++实现
- 数据挖掘-决策树ID3分类算法的C++实现
- 数据挖掘中决策树ID3非递归算法
- 数据挖掘-决策树ID3分类算法的C++实现
- 数据挖掘-决策树ID3分类算法的C++实现
- 数据挖掘:id3 算法
- 简单登陆页面的创建(页面跳转.键盘回收.实现换行.清除textField中的文字)
- 关于三星某些系列笔记本电脑无法安装Windows10的原因及解决办法
- 设计模式 迪米特法则
- Sort List
- poj-1860 Currency Exchange
- 数据挖掘算法——ID3(决策树)
- HTML5 respond.js 解决IE6~8的响应式布局问题
- 用中国视角解读早期希腊哲学
- 机器学习算法总结(目录框架)
- HDU 1312 Red and Black【递归】
- java基础-常用API
- 风
- 计算线段的三等分点
- iOS不使用UINavigationController压入新视图