应用R语言实现信息度量方法_第1页
应用R语言实现信息度量方法_第2页
应用R语言实现信息度量方法_第3页
应用R语言实现信息度量方法_第4页
应用R语言实现信息度量方法_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用R语言实现信息度量前言香农的通信的数学理论是20世纪非常伟大的著作,被认为是现代信息论研究的开端。信息论定义了信息熵,用于 把信息进行度量,以比特(bit)作为量纲单位,为如今发达的信息产业和互联网产业奠定了基础。本文接上一篇文章R语 言实现46种距离算法,继续philentropy包的介绍,包括信息度量函数的使用。目录信息熵介绍关键概念信息度量函数应用举例信息嫡介绍信息论(Information Theory)是概率论与数理统计的一个分枝,用于研究信息处理、信息熵、通信系统、数据传输、率 失真理论、密码学、信噪比、数据压缩等问题的应用数学学科。信息论将信息的传递作为一种统计现象来考虑,给出

2、了 估算通信信道容量的方法。信息传输和信息压缩是信息论研究中的两大领域。香农被称为是“信息论之父”,香农于1948年10月发表的A Mathematical Theory of Communication,通信的数学理论(中 文版),通常被认为是现代信息论研究的开端。信息熵,是对信息随机性的量度,又指信息能被压缩的极限,用bit作为衡量信息的最小单位。一切信息所包含的信息 量,都是1bit的正整数倍。计算机系统中常采用二进制编码,一个0或1就是1bit。举例来说明一下信息熵的计算原理,假设小明最喜欢5种水果,苹果、香蕉、西瓜、草莓、樱桃中的一种,如果小明没 有偏爱,选择每种水果的概率都是20%

3、,那么这一信息的信息熵为H(A) = -1*(0.2*log2(0.2)*5)=2.321928 bits如果小明偏爱香蕉,选择这5种水果的概率分别是10%,20%,45%,15%,10%,那么这一信息信息熵为H(B)=-1*(0.1*log2(0.1)+0.2*log2(0.2)+0.45*log2(0.45)+0.15*log2(0.15)+0.1*log2(0.1)=2.057717 bits从结果得到H(A)大于H(B),信息熵越大表示越不确定。对于B的情况,对某一种水果的偏好,比A增加了确定性的因 素,所以H(B)小于H(A)是符合对于信息熵的定义的。关键概念我们从一幅图来认识信息熵

4、,图中显示了随机变量X和Y的2个集合,在信息熵的概念里的所有可能逻辑关系。两个圆 所包含的面积为联合嫡H(X,Y),左边的整个圆表示X的熵H(X),左边半圆是条件熵H(X|Y)。右边的整个圆表示Y的 熵H(Y),右边半圆条件熵H(Y|X),中间交集的部分是互信息I(X; Y)。H(X,Y)信息熵(Entropy):是对信息随机性的量度,用于计算信息能被压缩的极限。对随机变量X,不确定性越大,X的信息嫡 H(X)也就越大。公式定义:= 一 响* 姑场 CP(务)i=iH(x)的取值范围,0=H(x)1当MI(X,Y)=0时,表示两个事件X和Y完全不相关。决策树ID3算法就是使用信息增益来划分特征

5、,信息增益大时,说 明对数据划分帮助很大,优先选择该特征进行决策树的划分。信息增益比率:是信息增益与该特征的信息熵之比,用于解决信息增益对多维度特征的选择,决策树C4.5算法使用信 息增益比率进行特征划分。KL散度(Kullback Leibler Divergence,相对嫡):随机变量x取值的两个概率分布p和q,用来衡量这2个分布的 差异,通常用p表示真实分布,用q表示预测分布。公式定义:KL(PQ) = E P0) * lS2(P(Pi)/PM) = HP, Q) - H(P) i=ln为事件的所有可能性,如果两个分布完全相同,那么它们的相关熵为0。如果相对熵KL越大,说明它们之间的差异

