ID3算法(1)
  1 简述
1.1
    id3是一种基于决策树的分类算法,由J.Ross Quinlan
在1986年开发。id3根据信息增益,运用自顶向下的贪心策略
建立决策树。信息增益用于度量某个属性对样本集合分类的好坏程度。
由于采用了信息增益,id3算法建立的决策树规模比较小,
查询速度快。id3算法的改进是C4.5算法,C4.5算法可以
处理连续数据,采用信息增益率,而不是信息增益。
理解信息增益,需要先看一下信息熵。
1.2 信息熵
    信息熵是随机变量的期望。度量信息的不确定程度。
信息的熵越大,信息就越不容易搞清楚。处理信息就是
为了把信息搞清楚,就是熵减少的过程。
    Entropy(X) = -Sum(p(xi) * log(p(xi))) {i: 0 <= i <= n}
    p(x)是概率密度函数;对数是以2为底;
1.3 信息增益
    用于度量属性A降低样本集合X熵的贡献大小。信息增益
越大,越适于对X分类。
    Gain(A, X) = Entropy(X) - Sum(|Xv| / |X| * Entropy(Xv))  {v: A的所有可能值}
    Xv表示A中所有为v的值;|Xv|表示A中所有为v的值的数量;
2 id3算法流程
    输入:样本集合S,属性集合A
    输出:id3决策树。
    1) 若所有种类的属性都处理完毕,返回;否则执行2)
    2)计算出信息增益最大属性a,把该属性作为一个节点。
        如果仅凭属性a就可以对样本分类,则返回;否则执行3)
    3)对属性a的每个可能的取值v,执行一下操作:
        i.  将所有属性a的值是v的样本作为S的一个子集Sv;
        ii. 生成属性集合AT=A-{a};
        iii.以样本集合Sv和属性集合AT为输入,递归执行id3算法;
3 一个的例子
    3.1
    这个例子来源于Quinlan的论文。
    假设,有种户外活动。该活动能否正常进行与各种天气因素有关。
    不同的天气因素组合会产生两种后果,也就是分成2类:能进行活动或不能。
    我们用P表示该活动可以进行,N表示该活动无法进行。
    下表描述样本集合是不同天气因素对该活动的影响。
                     Attribute                       class
    outlook    temperature    humidity    windy 
    ---------------------------------------------------------
    sunny       hot             high           false       N
    sunny       hot             high           true         N
    overcast   hot             high           false       P
    rain           mild           high           false       P
    rain           cool           normal      false       P
    rain           cool           normal      true         N
    overcast   cool           normal      true         P
    sunn y      mild           high           false       N
    sunny       cool           normal      false       P
    rain           mild           normal      false       P 
    sunny       mild           normal      true         P 
    overcast   mild           high           true         P 
    overcast   hot             normal      false       P 
    rain           mild           high           true        N
    3.2
    该活动无法进行的概率是:5/14
    该活动可以进行的概率是:9/14
    因此样本集合的信息熵是:-5/14log(5/14) - 9/14log(9/14) = 0.940
    3.3
    接下来我们再看属性outlook信息熵的计算:
    outlook为sunny时,
    该活动无法进行的概率是:3/5
    该活动可以进行的概率是:2/5
    因此sunny的信息熵是:-3/5log(3/5) - 2/5log(2/5) = 0.971
    同理可以计算outlook属性取其他值时候的信息熵:
    outlook为overcast时的信息熵:0
    outlook为rain时的信息熵:0.971
    属性outlook的信息增益:gain(outlook) = 0.940 - (5/14*0.971 + 4/14*0 + 5/14*0.971) = 0.246
    相似的方法可以计算其他属性的信息增益:
    gain(temperature) = 0.029
    gain(humidity) = 0.151
    gain(windy) = 0.048
    信息增益最大的属性是outlook。
    3.4
    根据outlook把样本分成3个子集,然后把这3个子集和余下的属性
    作为输入递归执行算法。
原文链接:http://blog.csdn.net/leeshuheng/article/details/7777722
ID3算法(1)的更多相关文章
- 决策树ID3算法的java实现(基本试用所有的ID3)
		
