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. c#窗体虚线图形验证码设计

    /************************窗体验证码背景图形设计及核心代码**********/ using System;using System.Collections.Generic;u ...

  2. 十.oc内存管理

    引用百度百科图 栈(stack)又名堆栈. 栈定义:栈是限定仅在表头进行插入和删除操作的线性表(有序).(又称:后进先出表) (动态)数据展示存储的地方.(举例:升降电梯)特点:先进后出(FILO—F ...

  3. myeclipse中如何导入mysql-connector-java-5.1.8-bin.jar【环境配置和工具使用】

    前提:我建立了一个java project,工程名字为Test,现在需要连接mysql数据库,所以提前从网上将java操作mysql数据库的mysql-connector-java-5.1.8-bin ...

  4. 去除inline-block元素间间距的N种方法

    这篇文章发布于 2012年04月24日,星期二,22:38,归类于 css相关. 阅读 147771 次, 今日 52 次 by zhangxinxu from http://www.zhangxin ...

  5. oracle java SE

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  6. JavaWeb 学习007-4个页面,5条sql语句(添加、查看、修改、删除)2016-12-2

    需要复习的知识: 关联查询 =================================================================================班级模块学 ...

  7. android:ems的作用

    android:ems用来设置EditText或TextView显示的字符宽度. 比如:android:ems="10" 设置TextView或EditText为10个字符的宽度, ...

  8. 九月二十八JS验证

    js表单验证 js可用发来在数据被送往服务器前对HTML表单中的这些输入数据进行验证 被js验证的这些典型的表单数据有: >用户是否已填写表单中的必填项目: >用户输入的邮件地址是否是合法 ...

  9. 第九章 springboot + mybatis + 多数据源 (AOP实现)(转载)

    本编博客转发自:http://www.cnblogs.com/java-zhao/p/5415896.html 1.ShopDao package com.xxx.firstboot.dao; imp ...

  10. 一个无缝滚动的jquery插件

    $.fn.imgscroll = function(o){ var defaults = { speed: 40, amount: 0, width: 1, dir: "left" ...