Matlab - сравнение энтропии гистограмм

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

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

imhist kk:

введите здесь описание изображения

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

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

введите здесь описание изображения

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

[ВЕРСИЯ]

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

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

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


person user2952272    schedule 16.09.2016    source источник


Ответы (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.

максимальное значение

введите здесь описание изображения

person obchardon    schedule 16.09.2016
comment
Хорошая точка зрения. Я был сбит с толку всем сравнением Гаусса и шумного Гаусса и проигнорировал эффект от дискретной природы вектора. Одно из важных отличий абсолютной энтропии от дифференциальной энтропии! Спасибо, что поймали это. (также, я думаю, вы хотели сказать -(n*(1/n)*log2(1/n)) выше) - person Tasos Papastylianou; 16.09.2016
comment
Итак, я попробовал то, что вы говорите, в различных дистрибутивах. Значение энтропии уменьшается по мере увеличения дисперсии, но только тогда, когда стороны вокруг среднего значения выше 0. В противном случае это приводит к увеличению значения энтропии, поскольку есть некоторые значения, которые имеют одинаковую вероятность 0 (или интенсивность 0, если мы говорим о гистограммах). ). Это правильно? - person user2952272; 16.09.2016
comment
В этом КОНКРЕТНОМ СЛУЧАЕ энтропия уменьшится, если дисперсия сильно увеличится, потому что вы применяете эту линию kk=uint8(kk), поэтому, конечно, если ваша дисперсия = 1000 (например), почти все ваше значение будет = 0 или = 255 (таким образом, энтропия искусственно уменьшить) ! Поэтому я рекомендую вам использовать другую формулу, которая может учитывать значение ‹ 0 и значение › 255, и на этот раз энтропия всегда будет увеличиваться при увеличении дисперсии. - person obchardon; 16.09.2016
comment
И как я могу сравнить энтропию между негауссовыми распределениями? Например, гистограммы реальных изображений в градациях серого? - person user2952272; 16.09.2016
comment
Если все значения находятся в диапазоне от 0 до 255, этот код будет работать. Однако, если у вас есть значение ‹ 0 или › 255, вам нужно использовать int16 (или int32... в зависимости от вашего значения) вместо uint8 . Затем настройте мой код для расчета энтропии (поскольку встроенная функция энтропии может управлять только массивом uint8) - person obchardon; 16.09.2016

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

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

person Tasos Papastylianou    schedule 16.09.2016
comment
PS. Это не дисперсия 1. - person Tasos Papastylianou; 16.09.2016
comment
Я могу ошибаться, но я думаю, что длина вектора влияет на значение энтропии. (см. мой ответ) - person obchardon; 16.09.2016