B-概率论-熵和信息增益

目录

  • 熵和信息增益
  • 一、熵(Entropy)
  • 二、条件熵(Conditional Entropy)
  • 三、联合熵(Joint Entropy)
  • 四、相对熵(Relative Entropy)
    • 4.1 相对熵的性质
  • 五、交叉熵(Cross Entropy)
  • 六、相对熵、交叉熵和熵的关系
  • 七、信息增益(Information Gain)
  • 八、信息增益比(Information Gain Ratio)
  • 九、一张图带你看懂熵和信息增益

更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

熵和信息增益

一、熵(Entropy)

熵表示随机变量不确定性的度量。假设离散随机变量\(X\)可以取到\(n\)个值,其概率分布为
\[
P(X=x_i)=p_i, \quad i = 1,2,\ldots,n
\]
则\(X\)的熵定义为
\[
H(X) = -\sum_{i=1}^n p_i log{p_i}
\]
由于熵只依赖\(X\)的分布,与\(X\)本身的值没有关系,所以熵也可以定义为
\[
H(p) = -\sum_{i=1}^n p_i log{p_i}
\]
熵越大,则随机变量的不确定性越大,并且\(0\geq{H(p)}\leq\log{n}\)。

当随机变量只取两个值\(0\)和\(1\)的时候,\(X\)的分布为
\[
P(X=1)=p, \quad P(x=0)=1-p, \quad 0\geq{p}\leq{1}
\]
熵则是
\[
H(p) = -p\log_2 p-(1-p) \log_2(1-p)
\]
此时随机变量为伯努利分布,熵随概率变化的曲线如下图所示

import numpy as np
from math import log
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font = FontProperties(fname='/Library/Fonts/Heiti.ttc')

p = np.arange(0.01, 1, 0.01)
entro = -p*np.log2(p) - (1-p)*np.log2(1-p)

plt.plot(p, entro)
plt.title('伯努利分布时熵和概率的关系', fontproperties=font)
plt.xlabel('p')
plt.ylabel('H(p)')
plt.show()

当\(p=0\)和\(p=1\)时熵值为\(0\),此时随机变量完全没有不确定性;当\(p=0.5\)时的熵值最大,随机变量的不确定性最大。

二、条件熵(Conditional Entropy)

假设有随机变量\((X,Y)\),其联合概率为
\[
p(X=x_i,Y=y_i), \quad i=1,2,\ldots,n; \quad j=1,2,\ldots,m
\]
条件熵\(H(Y|X)\)表示在已知随机变量\(X\)的条件下随机变量\(Y\)的不确定性,定义为
\[
H(Y|X) = \sum_{i=1}^n P(X=x_i) H(Y|X=x_i)
\]
通过公式可以把条件熵理解为在得知某一确定信息的基础上获取另外一个信息时所获得的信息量

当熵和条件熵中的概率由数据估计获得时,所对应的熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)。

三、联合熵(Joint Entropy)

假设有随机变量\((X,Y)\),其联合概率为
\[
p(X=x_i,Y=y_i)=p_{ij}, \quad i=1,2,\ldots,n; \quad j=1,2,\ldots,m
\]
联合熵度量的是一个联合分布的随机系统的不确定性,它的定义为
\[
H(X,Y) = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i,Y=y_j)}
\]
由此可以对联合熵进行简单的化简
\[
\begin{align}
H(X,Y) & = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i,Y=y_j)} \\
& = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i)\log{p(Y=y_i|X=x_i)}} \& = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i)} -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(Y=y_i|X=x_i)}\& = -\sum_{i=1}^n p(X=x_i) \log{p(X=x_i)} -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(Y=y_i|X=x_i)} \& = H(X) + H(Y|X)
\end{align}
\]
同理可证\(H(X,Y)=H(Y)+H(X|Y)\),即联合熵表示对一个两个随机变量的随机系统,可以先观察一个随机变量获取信息,在这之后可以在拥有这个信息量的基础上观察第二个随机变量的信息量,并且无论先观察哪一个随机变量对信息量的获取都是没有任何影响的

同理可得一个含有\(n\)个独立的随机变量的随机系统\((X_1,X_2,\ldots,X_n)\)的联合熵为
\[
H(X_1,X_2,\ldots,X_n) = \sum_{i=1}^n H(X_i)
\]
可以发现即使是含有\(n\)个随机变量的随机系统无论先观察哪一个随机变量对信息量的获取也是没有任何影响的。

