信息熵
信息熵的意义
信息熵主要研究的是对一个信号能够提供信息的多少进行量化。1948年,香农引入信息熵,将其定义为离散随机事件的出现概率。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以说,信息熵可以被认为是系统有序化程度的一个度量
信息熵的定义
如果一个随机变量YYY的可能取值为:X=y1,y2,⋯ynX={y_1, y_2,\cdots y_n}X=y1,y2,⋯yn,其概率分布分别为:P(yi)P(y_i)P(yi)。则随机变量YYY的熵定义为:
H(Y)=∑i=1n−P(yi)log(P(yi))H(Y)=\sum_{i=1}^n -P(y_i)log(P(y_i))H(Y)=∑i=1n−P(yi)log(P(yi))
信息熵的值越大,说明越不确定
在信息论中,常常用以2为底的对数来计算,计算出来的单位称为bits;在机器学习中,常常用自然对数来计算,计算出来的单位称为nats。以下,都采用自然对数来进行计算
条件熵的定义
条件熵表示在条件 XXX 下 YYY 的信息熵,记作:
H(Y∣X)=∑i=1nP(xi)H(Y∣xi)=∑i=1n{P(xi)∗[−∑j=1mP(Yj∣xi)log(P(Yj∣xi))]}H(Y|X)=\sum_{i=1}^{n} P(x_i)H(Y|x_i)=\sum_{i=1}^n \{P(x_i)*[-\sum_{j=1}^m P(Y_j|x_i)log(P(Y_j|x_i))]\}H(Y∣X)=∑i=1nP(xi)H(Y∣xi)=∑i=1n{P(xi)∗[−∑j=1mP(Yj∣xi)log(P(Yj∣xi))]}
xix_ixi:条件XXX的每种可能取值,假设共有nnn种取值
P(xi)P(x_i)P(xi):具有xix_ixi取值的样本在总样本种所占的比例
H(Y∣xi)H(Y|x_i)H(Y∣xi):选取所有包含xix_ixi取值的样本,基于随机变量YYY来计算信息熵
Yj∣xiY_j|x_iYj∣xi:所有包含xix_ixi取值的样本中,特征YYY的第jjj种取值(假设共有mmm种取值)
P(Yj∣xi)P(Y_j |x_i)P(Yj∣xi):所有包含xix_ixi取值的样本中,YjY_jYj取值所占的比例
信息增益
信息增益 = 信息熵 - 条件熵
信息增益描述了一个特征带来的信息量的多少,常用于决策树的构建和特征选择
信息增益越大,就越说明该特征对确定某个事件的贡献越大(降低了某个事件的不确定性),或者说,该特征是某个事件的主要特征
案例1:计算下列系统的信息熵、条件熵和信息增益
假设有下列训练样本:
设置"是否外出打球"这一随机变量为YYY,湿度为随机变量XXX
信息熵计算
先统计 P(y=no)=5/14;P(y=yes)=9/14;n=2P(y=no)=5/14; P(y=yes) = 9/14; n=2P(y=no)=5/14;P(y=yes)=9/14;n=2
则:H(Y)=−5/14∗log(5/14)−9/14∗log(9/14)=0.6518H(Y)=-5/14*log(5/14) - 9/14*log(9/14)=0.6518H(Y)=−5/14∗log(5/14)−9/14∗log(9/14)=0.6518
条件熵计算
统计:P(x=high)=7/14=1/2;P(x=normal)=7/14=1/2P(x=high) = 7/14=1/2; P(x=normal)=7/14=1/2P(x=high)=7/14=1/2;P(x=normal)=7/14=1/2
H(Y∣X湿度)=P(x=high)∗H(Y∣x=high)+P(x=normal)∗H(Y∣x=normal)H(Y|X_{\text{湿度}} ) = P(x=high)*H(Y|x=high)+P(x=normal)*H(Y|x=normal)H(Y∣X湿度)=P(x=high)∗H(Y∣x=high)+P(x=normal)∗H(Y∣x=normal)
而:
H(Y∣x=high)=−P(Y=yes∣x=high)∗log(P(Y=yes∣x=high)−P(Y=no∣x=high∗log(P(Y=no∣x=high)=−3/7∗log(3/7)−4/7∗log(4/7)=0.6829\begin{aligned} H(Y|x=high)&=-P(Y=yes|x=high)*log(P(Y=yes|x=high)- P(Y=no|x=high*log(P(Y=no|x=high) \\ & =-3/7*log(3/7)-4/7*log(4/7)=0.6829 \end{aligned}H(Y∣x=high)=−P(Y=yes∣x=high)∗log(P(Y=yes∣x=high)−P(Y=no∣x=high∗log(P(Y=no∣x=high)=−3/7∗log(3/7)−4/7∗log(4/7)=0.6829
H(Y∣x=normal)=−6/7∗log(6/7)−1/7∗log(1/7)=0.4101H(Y|x=normal)=-6/7*log(6/7)-1/7*log(1/7)=0.4101H(Y∣x=normal)=−6/7∗log(6/7)−1/7∗log(1/7)=0.4101
最终:
H(Y∣X湿度)=1/2∗0.6829+1/2∗0.4101=0.5465H(Y|X_{\text{湿度}})=1/2*0.6829+1/2*0.4101=0.5465H(Y∣X湿度)=1/2∗0.6829+1/2∗0.4101=0.5465
信息增益计算
信息增益 = 信息熵 - 条件熵=0.6518-0.5465=0.1053
也就是说,引入了湿度这个变量之后,就使得是否打球这个变量的信息熵就从0.6518减小到了0.5465,变得更加确定了
确定最关键的特征变量
信息增益越大,该特征变量就越关键
考虑到系统的总信息熵是固定不变的,因此,某特征变量的条件熵越小,该变量就越关键
1037





