我试图了解矢量的熵。我开始从正态分布生成大小为1000000的样本,平均值为130,方差为1:
<button ng-click="bulkMode = !bulkMode">
kk的kk=normrnd(130,20,1000000,1);
kk=uint8(kk);%did this or else the result was 0
entropy(kk)
是:
熵结果为6.3686
然后我从正态分布生成大小为1000的样本,平均值为130,方差1遵循与之前相同的步骤以获得更大的分布,这里是直方图:
熵是6.2779。所以分布越嘈杂,熵就越小。我计算了具有相同均值和方差的正态分布的其他样本大小的熵,并且它根据此变化。但我是对的吗?这是比较直方图分布的熵的正确方法吗?
[版]
之后,obchardon说我调查了一下。这个分布:
imhist
给了我更大的熵:
kk1=normrnd(130,75,1000000,1);%entropy=7.6983
但是这个熵小于kk2=normrnd(130,20,1000000,1);%entropy=6.3686
和kk1
:
kk2
这怎么可能?
答案 0 :(得分:2)
熵公式偏向于小向量:
例如:
我们生成一个10x1正态分布矢量:
n = 10
kk=normrnd(130,20,n,1);
kk=uint8(kk);
现在我们计算熵:
kk = im2double(kk);
P = hist(kk(:), linspace(0, 1, 256));
P = P(:); P = P(P(:)>0); %we need to delete the value where P = 0, because log(0) = Inf.
P = P/n;
E = -sum(P.*log2(P))
因此,在此示例中,熵永远不会高于-sum(n*(1/n)*log2(1/n))
= 3.32
! (最坏的情况,每个kk值是不同的)
所以@TasosPapastylianou是对的:熵是(仅)它的方差的函数,但仅在时。
答案 1 :(得分:0)
你的结论是“嘈杂的分布,熵越小”是不正确的。对于高斯分布随机变量,熵是其方差的函数;我猜你的第二个矢量恰好有一个稍小的方差(在视觉上似乎也是如此),但除此之外他们的熵非常相似。
(请查看Bishop p.52,图1.30以获得更全面的解释)