信息熵、信息增益与信息增益率

信息熵、信息增益与信息增益率

信息熵(Information Entropy)

信息熵是用来评估样本集合的纯度的一个参数,就是说,给出一个样本集合,这个样本集合中的样本可能属于好多不同的类别,也可能只属于一个类别,那么如果属于好多不同的类别的话,我们就说这个样本是不纯的,如果只属于一个类别,那么,我们就说这个样本是纯洁的。
  而信息熵这个东西就是来计算一个样本集合中的数据是纯洁的还是不纯洁的。下面上公式:
   E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D)=-\sum_{k=1}^{\left|y\right|}p_{k}log_{2}p_{k} Ent(D)=k=1ypklog2pk
  下面解释一下公式的意思,其实很好理解,计算一个集合的纯度,就是把集合中每一个类别所占的比例 p k p_k pk(k从1到 ∣ y ∣ \left | y \right | y,其中 ∣ y ∣ \left | y \right | y 表示类别的个数)乘上它的对数,然后加到一起,然后经过计算之后,可以得到一个数据集的信息熵,然后根据信息熵,可以判断这个数据集是否纯粹。信息熵越小的话,表明这个数据集越纯粹。信息熵的最小值为0,此时数据集D中只含有一个类别。

信息增益(Information Gain)

下面来介绍信息增益,所谓的信息增益,是要针对于具体的属性来讲的,比如说,数据集D中含有两个类别,分别是好人和坏人,那么,随便选择一个属性吧,比如说性别,性别这个属性中包含两个值,男人和女人,如果用男人和女人来划分数据集D的话,会得到两个集合,分别是 D m a n D_{man} Dman D w o m a n D_{woman} Dwoman。划分后的两个集合中各自有 好人和坏人,所以可以分别计算划分后两个集合的纯度,计算之后,把这两个集合的信息熵求加权平均 D m a n D E n t ( D m a n ) + D w o m a n D E n t ( D w o m a n ) \frac{D_{man}}{D} Ent(D_{man})+\frac{D_{woman}}{D} Ent(D_{woman}) DDmanEnt(Dman)+DDwomanEnt(Dwoman),跟之前没有划分的时候的信息熵 E n t ( D ) Ent(D) Ent(D)相比较,用后者减去前者,得到的就是属性-性别对样本集D划分所得到的信息增益。可以通俗理解为,信息增益就是纯度提升值,用属性对原数据集进行划分后,得到的信息熵的差就是纯度的提升值。信息增益的公式如下:

G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{\left | D^{v} \right |}{\left | D \right |}Ent(D^{v}) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)  
  先解释一下上式中的参数,D是数据集,a是选择的属性,a中一共有V个取值,用这个V取值去划分数据集D,分别得到数据集 D 1 D_1 D1 D V D_V DV,分别求这V个数据集的信息熵,并将其求加权平均。两者的差得到的就是信息增益。
  那么这个信息增益有什么用呢?有用,可以根据信息增益值的大小来判断是否要用这个属性a去划分数据集D,如果得到的信息增益比较大,那么就说明这个属性是用来划分数据集D比较好的属性,否则则认为该属性不适合用来划分数据集D。这样有助于去构建决策树。
  著名的算法ID3就是采用信息增益来作为判断是否用该属性划分数据集的标准。

信息增益率(Information Gain Ratio)

为什么要提出信息增益率这种评判划分属性的方法?信息增益不是就很好吗?其实不然,用信息增益作为评判划分属性的方法其实是有一定的缺陷的,书上说,信息增益准则对那些属性的取值比较多的属性有所偏好,也就是说,采用信息增益作为判定方法,会倾向于去选择属性取值比较多的属性。那么,选择取值多的属性为什么就不好了呢?举个比较极端的例子,如果将身份证号作为一个属性,那么,其实每个人的身份证号都是不相同的,也就是说,有多少个人,就有多少种取值,它的取值很多吧,让我们继续看,如果用身份证号这个属性去划分原数据集D,那么,原数据集D中有多少个样本,就会被划分为多少个子集,每个子集只有一个人,这种极端情况下,因为一个人只可能属于一种类别,好人,或者坏人,那么此时每个子集的信息熵就是0了,就是说此时每个子集都特别纯。这样的话,会导致信息增益公式的第二项 ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \sum_{v=1}^{V}\frac{\left | D^{v} \right |}{\left | D \right |}Ent(D^{v}) v=1VDDvEnt(Dv)整体为0,这样导致的结果是,信息增益计算出来的特别大,然后决策树会用身份证号这个属性来划分原数据集D,其实这种划分毫无意义。因此,为了改变这种不良偏好带来的不利影响,提出了采用信息增益率作为评判划分属性的方法。
  公式如下:
   G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)
  其中 I V ( a ) IV(a) IV(a)的计算方式如下:
   I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\sum_{v=1}^{V}\frac{\left | D^v \right |}{\left | D \right |}log_2\frac{\left | D^v \right |}{\left | D \right |} IV(a)=v=1VDDvlog2DDv
   I V ( a ) IV(a) IV(a)被称为是的“固有值”,这个 I V ( a ) IV(a) IV(a)的公式是不是很熟悉啊,简直和信息熵的计算公式一毛一样,就是看属性a的纯度,如果a只含有少量的取值的话,那么a的纯度就比较高,否则的话,a的取值越多,a的纯度越低, I V ( a ) IV(a) IV(a)的值也就越大,因此,最后得到的信息增益率就越低。
  采用信息增益率可以解决ID3算法中存在的问题(ID3会对那些属性的取值比较多的属性有所偏好,如西瓜的颜色有10种),因此将采用信息增益率作为判定划分属性好坏的方法称为C4.5。
  需要注意的是,增益率准则对属性取值较少的时候会有偏好,为了解决这个问题,C4.5并不是直接选择增益率最大的属性作为划分属性,而是之前先通过一遍筛选,先把信息增益低于平均水平的属性剔除掉,之后从剩下的属性中选择信息增益率最高的,这样的话,相当于两方面都得到了兼顾。 (结合信息增益与信息增益率使用)

