熵(Entropy)、信息熵增益、信息熵增率和基尼(Gini)指数
文章中的这些概念为衡量特征(属性)选择的方法,特征选择在于选取对训练数据具有分类能力的特征,提高决策树学习的效率,特征选择是决定用哪个特征来划分特征空间。
文章目录
- 信息熵(information entropy)
- 信息增益(information gain)
- 信息增益率
- 基尼指数(Gini index)
信息熵(information entropy)
我们高中时都学习过热力学熵,表示一种物质内部的混乱程度。在构造决策树的过程中引入熵的概念,表示一个集合的纯度,即类别较多,若一次分类完成后,一个集合内的类别较多,则熵值大,不确定性大。
下面是计算集合D的信息熵计算公式:
Ent(D)=−∑k=1npklog2pk\operatorname{Ent}(D)=-\sum_{k=1}^{n} p_{k} \log _{2} p_{k}Ent(D)=−k=1∑npklog2pk
特别地:p=0时,plog2pp\log _{2} pplog2p=0.
其中D表示包含n个类别的样本集,pkp_kpk表示第k类样本在D这个样本集中的比例(即频率)。(一些书中给出的公式中log2\log_{2}log2的位置用的是lnlnln,这两个函数的趋势相同,区别不大,它们在[0,1]的区间内都是负值)
在计算熵值时,大部分情况下用样本类别在数据集中出现的频率表示概率。
公式比较好理解,即 估测一个数据集的熵值,就是用该集合中各个类别的样本出现的概率(近似频率)与该类别的频率取对数相乘,然后求和。(由于该频率大于零小于1,取对数,即log2\log_{2}log2在[0,1]的区间内都是负值,所以添加负号让结果为正)
信息增益(information gain)
信息增益一般用来比较对于一个集合进行一次类别划分后熵值的变化情况,同时也衡量了本次划分的效果。划分前集合的熵值比较好计算,而经过一次划分后,划分后的两个集合应该怎样衡量它的熵值呢?
举例:
划分前:
Ent(D)=−(48100∗log248100+52100∗log252100)Ent(D)=-(\frac{48}{100}*\log_{2}{\frac{48}{100}+\frac{52}{100}*\log_{2}{\frac{52}{100}}})Ent(D)=−(10048∗log210048+10052∗log210052)
划分后:
Ent(D′)=[−70100∗(4070∗log24070+3070∗log23070)]+[−30100(830∗log2830+2230∗log22230)]Ent(D^{'})=[-\frac{70}{100}*(\frac{40}{70}*\log_{2}{\frac{40}{70}+\frac{30}{70}*\log_{2}{\frac{30}{70}}})]+[-\frac{30}{100}(\frac{8}{30}*\log_{2}{\frac{8}{30}+\frac{22}{30}*\log_{2}{\frac{22}{30}}})]Ent(D′)=[−10070∗(7040∗log27040+7030∗log27030)]+[−10030(308∗log2308+3022∗log23022)]
从上面的计算方法可以看出:
划分后D′=∑i=1vDi,i={1,2,3,4...v},vD^{'}=\sum_{i=1}^{v}D_i,i=\{1,2,3,4...v\},vD′=∑i=1vDi,i={1,2,3,4...v},v表示划分后集合的个数(实际划分时,一般不会是两个类,上述例子是一个二分类),D′D^{'}D′的计算是将根据属性划分成的各个数据集的熵值相加之和,不同的是需要在划分后的集合熵值前乘上一个权重,这个权重其实是划分后集合在原来集合D的占比,即DiD\frac{D_i}{D}DDi。
信息增益则是用DDD的熵值减去D′D^{'}D′的熵值:
即以aaa属性对集合DDD进行划分:Gain(D,a)=Ent(D)−Ent(D′)=Ent(D)−∑i=1v∣Di∣∣D∣Ent(Di),Gain(D,a)=Ent(D)-Ent(D^{'})=\operatorname{Ent}(D)-\sum_{i=1}^{v} \frac{\left|D_{i}\right|}{|D|} \operatorname{Ent}\left(D_{i}\right),Gain(D,a)=Ent(D)−Ent(D′)=Ent(D)−i=1∑v∣D∣∣Di∣Ent(Di),
信息增益率
信息增益越大,则以a属性来划分所获得的纯度提升越高。(ID3算法基于信息增益)
但是在有些情况下,信息增益达到最大时,划分的效果不是很好,决策树的泛化效果差。
例如:
假设上面例子中每个西瓜都有唯一的编号[1,100],并且对应有每个编号的瓜是好瓜还是坏瓜,那么按照西瓜的编号这种属性来划分西瓜,那么将会出现100组。而此时每组的p=0或1,所以plog2p=0\\p=0或1,所以p\log_{2}{p}=0p=0或1,所以plog2p=0,则按此情况分类后的熵值为0,信息增益最大。但是,显然这种划分不合理,不具备泛化能力。那么接下来引入一个新的概念:信息增益率(C4.5中使用该概念),公式如下:
Gainratio(D,a)=Gain(D,a)IV(a)Gain\ _ratio(D, a)=\frac{\operatorname{Gain}(D, a)}{\operatorname{IV}(a)} Gain ratio(D,a)=IV(a)Gain(D,a)
其中:
IV(a)=−∑i=1v∣Di∣∣D∣log2∣Di∣∣D∣,Di表示以a属性划分后第i个集合中样本的个数,v表示划分后集合的数目\mathrm{IV}(a)=-\sum_{i=1}^{v} \frac{\left|D_{i}\right|}{|D|} \log _{2} \frac{\left|D_{i}\right|}{|D|},D_i表示以a属性划分后第i个集合中样本的个数,v表示划分后集合的数目 IV(a)=−i=1∑v∣D∣∣Di∣log2∣D∣∣Di∣,Di表示以a属性划分后第i个集合中样本的个数,v表示划分后集合的数目
信息增益对可取值数目较多的属性有所偏好,增益率则是为了降低这种偏好,是对可取值数目较少的属性有所偏好,运用增益率并不是直接选择增益率最大的候选划分属性,而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼指数(Gini index)
衡量划分后集合的纯度还有另一种常用的方法,那就是基尼指数,它在CART(classification and Regression)决策树中使用用来划分属性。
基尼值表示从数据集中随意抽取两个样本,其类别标记不一致的概率。
基尼值计算方法如下:
Gini(D)=∑k=1∣Y∣∑k′≠kpkpk′=∑k=1∣y∣pk(1−pk)=1−∑k=1∣Y∣pk2\begin{aligned} \operatorname{Gini}(D) &=\sum_{k=1}^{|\mathcal{Y}|} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}} \\ &=\sum_{k=1}^{|y|} p_{k}\left(1-p_{k}\right)\\&=1-\sum_{k=1}^{|\mathcal{Y}|} p_{k}^{2} \end{aligned} Gini(D)=k=1∑∣Y∣k′̸=k∑pkpk′=k=1∑∣y∣pk(1−pk)=1−k=1∑∣Y∣pk2
∣y∣|y|∣y∣表示当前集合中的类别数目。pkp_kpk是该类在该集合中的比例。
Gini(D)Gini(D)Gini(D)越小,数据集D的纯度越高
类似与熵,通过a属性划分后DvD_vDv个数据集合的基尼指数计算方法如下:
Gini(D,a)=∑v=1V∣Dv∣∣D∣Gini(Dv)Gini(D, a)=\sum_{v=1}^{V} \frac{\left|D_{v}\right|}{|D|} \operatorname{Gini}\left(D_{v}\right) Gini(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
即最优划分属性a
上面所说的信息增益、增益率、基尼指数等都是用于决策树划分(即选择最优结点)的方法。
Gini 指数的计算不需要对数运算,更加高效;
Gini 指数更偏向于连续属性,熵更偏向于离散属性。
熵(Entropy)、信息熵增益、信息熵增率和基尼(Gini)指数相关推荐
- 决策树(信息熵、增益率、基尼指数)
目录 前言 一.决策树是什么? 二.实验过程 1.选择数据集中各个决策属性的优先级 1.1信息熵 1.2增益率 1.3基尼指数 2.决策树的构造 2.1创建决策树: 2.2准备数据: 2.3.读取和保 ...
- AI基础:信息熵、信息增益、信息增益率、基尼指数
给实习生聊到决策树.GBDT,有几个概念这里再用易懂的方式解释下 文章目录 信息熵 条件熵 信息增益 信息增益率 基尼指数 信息熵是决策树的基础 信息增益-ID3算法构建决策树 信息增益率-C4.5算 ...
- 【机器学习】采用信息增益、信息增益率、基尼指数来建造决策树。
目录 一.创建数据集 二.构造决策树(诊断是否复发乳腺癌) 1.信息增益生成决策树 (ID3算法) 信息熵 信息增益(ID3算法) 2.信息增益率决策树(C4.5) 3.基尼指数(CART算法 - 分 ...
- 12_信息熵,信息熵公式,信息增益,决策树、常见决策树使用的算法、决策树的流程、决策树API、决策树案例、随机森林、随机森林的构建过程、随机森林API、随机森林的优缺点、随机森林案例
1 信息熵 以下来自:https://www.zhihu.com/question/22178202/answer/161732605 1.2 信息熵的公式 先抛出信息熵公式如下: 1.2 信息熵 信 ...
- 机器学习基础(五十)—— Gini Impurity(基尼不纯度)与香浓熵(Shannon Entropy))
基尼不纯度/香浓熵:衡量集合的无序程度: 基尼不纯度 基尼不纯度:将来自集合的某种结果随机应用于某一数据项的预期误差率. IG(f)=∑i=1mfi(1−fi)=∑i=1mfi−∑i=1mf2i=1− ...
- 通俗讲清楚为什么使用信息熵增益比而不是信息熵增益?
来举个简单的例子: 数据集D(出去玩是标签) A代表属性,A=心情.天气 心情 天气 出去玩 好 晴朗 玩 不好 下雨 不玩 不好 刮风 不玩 好了 ,现在建立决策树,根节点是啥? 第一种方式(信息熵 ...
- 机器学习:信息熵,基尼系数,条件熵,条件基尼系数,信息增益,信息增益比,基尼增益,决策树代码实现(一)
文章目录 初始化,涉及到使用的变量: 信息熵 定义公式,经验公式 代码: 基尼系数 定义公式,经验公式 代码: 条件熵,条件基尼系数 条件熵定义公式,经验公式 条件基尼系数定义公式,经验公式 代码: ...
- 决策树(信息熵、信息增溢、GINI)的计算
如何构建决策树,我需要选择什么属性来度量,这里我们需要通过计算才能更好的构建一棵决策树. [有以下二分类问题训练样本] outlook temperat humidity windy play sun ...
- 信息熵(entropy)以及图像信息熵的理解
关于信息熵,参考以下博文内容进行了理解: https://blog.csdn.net/saltriver/article/details/53056816 https://y1ran.blog.csd ...
最新文章
- 淘宝获取单笔订单信息服务端调用API及流程
- Spring事务管理3----声明式事务管理(1)
- hadoop三个配置文件的参数含义说明
- rails_Rails应用程序必备的宝石
- 信安教程第二版-第25章移动应用安全需求分析与安全保护工程
- 【6.13-6.27推荐享大礼】华为云·云享专家推荐有礼活动火热进行中……
- 手机上有没有学python的软件-有哪些可以在手机上敲Python代码的App
- 安装wordpress时候报错:Parse error: syntax error, unexpected '.', expecting '' or variable (T_VARIABLE)
- 三维重建笔记_SFM(Structure from Motion)
- Attempt to invoke virtual method 'void android.widget.CompoundButton.setChecked(boolean)' on a null
- 计算机音乐转MP3,怎么把歌曲转换成mp3格式_教你把歌曲转换成mp3格式的方法
- ghost u盘 linux,用U盘启动G4L备份还原linux系统用Ghost备份Windows操作系统
- 利用googlemap查询经纬度
- empty怎么发音_empty怎么读?empty是什么意思?
- 登录邮箱显示imap服务器错误,qq邮箱登陆不了显示imap服务器关闭怎么办
- C语言解数独(含源码) 2020/8/19
- 命令行里打 cd 简直是浪费生命
- linux crontab清理脚本,crontab定时清理日志
- 苹果的移动设备上跑flash
- qpython3.0.0_QPython脚本引擎
热门文章
- 海康、大华、星邦网络摄像头的 RTSP协议 地址与格式
- c语言等要空心梯形代码,C语言空心菱形 *号打印图形
- Springboot+vue 体质测试数据分析#毕业设计
- android Room数据库了解
- iOS15 WebSocket断连问题
- 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输(转载)
- 如何挑选笔记本电脑?
- HDFS FoldedTreeSet的引入以及FBR优化处理
- sublimt 安装插件
- 【原创】微星 Dragon Center 自动下载的 cFosspeed 造成 VMware WorkStation 在桥接模式下主机与虚拟机互相 ping 不通