四、相对熵(Relative Entropy)

相对熵有时候也称为KL散度 (Kullback–Leibler divergence)。

设\(p(x)\)、\(q(x)\)是离散随机变量\(X\)中取值的两个概率分布,则\(p\)对\(q\)的相对熵是:
\[
\begin{align}
DKL(p||q) & = \sum_{i=1}^n p(X=x_i)\log{\frac{p(X=x_i)}{q(X=x_i)}} \& = E_{p(X=x_i)}\log{\frac{p(X=x_i)}{q(X=x_i)}}
\end{align}
\]

4.1 相对熵的性质

  1. 如果\(p(x)\)和\(q(x)\)两个分布相同,那么相对熵等于0
  2. \(DKL(p||q)≠DKL(q||p)\),相对熵具有不对称性
  3. \(DKL(p||q)≥0\)(利用Jensen不等式可证)
    \[
    \begin{align}
    DKL(p||q) & = \sum_{i=1}^n p(X=x_i)\log{\frac{p(X=x_i)}{q(X=x_i)}} \& = - \sum_{i=1}^n p(X=x_i)\log{\frac{q(X=x_i)}{p(X=x_i)}} \& = - E_{p(X=x_i)}\log{\frac{q(X=x_i)}{p(X=x_i)}} \& \geq -\log{E_{p(X=x_i)}}\log{\frac{q(X=x_i)}{p(X=x_i)}} \& = - \log\sum_{i=1}^n p(X=x_i)\log{\frac{q(X=x_i)}{p(X=x_i)}} \& = - \log\sum_{i=1}^n q(X=x_i)
    \end{align}
    \]
    其中\(\sum_{i=1}^n q(X=x_i)=1\),得证\(DKL(p||q)≥0\)
  4. 相对熵可以用来衡量两个概率分布之间的差异,上面公式的意义就是求\(p\)与\(q\)之间的对数差在\(p\)上的期望值

五、交叉熵(Cross Entropy)

定义:基于相同时间测度的两个概率分布\(p(x)\)和\(q(x)\)的交叉熵是指,当基于一个“非自然”(相对于“真实分布”\(p(x)\)而言)的概率分布\(q(x)\)进行编码时,在时间集合中唯一标识一个事件所需要的平均比特数(使用非真实分布\(q(x)\)所指定的策略消除系统不确定性所需要付出的努力大小)。

假设随机变量\(X\)可以取到\(n\)个值。现在有关于样本集的两个概率分布\(p(X=x_i)\)和\(q(X=x_i)\),其中\(p(X=x_i)\)为真实分布,\(q(X=x_i)\)非真实分布。如果用真实分布\(p(X=x_i)\)来衡量识别别一个样本所需要编码长度的期望(平均编码长度)为:
\[
\begin{align}
H(p) & = \sum_{i=1}^n p(X=x_i)\log{\frac{1}{p(X=x_i)}} \& = - \sum_{i=1}^n p(X=x_i)\log{p(X=x_i)}
\end{align}
\]
如果使用非真实分布\(q(X=x_i)\)来表示来自真实分布\(p(X=x_i)\)的平均编码长度,则是:
\[
H(p,q) = \sum_{i=1}^n p(X=x_i)\log{\frac{1}{q(X=x_i)}}
\]
因为用\(q(X=x_i)\)来编码的样本来自于分布\(q(X=x_i)\),所以\(H(p,q)\)中的概率是\(p(X=x_i)\),此时就将\(H(p,q)\)称之为交叉熵。

举个例子。考虑一个随机变量\(X\),真实分布\(p(X)=({\frac{1}{2}},{\frac{1}{4}},{\frac{1}{8}},{\frac{1}{8}})\),非真实分布\(q(X)=({\frac{1}{4}},{\frac{1}{4}},{\frac{1}{4}},{\frac{1}{4}})\),则\(H(p)=1.75bits \text{最短平均码长}\),交叉熵
\[
H(p,q)={\frac{1}{2}}\log_24+{\frac{1}{4}}\log_24+{\frac{1}{8}}\log_24+{\frac{1}{8}}\log_24=2bits
\]
由此可以看出根据非真实分布\(q(X=x_i)\)得到的平均码长大于根据真实分布\(p(X=x_i)\)得到的平均码长,但这种大于是个例还是总是会这样呢?

六、相对熵、交叉熵和熵的关系

