决策树(信息熵、信息增溢、GINI)的计算
如何构建决策树,我需要选择什么属性来度量,这里我们需要通过计算才能更好的构建一棵决策树。
【有以下二分类问题训练样本】
outlook | temperat | humidity | windy | play |
sunny | hot | high | FALSE | no |
sunny | hot | high | TRUE | no |
overcast | hot | high | FALSE | yes |
rainy | mild | high | FALSE | yes |
rainy | cool | normal | FALSE | yes |
rainy | cool | normal | TRUE | no |
overcast | cool | normal | TRUE | yes |
sunny | mild | high | FALSE | no |
sunny | cool | normal | FALSE | yes |
rainy | mild | normal | FALSE | yes |
sunny | mild | normal | TRUE | yes |
overcast | mild | high | TRUE | yes |
overcast | hot | normal | FALSE | yes |
rainy | mild | high | TRUE | no |
然后我们将这个表格细分,如下所示
【信息熵的计算】
信息熵:表示信息的不确定度
从给出的数据我们可以看到,这个表格是通过天气、温度、湿度、有风为特征来判断是否去打球。
所以我们根据没有任何天气提示的情况下可以知道这一天打球大的概率为9/14,不打球的概率为5/14.
通过下面信息熵的公式(下面公式中:p(i|t) 代表了节点 t 为分类 i 的概率)
可以知道信息熵为:Entropy(D)=
【信息增溢的计算】
信息增益:信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵。
信息增溢的计算公式:
PS:公式中 D 是父亲节点,Di 是子节点,Gain(D,a)中的 a 作为 D 节点的属性选择。
下面我们来求基于outlook的划分来求Gain(outlook)
从图中我们知道outlook取值为sunny、overcast、rainy的概率分别为:5/14、4/14、5/14
outlook=sunny时,有2/5打球、3/5不打球,故entropy=
0.971
outlook= overcast时,有4个打球,概率为1,故entropy=0
outlook=rainy时,有3/5打球,2/5不打球,故entropy=
0.971
则Entropy(outlook)=5/14*0.971+4/14*0+5/14*0.971=0.693
所以信息增溢Gain(outlook)=Entropy(D)-Entropy(outlook)=0.940-0.693=0.247
同理,按照上面的步骤依次可以求得
Gain(temperature)=0.029 Gain(humidity)=0.152 Gain(windy)=0.048
根据上面的信息熵我们可以得出Gain(outlook) > Gain(humidity) > Gain(windy) > Gain(temperature)
从上面的计算结果中可以看出,信息熵越大,纯度越低。当集合中的所有样本均匀混合时,信息熵最大,纯度最低。
【基尼系数GINI的计算】
GINI 公式:
同样以上面的样本为例,计算步骤如下:
outlook取值为sunny、overcast、rainy的概率分别为:5/14、4/14、5/14
outlook=sunny时,有2/5打球、3/5不打球,故GINI=1-()=0.64
outlook= overcast时,有4个打球,概率为1,故GINI=0
outlook=rainy时,有3/5打球,2/5不打球,故GINI=1-()=0.64
则GINI(outlook)=5/14*0.64+4/14*0+5/14*0.64=0.457
temperature取值为hot、mild、cool的概率分别为:4/14、6/14、4/14
temperature=hot 时,有1/2打球,1/2不打球,故GINI=1-0.5
temperature=mild 时,有2/3打球,1/3不打球,故GINI=
temperature=cool 时,有3/4打球,1/4不打球,故
则GINI(temperature)=4/14*0.5+6/14*0.444+4/14*0.375=0.440
humidty取值为high和normal的概率分别为:1/2、1/2
humidty=high 时,有3/7打球,4/7不打球,故
humidty=normal时,有6/7打球,1/7不打球,故
则GINI(humidty)=1/2*0.500+1/2*0.245=0.373
windy取值为false和true的概率分别为:4/7,3/7
windy=false 时,有3/4打球,1/4不打球,故
windy=true 事,有1/2打球,1/2不打球,故
则GINI(windy)=1/2*0.500+1/2*0.375=0.434
【相关参考资料】
1.决策树:https://www.cnblogs.com/molieren/articles/10664954.html
2.机器学习经典算法(2)——决策树与随机森林:https://www.bilibili.com/video/BV1Ps411V7px?p=3
3.决策树零基础入门教程:https://www.bilibili.com/video/BV1T7411b7DG?from=search&seid=6628949932489280159
4.决策树(信息熵—GINI)计算习题:https://blog.csdn.net/wsp_1138886114/article/details/80955528
决策树(信息熵、信息增溢、GINI)的计算相关推荐
- 决策树信息熵计算_决策树熵|熵计算
决策树信息熵计算 A decision tree is a very important supervised learning technique. It is basically a classi ...
- VS2019 C# MySQL 学生信息增删改查(二、改查(续前节))
VS2019 C# MySQL 学生信息增删改查 六.改 1.在FormXiuGai界面中拖入控件,更改相应的属性,如下图所示. 思路:先查找,再将查找到的数据显示在TextBox上,再进行修改.我这 ...
- 《个人信息保护法》与隐私计算应用场景的合规路径浅析
从<个人信息保护法>看隐私计算的科技向善应用 --关于隐私计算应用场景的合规路径浅析 2021年8月20日,<个人信息保护法>(以下简称<个保法>)经十三届全国人大 ...
- 机器学习_决策树(信息熵,决策树,决策树优化,剪枝)
今天开始学决策树,尽管导师每天催任务,但我还是得把机器学习学完,学懂,现在看西瓜书很有感觉.这个机器学习太好了,感觉学着学着就变聪明了一样,不断地让自己的思维变得更敏捷,所以我爱机器学习. 今天要讲的 ...
- 决策树①——信息熵信息增益基尼系数
本文主要是通过大白话,解释何为 信息,信息熵,信息增益,信息增益率,基尼系数 一.信息(information) 能消除不确定性的内容才能叫信息,而告诉你一个想都不用想的事实,那不叫信息. 比如数据分 ...
- 决策树 信息熵 条件熵 基尼系数 信息增益 信息增益率 CART 随机森林
决策树: 决策树是一种树形结构,树内部每个节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表一个分类类别.通过训练数据构建决策树,可以对未知数据进行分类, 上面的决策树深度depth ...
- 决策树——信息熵,熵增益率,基尼系数的计算说明
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于 ...
- 决策树——信息熵与信息增益
参考:[https://www.cnblogs.com/YouXiangLiThon/p/7214393.html] 1.信息熵.条件熵.信息增益 信息熵(Entropy):度量随机变量Y={c1,c ...
- 决策树-信息熵的数学原理
2018/1/15 信息熵是指一个事件的不确定性,最早接触的时候也是在信息论里面.而从当时课上得内容出发,就是一个通信编码的过程. 但是现在来说,见到的更多的地方是机器学习的部分, 决策树部分,利用信 ...
最新文章
- 2019年上半年收集到的人工智能深度学习方向干货文章
- pycharm导入自定义模块问题
- Java Web学习(六)HttpServletRequest(客户端请求)
- uniapp+typeScript+vue3.0+vite
- sdr 软件_无线电爱好者系列-1.通过SDR获取周围无线电信号及应用
- 2017.4.27 道路游戏 思考记录
- RocketMQ的各种集群模式的搭建和消息可靠性保证和服务可用性描述
- go语言net包rpc远程调用的使用
- 计算机自带的画图软件在哪里,mac画图工具在哪里_mac自带画图工具怎么打开-win7之家...
- ttvnc 服务器 自建,FastVNC(可以自架中心服务端的远程协助工具)
- JavaScript将小写金额转换成大写
- 【原创--学习整理】学习bat和dos的相关资料整理--汇总
- 电脑如何进入bios
- python中next是什么意思_Python代码中next()函数具有哪些功能呢?
- 轻松主义或许是一剂良药!
- 10个简单的hacker加速你在Python中的数据分析
- linux系统中struct timeval结构体、struct timezone结构体以及gettimeofday函数
- windows 快捷键(基本快捷键)
- 什么叫版面_什么叫版面,版心,版式?
- 除了GD!这11个国产品牌也能替代STM32!-道合顺大数据Infinigo
热门文章
- 输出每行坐标的的c语言算法,C语言输出空心菱形的实现
- 台式计算机磁盘视图怎么改,[极速u盘装系统]win7系统分配盘符“因为磁盘管理控制台视图不是...
- DOTNET中GC原理
- PCL库学习笔记(PCL Visualizer)
- Mscomm32使用记录
- html css ios系统字体,让iOS在CSS中选择系统字体Helvetica Neue或San Francisco
- 计算机房按几类防雷,计算机机房防雷方案
- 奥斯卡提名预测:《少年派》有望角逐最佳
- 是男人就撑过20秒的游戏分析+无敌Patch的实现
- suse linux关机命令行,suse linux 关机命令