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. 第三章 centos安装git

    yum install git 安装后的默认存放地点/usr/bin/git

  2. iOS系统导航/自绘制导航路线

    系统自带导航 /** 系统自带导航 当前位置导航到目的地 1.根据目的地进行地理编码 2.把当前位置和目的地封装成MKMapItem对象 3.使用 MKMapItem openMapsWithItem ...

  3. Hibernate一对多(注解)

    <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  4. 为何jquery动态添加的input value无法提交到数据库?【坑】

    有两个输入框,我想让第一个输入框失去焦点以后,第二个输入框自动获取第一个输入框的value为默认值,jquery代码如下,可以正常显示,但是用PHP提交数据,并插入数据库的时候确实空值,尚未查找到原因 ...

  5. PHP获取页面执行时间的方法

    一些循环代码,有时候要知道页面执行的时间,可以添加以下几行代码到页面头部和尾部: 头部: <?php $stime=microtime(true); 尾部: $etime=microtime(t ...

  6. Cordova系列(一)

    1.安装 这里推荐用npm安装cordova,至于npm的安装,网上有很多的.打开命令行,输入 npm install -g cordova 这里就安装了好了最新版的cordova,虽然绝大多数会成功 ...

  7. 解决root用户ssh配置无密码登陆/hadoop用户照仿可以实现相同功能:hadoop用户登录并且把命令的所有root换成home/hadoop

    http://inuyasha1027.blog.51cto.com/4003695/1132896/ 主机ip:192.168.163.100(hostname: node0) ssh无密码登陆的远 ...

  8. 关于 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause() 错误

    最近在做项目的时候发现一个如题的控制台报错. 一看右侧的报错文件是undefined 这下苦恼了,定位不到问题所在. 今天解决了这个问题,就来分享一下. 问题的关键所在是在执行了play()方法以后立 ...

  9. 服务器Linux系统安全维护基础知识介绍

    事先规划好Linux操作系统的分区 Linux操作系统的分区规划跟微软操作系统的分区规划不同.后者分区规划对于其性能的影响很小.但是Linux操作系统的分区规划则不同,其对服务器的性能影响很大.其实我 ...

  10. [php-src]扩展中封装业务与 call_user_function 的使用建议

    内容均以php5.6.14为例. 从一个封装 uniqid 的例子来讲. /* {{{ wrapper of uniqid */ PHP_FUNCTION(fox) { // #1. zval *pr ...