10_信息熵与交叉熵推导

在这里插入图片描述


博文配套视频课程:24小时实现从零到AI人工智能


信息熵与信息增益

人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量,香农(信息论之父)提出了“信息熵”的概念,信息熵用来描述信源的不确定度,熵在信息论中代表随机变量不确定度的度量。熵越大,数据的不确定性越高,熵越小,数据的不确定性约低

在这里插入图片描述

  1. 当得知一个特征条件之后,减少的信息熵的大小我们称为信息增益 (32支球队如果没有任何信息可能猜32次才猜到)
  2. 信息熵 (推荐)、基尼系数都是用来衡量信息量大小的度量
  3. 同等了数量情况下,概率均等的数据,它的信息熵最大

指数与对数回顾

指数是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数。对数是对求指数的逆运算,正如除法是乘法的倒数,反之亦然。 这意味着一个数字的对数是必须产生另一个固定数字(基数)的指数

import numpy as np
# 指数运算就是幂运算
x = 10**2
print(x)
# 对数是指数的逆运算
print(np.log10(x))
print('-'*100)
# 10为底为常用对数
print(np.log10(10))
# 2为底则为二进制对数
print(np.log2(8))
# 默认是自然对数e
print(np.log(np.e))

计算信息熵

Entropy代表信息熵,i 表示数据总类别数,P(i) 表示类别 i 样本数量占所有样本的比例

在这里插入图片描述

# {1/2 , 1/2} 采用二分法,猜二分类,在样本平均时信息熵为1
H = -(1 / 2 * np.log2(1 / 2) + 1 / 2 * np.log2(1 / 2))
print(H)
# 样本不平均是信息熵会减少
H = -(3/ 4 * np.log2(3 / 4) + 1 / 4 * np.log2(1 / 4))
print(H)
# {1/3,1/3,1/3} ==> 1.5849
H = -(1 / 3 * np.log2(1 / 3) + 1 / 3 * np.log2(1 / 3) + 1 / 3 * np.log2(1 / 3))
print(H)
# {1,0,0}  信息熵为0 则代表100%确定
H = -(1 * np.log2(1 / 1))
print(H)
# 32支球队在夺冠机会均等的情况下, 信息熵为5,也可以理解采用二分法,拆5次可以拆到冠军
H = - (1 / 32 * np.log2(1 / 32)) * 32

计算交叉熵

y_true = [0,0,1]
y_predict = [0.,0.,1]
H = -(y_true * np.log(y_predict))
print(H)

在这里插入图片描述

发布了128 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lsqzedu/article/details/102531762