已知:流感训练数据集,预定义两个类别: 求:用ID3算法建立流感的属性描述决策树 流感训练数据集 No. 头痛 肌肉痛 体温 患流感 1 是(1) 是(1) 正常(0) 否(0) 2 是(1) 是(1 ...
 - 数据挖掘之决策树ID3算法(C#实现)
		
决策树是一种非常经典的分类器,它的作用原理有点类似于我们玩的猜谜游戏.比如猜一个动物: 问:这个动物是陆生动物吗? 答:是的. 问:这个动物有鳃吗? 答:没有. 这样的两个问题顺序就有些颠倒,因为一般 ...
 - 决策树 -- ID3算法小结
		
ID3算法(Iterative Dichotomiser 3 迭代二叉树3代),是一个由Ross Quinlan发明的用于决策树的算法:简单理论是越是小型的决策树越优于大的决策树. 算法归 ...
 - 机器学习笔记----- ID3算法的python实战
		
本文申明:本文原创,如有转载请申明.数据代码来自实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. Hell ...
 - 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)
		
1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? ...
 - 决策树笔记:使用ID3算法
		
决策树笔记:使用ID3算法 决策树笔记:使用ID3算法 机器学习 先说一个偶然的想法:同样的一堆节点构成的二叉树,平衡树和非平衡树的区别,可以认为是"是否按照重要度逐渐降低"的顺序 ...
 - ID3算法 决策树的生成(2)
		
# coding:utf-8 import matplotlib.pyplot as plt import numpy as np import pylab def createDataSet(): ...
 - ID3算法 决策树的生成(1)
		
# coding:utf-8 import matplotlib.pyplot as plt import numpy as np import pylab def createDataSet(): ...
 - 决策树的基本ID3算法
		
一 ID3算法的大致思想 基本的ID3算法是通过自顶向下构造决策树来进行学习的.我们首先思考的是树的构造从哪里开始,这就涉及到选择属性进行树的构造了,那么怎样选择属性呢?为了解决这个问题,我们使用统 ...
 - Python实现ID3算法
		
自己用Python写的数据挖掘中的ID3算法,现在觉得Python是实现算法的最好工具: 先贴出ID3算法的介绍地址http://wenku.baidu.com/view/cddddaed0975f4 ...
 
随机推荐
- [权限相关]在PeopleSoft中查找可以使用DataMover的用户
			
DataMover是一个功能非常强大的工具,它的访问权限应该被控制,特别是在PRD环境中.在每个公司,许多用户可能在一段时间内切换部门,角色和职责,所以每隔一段时间就应该检查这些用户的权限,以确认他们 ...
 - Akka(15): 持久化模式:AtLeastOnceDelivery-消息保证送达模式
			
消息保证送达是指消息发送方保证在任何情况下都会至少一次确定的消息送达.AtleastOnceDelivery是一个独立的trait,主要作用是对不确定已送达的消息进行补发,这是一种自动的操作,无需用户 ...
 - 聊天类APP功能测试总结
			
做聊天类的APP 测试已经有一段时间了,也许哪天就不做了,趁今天轻松点,记录下来. 聊天类的APP都差不多,不管是微信,还是米聊,还是QQ,如果抓住了共性,测试的点都差不太多. 我用编程的术语来比方功 ...
 - ASPCMS改造中
			
10月中旬的时候,芹芹大神给我接了个做网站的活,一番商量过后,我以低得说出来丢人TT的价格接了.主要是想借此摸清网站制作的一条龙服务. 目前根据ASPCMS开源管理系统,做了个大致的构架,下面上草图: ...
 - Orchard 学习
			
https://github.com/OrchardCMS/Orchard 源码下载 http://www.orchardch.com/ 中文介绍网站
 - java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
			
这里先写几个大家容易搞混的编码设置代码: 在jsp代码中的头部往往有这两行代码 pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码J ...
 - 【机器学习笔记之一】深入浅出学习K-Means算法
			
摘要:在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 在数据挖掘中,K-Means算法是一种c ...
 - Java String字符串深入详解
			
Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new这种标准的构造对象的方法,如String str = new ...
 - Oracle SQL优化[转]
			
Oracle SQL优化 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...
 - re模块的结果小练习题
			
1.匹配标签 import re ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','<h1& ...