ID3算法(含实例)
主要内容
(1)ID3算法简介
(2)ID3算法节点分裂规则
(3)ID3算法实例
(4)剪枝
-------------------------------------------------------------------------------------------------------------------------
一、简介
1、信息熵Entropy
其中为第i个类别的概率,S是样例集合
信息熵越大,样本越混乱;信息熵越小,样本越纯净。
2、期望信息
设特征A具有v个不同的类别,其样本个数分别记为
E(A)特征A的期望信息,为特征A的第j个类别的数量占特征A所有类别的概率,为特征A下第j个类别中占样例集合S不同类别的概率
3、信息增益
为特征A的信息增益
信息熵越小,信息增益越大,样本越纯净
选择信息增益最大的特征作为分裂标准
二、实例
1、样本(特征必须离散变量,支持多特征、多分类)
1024个样本,4个特征,2个分类
计数 | 年龄 | 收入 | 学生 | 信誉 | 是否购买 |
64 | 青 | 高 | 否 | 良 | 否 |
64 | 青 | 高 | 否 | 优 | 否 |
128 | 中 | 高 | 否 | 良 | 买 |
60 | 老 | 中 | 否 | 良 | 买 |
64 | 老 | 低 | 是 | 良 | 买 |
64 | 老 | 低 | 是 | 优 | 否 |
64 | 中 | 低 | 是 | 优 | 买 |
128 | 青 | 中 | 否 | 良 | 否 |
64 | 青 | 低 | 是 | 良 | 买 |
132 | 老 | 中 | 是 | 良 | 买 |
64 | 青 | 中 | 是 | 优 | 买 |
32 | 中 | 中 | 否 | 优 | 买 |
32 | 中 | 高 | 是 | 良 | 买 |
64 | 老 | 中 | 否 | 优 | 否 |
2、计算信息熵
3、计算特征A的信息熵
假设以年龄为例:
分为青年:384/0.375(样本/概率)、中年:256/0.25(样本/概率)、老年:384/0.375(样本/概率)
以年龄为特征的熵为:
青年:128/256(买/不买),概率为1/3和2/3(买/不买)
中年:256/0(买/不买),概率为1和0(买/不买)
老年:256/128(买/不买),概率为2/3和1/3(买/不买)
故得到以年龄为特征的熵(平均信息期望/条件熵)为
年龄特征的信息增益为:
同理可得
收入:
学生:
信誉:
可以看出,‘年龄’的信息增益最大,因此选择‘年龄’作为节点来划分。
按此方法,直至叶节点为’纯‘的结束。
三、剪枝
树的剪枝包括预剪枝和后剪枝,通过提前停止树的构造进行剪枝的方法称为预剪枝,后剪枝是首先构造完整的决策树,然后把置信度不够节点子树替代为叶子节点的过程。
预剪枝判断停止树的生长可以归纳为以下几种:
1、树的高度限制:设定树的高度最大值,当达到限定值时,停止树的生长;
2、训练样本限制:对一个拥有较少训练样本的节点进行分裂时容易出现过拟合现象,因此设定样本量阀值,当样本量少于阀值时停止生长;
3、系统性能增益:当属性的信息增益小于某个指定的阀值时停止增长。
相对而言预剪枝比较简单,在实际的运用中运用最广的还是后剪枝。
后剪枝算法主要有以下几类:
1、降低错误剪枝REP(Reduced Error Pruning);
2、悲观错误剪枝PER(Pessimistic Error Pruning);
3、基于错误剪枝EBP(Error-Based Pruning);
4、代价-复杂度剪枝CCP(Cost-Complexity Pruning);
5、最小错误剪枝MEP(Minimun Error Pruning)
以上算法的理论介绍详见:
http://wenku.baidu.com/view/415c3cc19ec3d5bbfd0a7464.html?re=view
四、总结
1、ID3算法的流程
(1)自上而下贪婪搜索
(2)遍历所有的属性,按照信息增益最大的属性进行分裂
(3)根据分裂属性划分样本
(4)重复上述流程,直至满足条件结束
2、ID3算法的特点
(1)上述过程可以看出,ID3算法倾向于选择属性值较多的属性,有些时候不能提供有价值的信息
(2)贪婪性以及奥姆剃刀原理(尽量用较少的东西做更多的事)
(3)不适用于连续变量
(4)只能用于分类
注:以上内容属个人理解,学艺不精,请各位大神多多指教
ID3算法(含实例)相关推荐
- 模拟退火算法详细讲解(含实例python代码)
模拟退火算法详细讲解(含实例python代码) (一)模拟退火算法简介 (二)模拟退火算法原理 (三)退火过程中参数控制 (四)算法步骤 (五)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之 ...
- 决策树学习算法 - ID3算法
ID3算法概要: 熵值公式: 举例: 熵值公式用于判断一个样本集是否均匀分布,值的区间在[0,1]内,他有以下特点 1.分布越均匀,值越大 2.如果成单一分布,那么值为0 图例: 故可以推出通式(其中 ...
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- 【Machine Learning in Action --3】决策树ID3算法
1.简单概念描述 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定 ...
- 【Machine Learning】决策树之ID3算法 (2)
决策树之ID3算法 Content 1.ID3概念 2.信息熵 3.信息增益 Information Gain 4. ID3 bias 5. Python算法实现(待定) 一.ID3概念 ID3算法最 ...
- 【机器学习】深刻理解决策树-动手计算ID3算法
一.决策树概述 决策树算法易于理解.可解释性强,是一个非常常见并且优秀的机器学习算法,可分类,也可回归.现在许多最优秀的集成模型,基础也是决策树.因此,决策树系列算法是机器学习绕不过的大山.需要进行 ...
- 【机器学习基础】数学推导+纯Python实现机器学习算法4:决策树之ID3算法
Python机器学习算法实现 Author:louwill 作为机器学习中的一大类模型,树模型一直以来都颇受学界和业界的重视.目前无论是各大比赛各种大杀器的XGBoost.lightgbm还是像随机森 ...
- 决策树-熵计算-ID3算法(转)
今天,我来讲解的是决策树.对于决策树来说,主要有两种算法:ID3算法和C4.5算法.C4.5算法是 对ID3算法的改进.今天主要先讲ID3算法,之后会讲C4.5算法和随机森林等. Contents ...
- python机器学习算法.mobi_机器学习之ID3算法详解及python代码实现
在生活中我们经常会用到决策树算法,最简单的就是二叉树了:相信大家也会又同样的困扰,手机经常收到各种短信,其中不乏很多垃圾短信.此时只要设置这类短信为垃圾短信手机就会自动进行屏蔽.减少被骚扰的次数,同时 ...
- 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...
机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...
最新文章
- ONVIF测试方法及工具
- matlab imcrop 对应python函数_MATLAB车牌识别之7个字符切割浅谈【抽丝剥茧】
- python与办公自动化-用 Python 自动化办公,我与大神之间的差距一下就
- Nboot中nand flash控制器参数TACLS、TWRPH0和TWRPH1的确定(基于K9F1208U0B)
- py-faster-rcnn源码解读系列
- C/Cpp / const 用法
- LC3视角:Kubernetes下日志采集、存储与处理技术实践
- 01-python进阶-拾遗
- GitHub上最火的40个Android开源项目(一)
- clickhouse聚合函数之groupBitmap
- java与自动化的应用实例_自动化测试中java多线程的使用实例
- 开源真实场景图像检测数据集汇总
- 中国农田生产潜力数据集
- 前端操作复制粘贴板(clicpboardData )
- myeclipse当前页面的脚本发生错误问题
- aop:aspectj-autoproxy /的作用
- Vuepress-theme-reco 构建静态网页错误:在格式错误时超出了最大调用堆栈大小
- protobuf篇:介绍、安装、测试
- 用python解矩阵方程_用Python的Numpy求解线性方程组
- Ubuntu 安装 SSH 服务