6、越 大,反之相对熵KL越小,说明它们之间的差异越小。交叉熵(Cross Entropy):是对KL散度的一种变型,把KL散度log(p(x)/q(x)进行拆分,前面部分就是p的嫡H(p),后 面就是交叉嫡H(p,q)。公式定义:2p(x)logp(x) -p(x)logq(x)KL散度。时(p|q) =P的嫡W)=交叉炯丑3祯)交叉嫡可以用来计算学习模型分布与训练分布之间的差异,一般在机器学习中直接用交叉嫡做损失函数,用于评估模型。信息论是通信理论的基础,也是xx的基础,关于信息论的理论,等后面有时时间再做分享,本文重要研究信息嫡的函 数计算问题。信息度量函数philentropy包的函数,主

7、要分为3种类别的函数,第一类是距离测量的函数,第二类是相关性分析,第三类是信息度量 函数,本文重点介绍这些信息度量的函数。有关于距离测量函数和相关性分析函数,请参考文章R语言实现46种距离 算法I I =我们来看一下,philentropy包里信息度量的函数:H():香农嫡,Shannons Entropy H(X)JE():联合嫡,Joint-Entropy H(X,Y)CE():条件嫡,Conditional-Entropy H(X|Y)MI():互信息,Shannons Mutual Information I(X,Y)KL() : KL 散度,Kullback-Leibler Dive

8、rgenceJSD() : JS 散度,Jensen-Shannon DivergencegJSD():通用 JS 散度,Generalized Jensen-Shannon Divergence本文的系统环境为:Win10 64bitR: 3.4.2 x86_64-w64-mingw32H()香农熵H()函数,可用于快速计算任何给定概率向量的香农嫡。H()函数定义:H (x, unit = log2)参数列表:x,概率向量unit,对数化的单位,默认为log2函数使用:#创建数据xx-1:10;x1123456789 10px-x/sum(x);x11 0.01818182 0.036363

9、64 0.05454545 0.072727275 0.09090909 0.10909091 0.12727273 0.145454559 0.16363636 0.18181818#计算香农炳H(px)1 3.103643同样地,我们也可以用程序实现公式自己算一下。#创建数据xx-1:10#计算x的概率密度pxpx x3 y3 CE(x3, y3)1 -0.34988523.3 JE()联合嫡JE()函数,基于给定的联合概率向量P(X,Y)计算香农的联合熵H(X,Y)。JE()函数定义:JE (x, unit = log2)参数列表: x,联合概率向量unit,对数化的单位,默认为log2

10、函数使用:#创建数据x x2 JE(x2)1 6.3722363.4 MIO互信息MI()函数,根据给定联合概率向量P(X,Y)、概率向量P(X)和概率向量P(X),按公式I(X,Y)= H(X)+ H(Y)-H(X,Y)计算。函数定义:MI(x, y, xy, unit = log2)参数列表: x,概率向量 x,概率向量 xy,联合概率向量unit,对数化的单位,默认为log2函数使用:#创建数据集 x3 y3 xy3 MI(x3, y3, xy3)1 3.3119733.5期()散度KL(涵数,计算两个概率分布P和Q的Kullback-Leibler散度。函数定义:KL(x, test.

11、na = TRUE, unit = log2, b = NULL)参数列表: x,概率向量或数据框 test.na,是否检查NA值unit,对数化的单位,默认为log2 b,用计数向量估计概率的方法,默认值NULL。函数使用:#创建数据集 df4 KL(df4, unit = log2) # Defaultkullback-leibler0.1392629 KL(df4, unit = log10)kullback-leibler0.0419223 KL(df4, unit = log)kullback-leibler0.096529673.5 JSD()散度JSD

12、()函数,基于具有相等权重的Jensen-Shannon散度,计算距离矩阵或距离值。公式定义:JSD(PQ) = 0.5 * KL(PR) + KL(QR)函数定义:JSD(x, test.na = TRUE, unit = log2, b = NULL)参数列表:x,概率向量或数据框test.na,是否检查NA值unit,对数化的单位,默认为b,用计数向量估计概率的方法,默认值NULL。#创建数据x5 - 1:10y5 - 20:29df5 JSD(df5,unit=log2)jensen-shannon50.11323 JSD(df5,unit=log)