此处化简一下相对熵的公式。
\[
\begin{align}
DKL(p||q) & = \sum_{i=1}^np(X=x_i)\log{\frac{p(X=x_i)}{q(X=x_i)}} \& = \sum_{i=1}^np(X=x_i)\log{p(X=x_i)}?p(X=x_i)\log{q(X=x_i})
\end{align}
\]
如果此时联立熵的公式和交叉熵的公式
\[
\begin{align}
熵 & = H(p) \& = ?\sum_{i=1}^np(X=x_i)\log{p(X=x_i)}
\end{align}
\]
\[
\begin{align}
交叉熵 & = H(p,q) \& = \sum_{i=1}^n p(X=x_i)\log{\frac{1}{q(X=x_i)}} \& = ?\sum_{i=1}^np(X=x_i)\log{q(X=x_i)}
\end{align}
\]
即可推出
\[
DKL(p||q)=H(p,q)?H(p)
\]
通过上述公式可以得出当用非真实分布\(q(x)\)得到的平均码长比真实分布\(p(x)\)得到的平均码长多出的比特数就是相对熵。

又因为\(DKL(p||q)≥0\),则\(H(p,q)≥H(p)\),当\(p(x)=q(x)\)时,此时交叉熵等于熵。
并且当\(H(p)\)为常量时(注:在机器学习中,训练数据分布是固定的),最小化相对熵\(DKL(p||q)\)等价于最小化交叉熵 \(H(p,q)\)也等价于最大化似然估计。

七、信息增益(Information Gain)

假设有随机变量\((X,Y)\),信息增益表示特征\(X\)的信息而使得类\(Y\)的信息不确定性减少的程度。

特征\(A\)对训练集\(D\)的信息增益记作\(g(D,A)\),则可以把该信息增益定义为集合\(D\)的经验熵与特征\(A\)给定条件下\(D\)的经验条件熵\(H(D|A)\)之差
\[
g(D,A) = H(D) - H(D|A)
\]
其中\(H(D)\)表示对数据集\(D\)进行分类的不确定性;\(H(D|A)\)表示在特征\(A\)给定的条件下对数据集\(D\)进行分类的不确定性;\(g(D,A)\)表示由于特征\(A\)而使得对数据集\(D\)的分类的不确定性减少的程度。因此可以发现对于数据集\(D\)而言,信息增益依赖于特征,不同的特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力。

八、信息增益比(Information Gain Ratio)

假设有随机变量\((X,Y)\),特征\(A\)对数据集\(D\)的信息增益比记作\(g_R(D,A)\),定义为
\[
g_R(D,A) = {\frac{g(D,A)}{H_A(D)}}
\]
其中特征熵\(H_A(D) = -\sum_{i=1}^n {\frac{D_i}{D}} \log_2 {\frac{D_i}{D}}\),\(n\)是特征\(A\)的取值个数。

九、一张图带你看懂熵和信息增益

假设有随机变量\((X,Y)\),\(H(X)\)表示\(X\)的熵,\(H(Y)\)表示\(Y\)的熵,\(H(X|Y)\)表示已知\(Y\)时\(X\)的条件熵,\(H(Y|X)\)表示已知\(X\)时\(Y\)的条件熵,\(I(X,Y)\)表示信息增益,\(H(X,Y)\)表示的联合熵。

原文地址:https://www.cnblogs.com/nickchen121/p/11686764.html

时间: 2024-08-29 09:30:42

B-概率论-熵和信息增益的相关文章

算法干货----决策树算法中的熵与信息增益

什么是决策树?为什么要用决策树? 决策树是一种二分树,或是多分数.对于大量数据的细分工作有很大帮助.在日常生活中,决策树的算法可谓是每天都在用.小到用户分类,大到辅助决策.实际上他的使用很多. 至于为什么要用到决策树,个人认为就是因为这种算法简单.代码实现起来主要就是IF-ELSE就可以实现.可这一算法的发展也是从ID3--->C4.5----->C5.0. 它的主要步骤就两个:1,建树 2,剪树 如何建树,就是如何分你的数据,按照哪种特性?比如人口统计数据,是按年龄,身高,体重,学历....

信息熵、条件熵、联合熵、信息增益、相对熵、交叉熵

