列向量互資訊計算

2021-08-01 20:43:25 字數 1684 閱讀 8609

首先資訊熵的計算公式如下

其中i(x)表示x的資訊量

:這裡對數所使用的底,通常是 2, 自然常數e,或是10。當b = 2,熵的單位是bit;當b = e,熵的單位是nat;而當 b = 10,熵的單位是dit。

p(xi)是xi發生的概率英文裡面叫做probability mass function,乙個隨機產生的事件所包含的資訊本體數量,只與事件發生的機率相關。事件發生的機率越低,在事件真的發生時,接收到的資訊中,包含的資訊本體越大。含義是概率為 0 的事件對應的資訊大, 反之資訊量少,取對數的原因是使得乘積變為求和。資訊熵即為資訊量的數學期望。

則x,y的聯合資訊量可以表示為

平均互資訊為互資訊的數學期望

則公式可以推出

%計算兩列向量之間的互資訊

%u1:輸入計算的向量1

%u2:輸入計算的向量2

%wind_size:向量的維度

function mi = calc_mi(u1, u2, wind_size)

x = [u1, u2];

n = wind_size;

[xrow, xcol] = size(x);

bin = zeros(xrow,xcol);

pmf = zeros(n, 2);

for i = 1:2

minx = min(x(:,i));

maxx = max(x(:,i));

binwidth = (maxx - minx) / n;

edges = minx + binwidth*(0:n);

histcedges = [-inf edges(2:end-1) inf];

[occur,bin(:,i)] = histc(x(:,i),histcedges,1); %通過直方圖方式計算單個向量的直方圖分布

pmf(:,i) = occur(1:n)./xrow;

end%計算u1和u2的聯合概率密度

jointoccur = accumarray(bin,1,[n,n]); %(xi,yi)兩個資料同時落入n*n等分方格中的數量即為聯合概率密度

jointpmf = jointoccur./xrow;

hx = -(pmf(:,1))'*log2(pmf(:,1)+eps);

hy = -(pmf(:,2))'*log2(pmf(:,2)+eps);

hxy = -(jointpmf(:))'*log2(jointpmf(:)+eps);

mi = hx+hy-hxy;

mi = mi/sqrt(hx*hy);

1 互資訊 資訊熵 條件互資訊 相關

參考於 資訊量可以被看成在學習 x 的值的時候的 驚訝程度 如果有人告訴我們乙個相當不可能的時間發生了,我們收到的資訊要多於我們被告知某個很可能發生的事件發生時收到的資訊。如果我們知道某件事情一定會發生,那麼我們就不會接收到資訊。於是,我們對於資訊內容的度量將依賴於概率分布p x 因此我們想要尋找乙...

點互資訊(PMI)和正點互資訊(PPMI)

如下 在概率論中,如果x和y無關,p x,y p x p y 如果x和y越相關,p x,y 和p x p y 的比就越大。從後兩個條件概率可能更好解釋,在y出現的條件下x出現的概率除以單看x出現的概率,這個值越大表示x和y越相關。log來自於資訊理論的理論,而且 log 1 0 也恰恰表明p x,y...

根據字典資料計算互資訊

from sklearn import metrics import math import numpy as np from sklearn import metrics from sklearn import metrics defnmi a,b 此為計算互資訊的函式,還可以計算標準互資訊 樣本...