2016-09-16 3 views
2

Я пытаюсь понять энтропию вектора. Я начал путем генерации образца размера 1000000 от нормального распределения со средним значением 130 и дисперсией 1:Matlab - сравнение энтропии гистограмм

kk=normrnd(130,20,1000000,1); 
kk=uint8(kk);%did this or else the result was 0 
entropy(kk) 

imhist КК является:

enter image description here

В результате энтропии 6,3686

Затем я сгенерировал образец размером 1000 из нормального распределения со средним значением 130 и дисперсией 1, следуя тем же самым шагам, что и раньше, чтобы получить более шумное распределение, вот гистограмма:

enter image description here

И энтропия 6,2779. Так что кажется, что шумнее распределение, тем меньше энтропия. Я вычислил энтропии для других размеров выборки нормального распределения с тем же средним значением и дисперсией, и он изменяется в соответствии с этим. Но правильно? Это правильный способ сравнить энтропии распределения гистограмм?

[ИЗДАНИЕ]

После того, что obchardon сказал я исследовал немного больше. Это распределение:

kk1=normrnd(130,75,1000000,1);%entropy=7.6983 

дает мне большую энтропию, чем:

kk2=normrnd(130,20,1000000,1);%entropy=6.3686 

но это Энтропия меньше kk1 и kk2:

kka2=normrnd(130,150,100000,1);%entropy=6.1660 

Как это возможно?

ответ

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 прав: энтропия является функцией (только) ее дисперсии, но только тогда, когда n-->inf.

maximumentropyvalue

enter image description here

+0

Хорошая точка. Я был отброшен всем «гауссовским и шумным гауссовым» сравнением и проигнорировал эффект от дискретного характера вектора. Одно из важных отличий абсолютной энтропии от дифференциальной энтропии! Спасибо, что поймал это. (также, я думаю, вы хотели сказать '- (n * (1/n) * log2 (1/n))' выше) –

+0

Итак, я попробовал то, что вы говорите в разных дистрибутивах. Величина энтропии уменьшается по мере увеличения дисперсии, но только тогда, когда стороны вокруг среднего превышают 0. Иначе это увеличивает значение энтропии, поскольку существуют некоторые значения, которые имеют одинаковую вероятность 0 (или интенсивность 0, если говорить о гистограммах). Это правильно? – user2952272

+1

В этом ОСОБЕННОМ случае энтропия будет уменьшаться, если дисперсия сильно увеличится, потому что вы применяете эту строку 'kk = uint8 (kk)', так что, конечно, если ваша дисперсия = 1000 (например), то почти все ваши значения будут = 0 или = 255 (поэтому энтропия искусственно уменьшается)! Поэтому я рекомендую вам использовать другую формулу, которая может принимать значение <0 и значение> 255, и на этот раз энтропия будет всегда увеличиваться, если дисперсия увеличивается. – obchardon

0

Ваш вывод о том, что «более шумное распределение, чем меньше энтропия», неверно. Для гауссовой распределенной случайной величины энтропия является функцией ее дисперсии; Я предполагаю, что ваш 2-й вектор просто имеет слегка меньшую дисперсию (что также кажется визуально), но кроме того, что их энтропии довольно схожи.

(обратите внимание на Bishop с.52, рис 1,30 для более полного объяснения)

+0

PS. Это не дисперсия 1. –

+1

Я могу ошибаться, но я думаю, что длина вектора влияет на значение энтропии. (см. мой ответ) – obchardon

Смежные вопросы