互信息和条件互信息——信息熵计算

之前自己用R写的互信息和条件互信息代码,虽然结果是正确的,但是时间复杂度太高。

最近看了信息熵的相关知识,考虑用信息熵来计算互信息和条件互信息。

MI(X,Y)=H(X)-H(X|Y)

H(X):熵,一种不确定性的度量    H(X,Y):联合熵,两个元素同时发生的不确定度

MI(X,Y)即是信息增益,信息增益相关知识可以参考前一篇博客。

H(X,Y)=H(X)+H(Y|X)->H(X|Y)=H(X,Y)-H(Y)

则MI(X,Y)=H(X)+H(Y)-H(X,Y)

MI(X1,X2|Y)=H(X1|Y)-H(X1|X2,Y)=H(X1,Y)-H(Y)-(H(X1,X2,Y)-H(X2,Y))

                    =H(X1,Y)+H(X2,Y)-H(Y)-H(X1,X2,Y)

正好在R语言当中有直接计算信息熵的包,代码如下:

 1 library(infotheo)
 2 data<-read.csv("E:\\qq\\alarm_data\\Alarm1_s500_v1.csv",header = F)
 3 
 4 #互信息
 5 mi<-function(mylist1,mylist2){
 6   return(entropy(mylist1)+entropy(mylist2)-entropy(cbind(mylist1,mylist2)))
 7 }
 8 pvalue<-mi(data[,1],data[,2])#测试
 9 
10 
11 #条件互信息
12 cmi<-function(mylist1,mylist2,mylist3){
13   return(entropy(cbind(mylist1,mylist3))+entropy(cbind(mylist2,mylist3))-entropy(mylist3)-entropy(cbind(mylist1,mylist2,mylist3)))
14 }
15 pvalue1<-cmi(data[,5],data[,13],data[,c(7,8)])

前面计算的是原始的互信息和条件互信息,接下来打算下载infotheo包,并将里面信息熵部分更改为论文中改进的p(x)计算公式,来处理(-3,3)的连续数据

 

转载于:https://www.cnblogs.com/jiangyaling/p/8040024.html

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值