作者:DawnChau
来源:优快云
原文:https://blog.youkuaiyun.com/u012351768/article/details/73469813
版权声明:本文为博主原创文章,转载请附上博文链接!

### 决策树算法中信息熵信息增益的定义、公式及应用 #### 定义概念 信息熵是一种衡量随机变量不确定性的指标。对于一个具有 \( k \) 种可能结果的离散随机变量,其每种结果的发生概率为 \( p_i (i=1,2,\dots,k) \),则信息熵可以表示为: \[ H(X) = -\sum_{i=1}^{k} p_i \log_2(p_i) \] 其中,\( H(X) \) 表示随机变量 \( X \) 的信息熵[^1]。 条件熵是在给定某些条件下,另一个随机变量的信息熵。假设已知随机变量 \( X \),求随机变量 \( Y \) 的条件熵,则条件熵公式为: \[ H(Y|X) = \sum_{i=1}^{n} P(x_i) H(Y|x_i) \] 其中,\( n \) 是随机变量 \( X \) 可能取值的数量,\( P(x_i) \) 是 \( X=x_i \) 发生的概率,\( H(Y|x_i) \) 是在 \( X=x_i \) 条件下的 \( Y \) 的信息熵信息增益用于评估某个特征对分类的作用大小,它是通过比较原始数据集的信息熵和基于某一特征划分后的条件熵来实现的。具体来说,信息增益可以通过以下公式计算得出: \[ IG(A) = H(D) - H(D|A) \] 其中,\( IG(A) \) 表示属性 \( A \) 对于数据集 \( D \) 的信息增益;\( H(D) \) 和 \( H(D|A) \) 分别代表整个数据集的信息熵和在属性 \( A \) 下的数据集条件熵[^1]。 #### 计算方法 为了更清楚地理解如何利用上述公式进行实际操作,下面给出具体的例子说明信息熵信息增益的具体计算过程。 假设有这样一个简单的二元分类问题,共有 8 个样本,分别属于两类 C1 和 C2 ,分布情况如下表所示: | 特征 | 类别C1数量 | 类别C2数量 | |------|------------|------------| | F1 | 3 | 1 | | F2 | 2 | 2 | 首先计算整体数据集的信息熵 \( H(D) \): 总样本数 N = 8,类别 C1 所占比例为 \( p(C1)=4/8=0.5 \), 同理得到 \( p(C2)=0.5 \). 所以, \[ H(D)=-p(C1)\cdot log_2{p(C1)}-p(C2)\cdot log_2{p(C2)} \] \[ H(D)=-0.5\times log_2(0.5)-0.5\times log_2(0.5)=1. \] 接着考虑按特征F1分割的情况: 当选择特征F1时, - 子集中有4个样本属于C1类,占比为 \( p(F1,C1)=3/4 \), - 剩余的一个样本属于C2类,即 \( p(F1,C2)=1/4 \), 那么子集内的信息熵为 \[ H(D|F1) = -(3/4)*log_2{(3/4)}-(1/4)*log_2{(1/4)}, \] 同理可得另一部分(对应F2)的信息熵表达式并加权平均即可获得总的条件熵 \( H(D|A) \)[^1]. 最后代入到信息增益公式里就可以完成相应数值上的运算. ```python import math def entropy(probabilities): """Calculate the information entropy given a list of probabilities.""" return sum(-p * math.log2(p) for p in probabilities if p != 0) # Example calculation based on provided data points probs_C1_F1 = [3 / 4, 1 / 4] entropy_C1_given_F1 = entropy(probs_C1_F1) print(f'Entropy when using feature F1: {entropy_C1_given_F1}') ``` 相关问题
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值