|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
互信息的定义
3 ?! m$ y7 ~) f. U5 p正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:
7 {: n8 O& m! t! Y. Z3 n3 d$ @% P# W$ [/ w# h# |- @2 `8 l' Q; |8 x
其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。: P: M! w0 Q) M
4 k1 b8 m& E7 V& c$ j" b' ?
其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。" z+ X3 s% r% ~' l1 q! @, ~3 r
1 S* @6 T t; R* j* l6 c; i# \$ L! b互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。8 w- @. J+ ^" s0 w
) s0 _# {( `2 V- H# D" [% m直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)/ O0 r g- B: k% K
% A1 Y* x& s$ P1 s1 o, L此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。' b* L( r% k8 T6 n. H, N6 I
0 ]. F& C: p; l" E5 C通用MATLAB代码 # A1 X4 D: j! ^4 K
主函数main.m5 s4 D" P! l0 S9 { _ d
7 h1 A4 f; t# u
clc* I0 E3 z- B# u4 B
u1 = rand(4,1);2 ^4 i/ N2 T8 u K9 `# n( t' E
u2 = [2;32;6666;5];
, ^! d" E+ b7 F3 Ywind_size = size(u1,1);7 f. V, G! L8 G! p/ o& m% ^! ]2 m
mi = calmi(u1, u2, wind_size);$ U+ y5 P+ v- T+ G- E
% Z. K5 |" p' I* \9 a
calmi.m2 G) ] {/ e6 ]7 G( Q9 R
+ c2 ~( ~4 M4 i
%计算两列向量之间的互信息/ Z! r; N# A3 |" L& u# _' o
%u1:输入计算的向量1: P4 G+ j; ?/ k2 q: x
%u2:输入计算的向量2: {" Y4 D& J+ {
%wind_size:向量的长度
0 o4 w5 B+ \) I1 dfunction mi = calmi(u1, u2, wind_size)
2 a' F# ~7 t# f4 A7 L& ix = [u1, u2];5 f ~! \: H" u0 u' l# R$ L' S% h
n = wind_size;: Q- P% f+ G% t
[xrow, xcol] = size(x);
/ }" d8 V& m& b& h$ z8 q% abin = zeros(xrow,xcol);! r% K4 ?5 a; f! @
pmf = zeros(n, 2);
! j3 {; L1 l Ffor i = 1:2; r5 o7 ^) L6 U( C! Z
minx = min(x(:,i));$ a4 n/ f" f+ x6 a5 b; Q* M% w' y
maxx = max(x(:,i));
5 T$ n- C% B$ n+ F2 X' ` binwidth = (maxx - minx) / n;
9 _) x; s& T3 }" o9 B edges = minx + binwidth*(0:n);
4 v: T+ _ O4 m$ ~1 Q Q histcEdges = [-Inf edges(2:end-1) Inf];
! R, a9 L) h+ V, j/ a' i# X- H [occur,bin(:,i)] = histc(x(:,i),histcEdges,1); %通过直方图方式计算单个向量的直方图分布
5 P* z8 Z- [2 N& ?) r- h! P$ Q pmf(:,i) = occur(1:n)./xrow;5 @# X0 _4 x8 _3 J
end( I/ q7 O2 r+ z: c
%计算u1和u2的联合概率密度, x% `# _: M1 E3 I5 G5 f" g
jointOccur = accumarray(bin,1,[n,n]); %(xi,yi)两个数据同时落入n*n等分方格中的数量即为联合概率密度
0 t+ Z& q& [1 j: ^+ J1 @9 sjointPmf = jointOccur./xrow;
" C w3 V8 V5 h: iHx = -(pmf(:,1))'*log2(pmf(:,1)+eps);
. v3 l ^. w+ G3 M, c) |Hy = -(pmf(:,2))'*log2(pmf(:,2)+eps);2 e: }1 e0 U* Z; C& S6 J, n# A2 P
Hxy = -(jointPmf(: ))'*log2(jointPmf(: )+eps);. V% T7 H% n! D8 B* w5 _+ M- H P i
MI = Hx+Hy-Hxy;3 a7 H7 L+ p& V( e, \/ x( u) Q
mi = MI/sqrt(Hx*Hy);
3 i6 |; R: o4 P- ~6 ]
! |" }. z# n) o4 g8 C
: u1 r5 k& T. s9 B' g- m. j0 }; a4 j7 K7 |4 N# g9 Z
|
|