|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
互信息的定义 : |( l" G) x' c
正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:0 _0 A, e9 P4 G, k9 @: Q
8 F. B7 ?) ?% w' d4 I
其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。: m6 o# Q* p2 |
) Y/ q- H: F$ l! n( S# D2 d" c其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。% M2 C, \' E# U9 A* g" ]+ t) f6 | ~
8 F# q! I6 ^2 B1 Z3 Y' ~
互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。' y8 n( m3 @. Y7 g& H* I% e
4 j; f6 R2 ?$ x4 W5 _' }. N' W直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)! Y: h8 y- a7 [- V$ r
' w/ \' y8 P& E" O Q; J此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。
: {# F7 n. G0 n3 g" K4 h. y
9 m! l- A: ?( E( E( \通用MATLAB代码 * [, h4 j# H1 F5 t- M5 l! l
主函数main.m, p; u5 M' }# X3 |
6 Q( s& W+ z: L0 ^- H+ ^clc' B$ _, X: f/ E
u1 = rand(4,1);
- ^$ z" P1 h* ku2 = [2;32;6666;5];/ m+ q# z: w! G6 m. ]5 G/ O3 z
wind_size = size(u1,1);
$ v7 O2 \; |# L" @; \mi = calmi(u1, u2, wind_size);
- |& ]& R. I* F- Z6 P8 {# _0 x1 s# N5 E2 h. v
calmi.m4 D; R5 J- K/ O8 p) Q
; q: F9 m8 ?5 x8 e2 p8 j. p
%计算两列向量之间的互信息
7 B2 O- ]( M% ]8 V6 p& C9 ^6 t, {4 k+ M%u1:输入计算的向量1) d8 F' @9 U3 m& s* c1 {
%u2:输入计算的向量2& \$ q/ S, |7 O, Z6 e; W. r8 P
%wind_size:向量的长度! L9 ^' N7 r4 Q
function mi = calmi(u1, u2, wind_size)
3 b4 v( E5 I) i2 K) fx = [u1, u2];7 ]* T( T+ ~! W3 W
n = wind_size;
6 e/ `1 f$ M: b) D# S! B[xrow, xcol] = size(x);
5 I5 \5 q: K1 O2 Nbin = zeros(xrow,xcol);
& L' A- y' u/ ~ O/ Z) a. E2 mpmf = zeros(n, 2);, I7 ]; G/ T: [& ?. V. Z2 v, s! S
for i = 1:2
9 ^, r8 b' L+ w+ M5 z; O6 X, \9 M1 S minx = min(x(:,i));' @/ P0 S! [/ ]- a f' w, }
maxx = max(x(:,i));
& S* s. j% L/ w7 c8 t binwidth = (maxx - minx) / n;+ E( c, W1 h0 E/ R" ~0 x
edges = minx + binwidth*(0:n);
0 p& u q1 h* j/ H7 G8 I5 o9 w histcEdges = [-Inf edges(2:end-1) Inf];
* H; \2 I e P3 V5 n! X) ]; r [occur,bin(:,i)] = histc(x(:,i),histcEdges,1); %通过直方图方式计算单个向量的直方图分布" Y$ g. W. ~4 |; j
pmf(:,i) = occur(1:n)./xrow;% }& A8 p/ g F' b2 P
end4 L% f4 W- `. {6 N
%计算u1和u2的联合概率密度9 E+ T l2 O/ w" v
jointOccur = accumarray(bin,1,[n,n]); %(xi,yi)两个数据同时落入n*n等分方格中的数量即为联合概率密度
* y5 w! q/ l/ y7 {- ?jointPmf = jointOccur./xrow;& i& F9 |, O5 o6 b
Hx = -(pmf(:,1))'*log2(pmf(:,1)+eps);
. [5 u j* `" u4 d' R {7 {: KHy = -(pmf(:,2))'*log2(pmf(:,2)+eps);
5 S3 V( i/ z. i1 L" H+ {Hxy = -(jointPmf(: ))'*log2(jointPmf(: )+eps);
0 S7 }9 c9 f8 X! a% A5 BMI = Hx+Hy-Hxy;+ O) R& B) e: h) d7 o( M, P
mi = MI/sqrt(Hx*Hy);
; U! k" `$ m* g' N* E! s* |' v# K# |; A4 @
8 j7 V9 M) j# o7 g# H
) M! ?1 ]4 N3 g0 G. ]6 O' n# h, l
|
|