信息熵、条件熵


1  信息熵以及引出条件熵


我们首先知道信息熵是考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。公式如下:


我们的条件熵的定义是:定义为X给定条件下,Y的条件概率分布的熵对X的数学期望


这个还是比较抽象,下面我们解释一下:


设有随机变量(X,Y),其联合概率分布为 




条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。


随机变量X给定的条件下随机变量Y的条件熵H(Y|X)

2  公式


下面推导一下条件熵的公式:




3  注意



注意,这个条件熵,不是指在给定某个数(某个变量为某个值)的情况下,另一个变量的熵是多少,变量的不确定性是多少?而是期望!


因为条件熵中X也是一个变量,意思是在一个变量X的条件下(变量X的每个值都会取),另一个变量Y熵对X的期望


这是最容易错的!


4  例子


下面通过例子来解释一下:




假如我们有上面数据:


设随机变量Y={嫁,不嫁}


我们可以统计出,嫁的个数为6/12 = 1/2


不嫁的个数为6/12 = 1/2


那么Y的熵,根据熵的公式来算,可以得到H(Y) =  -1/2log1/2 -1/2log1/2


为了引出条件熵,我们现在还有一个变量X,代表长相是帅还是帅,当长相是不帅的时候,统计如下红色所示:




可以得出,当已知不帅的条件下,满足条件的只有4个数据了,这四个数据中,不嫁的个数为1个,占1/4


嫁的个数为3个,占3/4


那么此时的H(Y|X = 不帅) = -1/4log1/4-3/4log3/4


p(X = 不帅) = 4/12 = 1/3


同理我们可以得到:

当已知帅的条件下,满足条件的有8个数据了,这八个数据中,不嫁的个数为5个,占5/8


嫁的个数为3个,占3/8


那么此时的H(Y|X = 帅) = -5/8log5/8-3/8log3/8


p(X = 帅) = 8/12 = 2/3


5  计算结果


有了上面的铺垫之后,我们终于可以计算我们的条件熵了,我们现在需要求:


H(Y|X = 长相)


也就是说,我们想要求出当已知长相的条件下的条件熵。


根据公式我们可以知道,长相可以取帅与不帅俩种


条件熵是另一个变量Y熵对X(条件)的期望。

公式为:




H(Y|X=长相) = p(X =帅)*H(Y|X=帅)+p(X =不帅)*H(Y|X=不帅)


然后将上面已经求得的答案带入即可求出条件熵!


这里比较容易错误就是忽略了X也是可以取多个值,然后对其求期望!!


6  总结



其实条件熵意思是按一个新的变量的每个值对原变量进行分类,比如上面这个题把嫁与不嫁按帅,不帅分成了俩类


然后在每一个小类里面,都计算一个小熵,然后每一个小熵乘以各个类别的概率,然后求和。


我们用另一个变量对原变量分类后,原变量的不确定性就会减小了,因为新增了Y的信息,可以感受一下。不确定程度减少了多少就是信息的增益。

### 决策树算法中的信息熵条件熵 #### 信息熵的定义及计算方法 信息熵是对数据集不确定性的一种度量方式。在一个给定的数据集中,如果样本分布越均匀,则其不确定性越高;反之,若某一类别的概率接近于1,则不确定性较低。对于具有 \( n \) 种可能取值的概率分布 \( P(X=x_i)=p_i (i=1,2,...,n) \),信息熵可以表示为: \[ H(X) = -\sum_{i=1}^{n}{p_i \log_2{p_i}} \] 这里,\( p_i \) 表示第 \( i \) 类别的概率[^1]。 例如,在一个简单的二分类问题中,假设正类的比例为 \( p \),负类的比例则为 \( 1-p \),那么该数据集的信息熵可由下式给出: \[ H(p) = -(p \cdot \log_2{p}) - ((1-p)\cdot \log_2{(1-p)}) \] 此公式用于衡量当前数据集的整体混乱程度或纯度[^3]。 #### 条件熵的定义及计算方法 条件熵用来描述当已知某个特征条件下目标变量仍然存在的不确定性的大小。设离散随机变量 \( X \) 和 \( Y \),其中 \( X \) 是输入特征集合,而 \( Y \) 则为目标标签集合。条件熵被定义如下: \[ H(Y|X) = \sum_{x \in Values(X)}P(x) H(Y|x) \] 具体来说,这代表了在知道特定属性值的情况下,剩余平均所需额外信息来完全确定输出的结果[^2]。 为了更直观地理解这一点,考虑这样一个场景:“买电脑”的实例中有三个因素影响购买决定—年龄、收入水平以及是否有学生身份。假如我们现在关注的是“年龄”,我们可以分别计算不同年龄段人群对应的子集上的信息熵,并加权求和得到整个划分后的总条件熵。 以下是基于上述理论的一个Python实现片段展示如何手动计算这些值: ```python import numpy as np def entropy(labels): """ Calculate the Shannon Entropy of a given set """ value, counts = np.unique(labels, return_counts=True) probs = counts / len(labels) return sum(-p * np.log2(p) for p in probs) def conditional_entropy(data, feature_index, target_column=-1): """ Compute Conditional Entropy based on one specific attribute""" total_instances = data.shape[0] unique_values, count_per_value = np.unique( data[:,feature_index],return_counts=True) weighted_sum_of_entropies = 0 for val,cnt in zip(unique_values,count_per_value): subset_indices = np.where(data[:,feature_index]==val)[0] sub_labels = data[subset_indices,target_column] prob_val = cnt/total_instances ent_sub = entropy(sub_labels) weighted_sum_of_entropies +=prob_val*ent_sub return weighted_sum_of_entropies ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值