13、jensen-shannon34.73585 JSD(df5,unit=log10)jensen-shannon15.08559# 计算 JSD,满足 b JSD(df5, b = empirical)jensen-shannon0.037927493.6 gJSD()散度gJSD()函数,计算概率矩阵的广义Jensen-Shannon散度。公式定义: ,耳)=(EH m * K) - EL,* H(R)函数定义:gJSD(x, unit = log2, weights = NULL)参数列表:x,概率矩阵unit,对数化的单位,默认为log2weights,指定x

14、中每个值的权重,默认值NULL。#创建数据Prob - rbind(1:10/sum(1:10), 20:29/sum(20:29), 30:39/sum(30:39)#计算gJSDgJSD(Prob)1 0.023325应用举例在我们了解了熵的公式原理和使用方法后,我们就可以做一个案例来试一下。我们定义一个场景的目标:通过用户的看 书行为,预测用户是否爱玩游戏。通过我们一步一步地推倒,我们计算出熵,条件熵,联合熵,互信息等指标。第一步,创建数据集为2列,X列用户看书的类型,包括旅游(Tourism)、美食(Food)、IT技术(IT),Y列用户是否喜欢 打游戏,喜欢(Y),不喜欢(N)。X,

15、YTourism,YFood,NIT,YTourism,NTourism,NIT,YFood,NTourism,Y第二步,建立联合概率矩阵,分别计算H(X),Y(X)。XYNP(X)Tourism2/8=0.252/8=0.250.25+0.25=0.5Food0/8=02/8=0.250+0.25=0.25IT2/8=0.250/8=00.25+0=0.25P(Y)0.25+0+0.25=0.50.25+0.25+0=0.5计算过程#分别计算每种情况的概率p(X=Tourism) = 2/8 + 2/8 = 0.5p(X=Food) = 2/8 + 0/8 = 0.25p(X=IT) = 0

16、/8 + 2/8 = 0.25p(Y=Y) = 4/8 = 0.5p(Y=N) = 4/8 = 0.5#计算H(X)H(X) = -p(xi)*log2(p(xi)= -p(X=Tourism)*log2(p(X=Tourism) ) -p(X=Food)*log2(p(X=Food) ) -p(X=IT)*log2(p(X=IT) =-0.5*log(0.5) -0.25*log(0.25) - 0.25*log(0.25) =1.5#计算H(Y)H(Y) = -p(yi)*log2(p(yi)=-p(Y=Y)*log2(p(Y=Y) -p(Y=N)*log2(p(Y=N)=-0.5*log

17、(0.5) -0.5*log(0.5)第三步,计算每一项的条件熵,H(Y|X=Tourism),H(Y|X=Food),H(Y|X=IT)。H(Y|X=Tourism) = -p(Y|X=Tourism)*log(p(Y|X=Tourism) - p(N|X=Tourism)*log(p(N|X=Tourism) =-0.5*log(0.5) -0.5*log(0.5)H(Y|X=Food) = -p(Y|X=Food)*log(p(Y|X=Food) -p(N|X=Food)*log(p(N|X=Food) =-0*log(0) -1*log(1) =0H(Y|X=IT) = -p(Y|X=

18、IT)*log(p(Y|X=IT) -p(N|X=IT)*log(p(N|X=IT)=-1*log(1) -0*log(0) =0第四步,计算条件熵H(Y|X)H(Y|X) = p(xi)*H(Y|xi)=p(X=Tourism)*H(Y|X=Tourism) + p(X=Food)*H(Y|X=Food) + p(X=IT)*H(Y|X=IT)=0.5*1 + 0.25*0 + 0.25*0 =0.5第五步,计算联合熵H(X,Y)H(X,Y) = -p(x,y)log(p(x,y)=H(X) + H(Y|X)第计算互信息3Y)弟八步,计算互信息I(X,Y)I(X;Y) = H(Y) - H(Y|X) = 1 - 0.5 = 0.5=H(X) + H(Y) - H(X,Y) = 1.5 + 1 - 2 = 0.5我们把上面的推到过程,用程序来实现一下。#创建数据集X-c(Tourism,Food,IT,Tourism,Tourism,IT,Food,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论