信息熵 熵度量了事物的不确定性,越不确定的事物,它的熵就越大.在没有外部环境的作用下,事物总是向着熵增大的方向发展,所以熵越大,可能性也越大. \[ H(X)=-\sum_{i=1}^np_{(i)}logp_{(i)} \] 条件熵 X确定时,Y的不确定性度量. 在X发生是前提下,Y发生新带来的熵. \[ H(Y|X)=H(X,Y)-H(X)=-\sum_{x,y}p(x,y)logp(y|x) \] 联合熵 (X,Y)在一起时的不确定性度量 \[ H(X,Y)=-\sum_{x,y}p(x,

机器学习【2】决策树中熵和信息增益的计算,构造决策树 ID3

信息熵很亮的是在你知道一个事件的结果后,平均会带给你多大的信息量,当事件的不确定性越大,那么要搞清它所需要的信息量也就越大,也就是信息熵越大,是无序性,不确定性的度量指标. 信息熵的计算: -p[i]logp[i],底数为2 public static double calcEntropy(int p[]) { double entropy = 0; // 用来计算总的样本数量,p[i]/sum即i的概率 double sum = 0; int len = p.length; for (int

[机器学习]信息&熵&信息增益

关于对信息.熵.信息增益是信息论里的概念,是对数据处理的量化,这几个概念主要是在决策树里用到的概念,因为在利用特征来分类的时候会对特征选取顺序的选择,这几个概念比较抽象,我也花了好长时间去理解(自己认为的理解),废话不多说,接下来开始对这几个概念解释,防止自己忘记的同时,望对其他人有个借鉴的作用,如有错误还请指出. 1.信息 这个是熵和信息增益的基础概念,我觉得对于这个概念的理解更应该把他认为是一用名称,就比如‘鸡‘(加引号意思是说这个是名称)是用来修饰鸡(没加引号是说存在的动物即鸡),‘狗’是

信息增益与熵

在信息论中,熵被用来衡量一个随机变量出现的期望值.变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大,熵是整个系统的平均消息量. 信息熵是信息论中用于度量信息量的一个概念.一个系统越是有序,信息熵就越低:反之,一个系统越是混乱,信息熵就越高.所以,信息熵也可以说是系统有序化程度的一个度量. 他的计算公式是:H(x)=E[I(xi)]=E[ log(1/p(xi)) ]=-∑p(xi)log(p(xi)) (i=1,2,..n).自信息,又称信息本体,用来衡量单一事件发生时所包含的信

基于随机变量的熵来进行数据建模和分析

转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thinkgamer 写在前边的话 首次接触信息熵,信息增益的概念是在阅读<机器学习实战>这本书的时候了解到的,那个时候对这几个概念还是一知半解,虽然当时可以理解,但是记忆却保持不了太久,几个月后,再次阅读一个数据专家的代码时发现人家对于用户异常行为检测的算法模型采用的就是随机变量的熵来建模的 机器学习

文本数据的机器学习自动分类方法(转)

http://blog.csdn.net/jdbc/article/details/50586042 本文为第一部分,着重介绍文本预处理以及特征抽取的方法. 随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类.组织和管理,已经成为一个具有重要用途的研究课题.而在这些数据中,文本数据又是数量最大的一类."文本分类是指在给定分类体系下,根据文本内容自动确定文本类别的过程"(达观数据科技联合创始人,张健).文本分类有着广泛的应用场景,例如: 新闻网站包含大量报道文章,基于文章内容,

决策树系列(四)——C4.5

预备知识:决策树.ID3 如上一篇文章所述,ID3方法主要有几个缺点:一是采用信息增益进行数据分裂,准确性不如信息增益率:二是不能对连续数据进行处理,只能通过连续数据离散化进行处理:三是没有采用剪枝的策略,决策树的结构可能会过于复杂,可能会出现过拟合的情况. C4.5在ID3的基础上对上述三个方面进行了相应的改进: a)  C4.5对节点进行分裂时采用信息增益率作为分裂的依据: b)  能够对连续数据进行处理: c)  C4.5采用剪枝的策略,对完全生长的决策树进行剪枝处理,一定程度上降低过拟合

【转载】决策树Decision Tree学习

本文转自:http://www.cnblogs.com/v-July-v/archive/2012/05/17/2539023.html 最近在研究规则引擎,需要学习决策树.决策表等算法.发现篇好文对我这个初学者很有指导价值,先转再细品. 1. 什么是决策树 咱们直接切入正题.所谓决策树,顾名思义,是一种树,一种依托于策略抉择而建立起来的树. 机器学习中,决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