ID3算法(Iterative Dichotomiser 3 迭代二叉树3代),是一个由Ross Quinlan发明的用于决策树的算法;简单理论是越是小型的决策树越优于大的决策树。
算法归纳:
1、使用所有没有使用的属性并计算与之相关的样本熵值;
2、选取其中熵值最小的属性
3、生成包含该属性的节点
4、使用新的分支表继续前面步骤
 
ID3算法以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类;所以归根结底,是为了从一堆数据中生成决策树而采取的一种归纳方式;
 
具体介绍:
1、信息熵:熵的概念主要指信息的混乱程度,变量的不确定性越大,熵的值越大;
或者这样理解:假如事件A的全概率划分是(A1, A2, A3, … , An),每部分发生的概率是(P1, P2, P3, … , Pn),那么信息熵计算公式可如下表示
       Info(A) = Entropy(p1, p2, … , pn) = -p1 * log2(p1) - p2 * log2(p2)  - … - pn * log2(pn);
 
2、信息增益:信息增益指划分前后熵的变化;
或者这样理解:在某个案例中,类S的属性值A的信息增益 = 类的信息熵Info(S) - 该属性的信息熵Info(A);
 
3、一个案例中总会有一个类导向,也可以理解为结果,而产生结果统计来的信息可能会有多个相关属性,当我们使用一次信息增益计算,并在这多个属性的信息增益中得到了某个属性X的信息增益为最大值时,实际上也是选择了决策树中从根节点出发的第一层分支的依据;找到第一个分类节点后,如果这时X有三个分支x1,x2,x3,我们下一次的计算,其实就是把原表,根据X的三种情况分为了三张表,再重复计算信息增益,就可以得到整个决策树;
 
示例:http://www.cnblogs.com/zhangchaoyang/articles/2196631.html
 
优缺点:
优点:理论清晰,方法简单;
缺点:支队比较小的数据集有效,且对噪声比较敏感,当训练数据集加大时,决策树可能会随之改变;
 
 
我的理解:
整个计算其实并不复杂,有一点需要注意的是在一算整体表的某个属性A的熵时,如果A有三个取值,a1、a2、a3;A的熵其实 等于 a1出现的概率 乘 a1为独立表时该类的熵 加上 同理a2 加上 同理a3 这个计算的才是A的熵
 
 
相关:
奥卡姆剃刀:“切勿浪费较多东西,去做’用较少的东西,同样可以做好的事情’。”,即,如果同一个问题有许多种理论,每一种都能够做出同样准确的预言,那么应该挑选其中使用的嘉定最少的那一个。尽管越复杂的方法通常能做出越好的语言,但是在不考虑语言能力的情况下,前提假设越少越好。所罗门诺夫的归纳推理理论是奥卡姆剃刀的数学公式化:在所有能够完美描述已有观测的可计算理论中,较短的可计算理论在孤寂下一次观测结果的概率时具有较大权重。
 
课外:ID3也是一种metadata容器的简称,多用于MP3格式的音频文件中,他可以将相关的曲名、演唱者、转机、音轨数等信息存储在MP3文件中。ID3一般位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息被称为ID3信息,ID3信息又分为两个版本。v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上个区信息。v2版一般位于mp3开头,可以存储歌词,该专辑的图片等大容量的信息;

决策树 -- ID3算法小结的更多相关文章

  1. 02-21 决策树ID3算法

    目录 决策树ID3算法 一.决策树ID3算法学习目标 二.决策树引入 三.决策树ID3算法详解 3.1 if-else和决策树 3.2 信息增益 四.决策树ID3算法流程 4.1 输入 4.2 输出 ...

  2. 数据挖掘之决策树ID3算法(C#实现)

    决策树是一种非常经典的分类器,它的作用原理有点类似于我们玩的猜谜游戏.比如猜一个动物: 问:这个动物是陆生动物吗? 答:是的. 问:这个动物有鳃吗? 答:没有. 这样的两个问题顺序就有些颠倒,因为一般 ...

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

    ID3分类算法的编码实现 <?php /* *决策树ID3算法(分类算法的实现) */ /* *求信息增益Grain(S1,S2) */ //-------------------------- ...

  4. 决策树---ID3算法(介绍及Python实现)

    决策树---ID3算法   决策树: 以天气数据库的训练数据为例. Outlook Temperature Humidity Windy PlayGolf? sunny 85 85 FALSE no ...

  5. 机器学习之决策树(ID3)算法与Python实现

    机器学习之决策树(ID3)算法与Python实现 机器学习中,决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每 ...

  6. 决策树ID3算法的java实现(基本试用所有的ID3)

    已知:流感训练数据集,预定义两个类别: 求:用ID3算法建立流感的属性描述决策树 流感训练数据集 No. 头痛 肌肉痛 体温 患流感 1 是(1) 是(1) 正常(0) 否(0) 2 是(1) 是(1 ...

  7. 【Machine Learning in Action --3】决策树ID3算法

    1.简单概念描述 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定 ...

  8. 决策树ID3算法的java实现

    决策树的分类过程和人的决策过程比较相似,就是先挑“权重”最大的那个考虑,然后再往下细分.比如你去看医生,症状是流鼻涕,咳嗽等,那么医生就会根据你的流鼻涕这个权重最大的症状先认为你是感冒,接着再根据你咳 ...

  9. 决策树ID3算法

    决策树 (Decision Tree)是在已知各种情况发生概率的基础上,通过构成 决策树 来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法 ...

随机推荐

  1. Spring MVC CORS support

    使用详见: https://spring.io/blog/2015/06/08/cors-support-in-spring-framework 简单用法,在Controller 方法上加 @Cros ...

  2. php开发环境搭建——laravel框架,apache服务器,git版本控制

    本文主要阐述做项目前的开发环境安装——后端为php,前端采用grunt进行自动化构建.具体介绍了windows平台下采用apache运行php的环境搭建,以及git工具安装.写得有点粗糙,但过程完整, ...

  3. hibernateTemplate中常用查询方法的使用(原文地址: http://dongruan00.iteye.com/blog/1772311)

    一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有Use ...

  4. 實際案例: 獲取臨時票証 (JsApi Ticket)

    專案中選用大名鼎鼎的 Senparc 微信開發套件 獲取臨時票證處理常式的程式碼 (GetgVXinInfo.ashx) using Senparc.Weixin; using Senparc.Wei ...

  5. 用grunt进行前端工程化之路

    我们的项目wecash4.0的前端构建考虑过用fis和grunt. 目录: 前期调研:fis vs grunt vs gulp? 一.安装grunt和项目. fis是百度fex研发的构建工具,非常方便 ...

  6. get_object_vars($var) vs array($var)

    get_object_vars(\(var) vs array(\)var) test case class Test { public function actionGetObjectVarsVsA ...

  7. sql学习

    1.改变表的某一字段的长度: alter table tt   modify a char(2000); 2.不想打开表就查看某一字段的长度可用下面的方法: select length(a),leng ...

  8. jquery easyui tree dialog

    <script type="text/javascript" src="<%=request.getContextPath()%>/include/ja ...

  9. oracle创建用户并导入dmp文件

    SQL命令行执行以下命令:SQL> conn sys/111111 as sysdba; SQL> CREATE USER TEST11 IDENTIFIED BY "11111 ...

  10. mysql用户的创建

    MySQL是采用c/s方式的,需要客户端登录服务器,那么可以登录账号叫做用户,这些用户的信息都存储在mysql数据库(mysql安装时默认有的一个数据库)中的user表中, 比如用户的名称,用户的密码 ...