信息熵等介绍

李宏毅打卡第七次

信息量计算,原理

首先我们要知道什么是信息量

信息量

是一个用来描述东西包含的信息的多寡,越是确定的信息,信息量就越少。

信息熵

熵 (entropy) 这一词最初来源于热力学,是一种描述物体混乱程度的度量。宇宙间的物体总是趋向于熵增加的。也就是趋向于更为混乱的成都。

接下来我们就引入信息熵,也就是常说的香农熵。

“信息熵”(information entropy)

是度量样本集合纯度的最常用的一种指标。

假设当样本前集合D中第k类样本所占的比例为 p k p_k pk(k = 1,2,3……,|y|),则D的信息熵定义为:

E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D) = - \sum_{k=1}^{|y|}p_klog_2p_k Ent(D)=k=1ypklog2pk

证明 0 ⩽ H ( p ) ⩽ l o g n 0 \leqslant H(p) \leqslant logn 0H(p)logn

在这里插入图片描述

联合概率,边缘概率

本来想在课本上找到解释的,但是好像没有找到我需要的,我只能自己解释一波。

我们一般知道对于某件事情的概率标记为P(X),这意味着这是事件X发生的概率大小,而联合概率就是对于事件X,Y它们发生的概率为P(X,Y),特别的,如果X和Y是独立的,那么P(X,Y) = P(X) * P(Y)。

然后什么是边缘概率呢?我们由上面知道了联合概率,那么边缘概率就是我们不管某一个变量算出来的概率,比如我们不关注X算出来的概率P(X,Y)就是Y的边缘概率,而这个时候P(X,Y1) = P(X1,Y1) + P(X2,Y2) …… P(XN,Y1)(其实写成积分形式的概率密度函数似乎更好些)

联合熵,条件熵,条件熵公式推导

联合熵指的是:对于服从联合分布P(X,Y)的一堆离散变量(X,Y),其联合熵表示为: H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y P ( x , y ) l o g 2 P ( x , y ) H(X,Y) = -\sum_{x \in X} \sum_{y \in Y} P(x,y)log_2P(x,y) H(X,Y)=xXyYP(x,y)log2P(x,y)

条件熵指的是:当前有联合概率分布为P(X,Y),条件熵H(Y|X)指的是在X确定的条件下,随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望,也就是:
H ( Y ∣ X ) = ∑ i = 1 m p i H ( Y ∣ X = x i ) H(Y|X) = \sum_{i=1}^{m}p_iH(Y|X = x_i) H(YX)=i=1mpiH(YX=xi)

对于条件熵公式推导:
在这里插入图片描述

互信息,互信息公式推导

互信息指的是两个随机变量x,y的联合分布乘以独立分布,是用来两个随机变量的“相关性”,公式如下:

I ( X , Y ) = ∑ x y P ( x , y ) l o g 2 P ( x , y ) P ( x ) P ( y ) I(X,Y) = \sum_{xy}P(x,y)log_2{\frac{P(x,y)}{P(x)P(y)}} I(X,Y)=xyP(x,y)log2P(x)P(y)P(x,y)

定义式的推导如图:

![](3.jpg)
## 相对熵,交叉熵

如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度来衡量这两个分布的差异,具体做法是P(X),Q(X)的比值取对数之后,在P(X)的概率分布上求期望:

D ( P ∣ Q ) = ∑ x P ( x ) l o g 2 P ( x ) Q ( x ) D(P|Q) = \sum_x P(x)log2 {\frac{P(x)}{Q(x)}} D(PQ)=xP(x)log2Q(x)P(x)

相对熵可以度量两个随机变量的“距离”

交叉熵:

D ( P ∣ Q ) = ∑ x P ( x ) l o g 2 P ( x ) Q ( x ) = − H ( P ) + ( − ∑ x P ( x ) l o g 2 Q ( x ) ) D(P|Q) = \sum_x P(x)log2 {\frac{P(x)}{Q(x)}} = -H(P) + (-\sum_x P(x)log_2 Q(x)) D(PQ)=xP(x)log2Q(x)P(x)=H(P)+(xP(x)log2Q(x))

前一部分是p的熵,后一部分就是交叉熵

回顾LR中的交叉熵

其中交叉熵的部分计算为:

L ( θ ) = ∑ i = 1 m ( − y i l o g 2 h θ ( x i ) + ( 1 − y i ) ( 1 − l o g 2 h θ ( x i ) ) L(θ) = \sum_{i=1}^m (-y^i log_2 {h_θ(x^i)+ (1 - y^i)(1 - log_2 {h_θ(x^i)})} L(θ)=i=1m(yilog2hθ(xi)+(1yi)(1log2hθ(xi))

用来度量两个分布之间的差异成都。

计算给定数据集中的香农熵

import math

def get_data(name):
    with open(name,"r") as f:
        data = f.readlines()
    length = 0
    for i in range(len(data)):
        data[i] = data[i].strip()
        length += len(data[i])
    return data,length

if __name__ == '__main__':
    name = "watermelon_3a.csv"
    data , length = get_data(name)
    all = {}
    for i in data:
        for j in i:
            if not j in all.keys():
                all[j] = 0
            else:
                all[j] += 1
    Ent = 0
    for i in all.keys():
        if all[i]/length == 0:
            Ent += 0
        else:
            Ent += -all[i]/length * math.log(all[i]/length) / math.log(2)
    print(Ent)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值