说到熵之前,先了解下什么是信息量。当一个事件发生的概率极低但是发生了,说明信息量比较大,且信息量应该是个正数,基于这样的定义,信息量的公式如下:

h(x)=log2p(x)h(x)=-\log _{2} p(x)

将这个式子结合函数图像可以知道,概率 p 越接近 1 ,说明发生概率大,对应的信息量比较小。从函数图像也能看出 h(x) 也是趋近于0的,相反,如果 p 接近于0,那么 h(x) 将会是一个很大的数值。

熵表示随机变量的不确定程度,假设一个事件有多种可能的结果,用 X 表示该事件,用 p 表示各个结果的概率:

P(X=xi)=pi,i=1,2,,nP\left(X=x_{i}\right)=p_{i}, \quad i=1,2, \cdots, n

则随机变量 X 的熵的定义为:

H(X)=i=1npilogpiH(X)=-\sum_{i=1}^{n} p_{i} \log p_{i}

上述公式有如下约定:

  1. 通常对数的底为2

  2. 若 p 等于0,那么定义 0log0 = 0

由定义知,熵的取值只与 X 各个类别的分布有关,与其取值无关,因此定义式也写作:

H(p)=i=1npilogpiH(p)=-\sum_{i=1}^{n} p_{i} \log p_{i}

可以理解为熵是事件 X 所有不同结果带来的信息量的期望。如果一个事件只有一种结果,那么 p 等于1,此时的熵就等于 0 。因此,熵越大,表示随机变量的不确定程度越大。

条件熵

熵是用来表示随机变量的不确定程度,那么条件熵 H(Y|X) 表示在已知随机变量 X 的条件下 随机变量 Y 的不确定性(可以与条件概率类比)。

随机变量 X 给定条件下 Y 的条件熵 H(Y|X) 定义为在给定 X 的条件下 Y 的条件概率分布的熵 对 X 的数学期望。

H(YX)=i=1npiH(YX=xi)H(Y | X)=\sum_{i=1}^{n} p_{i} H\left(Y | X=x_{i}\right)

其中:

pi=P(X=xi),i=1,2,,np_{i}=P\left(X=x_{i}\right), \quad i=1,2, \cdots, n

也就是遍历 X 的每一种情况,在 X 取不同的 xi 时,有着各自的 pi 和 H(Y|X=xi) ,将他们相乘后累加即可得到条件熵。

当熵和条件熵中的概率由数据估计得到时(比如用频率表示概率),所对应的熵与条件熵分别称为经验熵和经验条件熵。

信息增益

信息增益表示得知特征 A 的信息而使得类 X 的信息熵的减少量或不确定性的减少量或者数据无序度的减少量。

特征 A 对训练数据集 D 的信息增益 g(D, A) 定义为集合 D 的经验熵 H(D) 与特征 A 在给定条件 D 的经验条件熵 H(D|A) 之差。简单来说,信息增益 = 经验熵 - 经验条件熵,即:

g(D,A)=H(D)H(DA)g(D, A)=H(D)-H(D | A)

一般地,熵H(Y)与条件熵H(Y|X)之差称为互信息。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。

我们再来仔细看看公式,经验熵 H(D) 表示对数据集D进行分类的不确定性,给定数据集后 H(D) 也就随之确定了。经验条件熵 H(D|A) 表示在特征 A 给定的条件下对数据集D进行分类的不确定性,经验条件熵的值可大可小,都取决于特征 A。如果特征 A 可以将数据集 D 完美分类,那么此时的 H(D|A) 将取得最小值。而信息增益则是 H(D) 与 H(D|A) 的差值,当特征 A 可以完美分类时,信息增益也就是最大的。不同的特征具有不同的信息增益,我们认为信息增益大的特征具有更强的分类能力。


参考链接:

决策树(一)熵、条件熵、信息增益

通俗理解信息熵 - 知乎专栏

通俗理解条件熵 - 知乎专栏

通俗理解决策树算法中的信息增益