|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
互信息的定义
5 x) i) A8 B7 s0 V) v# z4 `正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:$ ^! ]: _+ D0 a
9 ^* I) `% w# \8 t2 d
其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。6 ]+ ~8 P( [- t! ~1 _
5 w) d9 z/ p6 _其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。5 `+ k$ z) r7 E3 Z4 Z* I
% `" F; e; F5 T9 A6 ^
互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。
* x) J2 ^) b! J" e; y- z) V
; M* b% o2 h4 w% ]) T" c3 Z直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)2 W# [& S1 |2 e1 ~( t. O
" t2 C7 {6 W2 C( k) i' \此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。
) @, H; M0 H: o; u+ F) P1 B# c a/ t
通用MATLAB代码 7 ^+ {9 W0 X& l' U7 T0 ~3 M# |
主函数main.m
; a2 O4 O2 i# R, y9 d" `6 S0 Y. B- F7 p% Q
clc
' Z' y$ T R. U) a; X8 xu1 = rand(4,1);
B* U* G. _8 @: \u2 = [2;32;6666;5];
6 x' c3 [ _2 p- t' awind_size = size(u1,1);
; K2 D K9 r, X% `mi = calmi(u1, u2, wind_size);
" W( E% s) J O( E% a2 B
" `! h+ q( M$ h$ g4 _3 x) @calmi.m
7 @( m6 y* G" I0 _5 C; {$ y; v% F/ W. {% c5 e
%计算两列向量之间的互信息1 ^+ z! A# r( Y; g- f3 y
%u1:输入计算的向量1, |, @+ b4 x, w' b; _
%u2:输入计算的向量2
6 B) y m7 E+ l, M%wind_size:向量的长度
7 @, t% F( @# _4 `& p9 D( G* L/ Bfunction mi = calmi(u1, u2, wind_size)- i8 f6 \1 W' K8 X" u, V
x = [u1, u2];
, t7 Q1 t7 s8 A/ m+ on = wind_size;% E6 ^2 i2 g& }4 U& |: y% ~6 A
[xrow, xcol] = size(x);8 p7 i+ n7 H. f; S4 ^7 t
bin = zeros(xrow,xcol);
8 H; S# P+ O! Y+ upmf = zeros(n, 2);
% C# J7 @, I- j" E6 W- Bfor i = 1:2
/ W9 }6 m" B! ]/ V minx = min(x(:,i));1 _9 R+ l0 I" {3 k& L
maxx = max(x(:,i));
# a4 B0 F8 [' |1 v5 Q binwidth = (maxx - minx) / n;
& l; T) G: \. L4 A+ E" @ edges = minx + binwidth*(0:n);8 p$ K: H+ y3 R4 k! b& r, ?
histcEdges = [-Inf edges(2:end-1) Inf];
P& o( Q+ v' D( s2 \- f+ c, K6 R [occur,bin(:,i)] = histc(x(:,i),histcEdges,1); %通过直方图方式计算单个向量的直方图分布
% e- l+ q) b" e6 M+ D; u pmf(:,i) = occur(1:n)./xrow;
5 ?, b+ j! C2 W3 D" ^+ pend
5 d% D9 I7 v; }- Z7 ?%计算u1和u2的联合概率密度3 E0 |% y E; r
jointOccur = accumarray(bin,1,[n,n]); %(xi,yi)两个数据同时落入n*n等分方格中的数量即为联合概率密度5 \, G. k* U) q+ b- W
jointPmf = jointOccur./xrow;" p( w$ H" d2 ?5 q$ E0 [
Hx = -(pmf(:,1))'*log2(pmf(:,1)+eps);
( D9 ~; C& X$ b3 p9 t7 G3 UHy = -(pmf(:,2))'*log2(pmf(:,2)+eps);# W( _7 y- S: d! E" E, f/ A1 b5 W) e
Hxy = -(jointPmf(: ))'*log2(jointPmf(: )+eps);
; k1 X! \1 w6 W8 w- A2 L0 k+ MMI = Hx+Hy-Hxy;3 l% Y' W9 F4 ~' b* ]3 P) X
mi = MI/sqrt(Hx*Hy);
# [' G- ^; l3 a2 d2 P! p9 ~7 q* d5 m+ |3 A$ I/ I. T
& A) H; i3 L7 q p5 w
# U% P0 `% e7 ?' V. T8 M |
|