Чому я отримую ентропію інформації більше 1?


11

Я реалізував таку функцію для обчислення ентропії:

from math import log

def calc_entropy(probs):
    my_sum = 0
    for p in probs:
        if p > 0:
            my_sum += p * log(p, 2)

    return - my_sum

Результат:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
1.1488348542809168
>>> from scipy.stats import entropy # using a built-in package 
                                    # give the same answer
>>> entropy([1/7.0, 1/7.0, 5/7.0], base=2)
1.1488348542809166

Я розумів, що ентропія становить від 0 до 1, 0 означає дуже певно, а 1 означає дуже невизначено. Чому я отримую міру ентропії більше 1?

Я знаю, що якщо збільшити розмір бази журналів, міра ентропії буде меншою, але я подумав, що база 2 є стандартною, тому я не думаю, що це проблема.

Я, мабуть, пропускаю щось очевидне, але що?


Чи не залежить база від виду ентропії? Чи не ентропія бази 2 Шеннона, а логічна логічна статистика природного журналу?
Олексій

@ Алексис, але чи не ентропія Шеннонса між 0 і 1?
Акавал

1
Ні: Ентропія Шеннона не негативна.
Олексій

2
Здається, що немає нічого поганого в тому, щоб ентропія була більшою за 1, якщо у мене більше двох подій, а значення ентропії становить від 0 до 1, тільки в окремому випадку, коли мої події є бінарними (у мене дві події).
Акавал

Відповіді:


17

Ентропія - це не те саме, що ймовірність .

Ентропія вимірює "інформацію" або "невизначеність" випадкової величини. Коли ви використовуєте базу 2, вона вимірюється в бітах; і в змінній може бути більше одного біта інформації.

У цьому прикладі один зразок "містить" близько 1,15 біт інформації. Іншими словами, якби вам вдалося прекрасно стиснути серію зразків, вам в середньому знадобиться стільки біт на зразок.


Дякую тобі. Я думаю, що я це отримую, але хочу переконатися. Я таке твердження правильно? Якщо у мене є лише два результати, то більшість інформації, яку я можу отримати, - це 1 біт, але якщо у мене більше 2 результатів, я можу отримати більше 1 біта інформації.
Акавал

Так. (Наприклад, розглянемо чотири рівномірно розподілені результати, які могли б бути сформовані двома справедливими кидками монет на зразок.)
ЗР.

Щоб додати до цього, ентропія коливається від 0-1 для задач бінарної класифікації та 0 до бази даних журналу 2 k, де k - кількість класів у вас.
MichaelMMeskhi

13

Максимальне значення ентропії - , де - кількість категорій, які ви використовуєте. Його числове значення природно залежатиме від основи логарифмів, які ви використовуєте.logkk

Використовуючи логарифми базових 2 як приклад, як у питанні: дорівнює а - , тому результат, більший за , безумовно, помиляється, якщо кількість категорій дорівнює або . Значення більше буде помилковим, якщо воно перевищує .log210log2211121log2k

З огляду на це, досить часто застосовується масштабування ентропії за допомогою , так що результати потім падають між і ,logk01


не знав про це, дякую. Отже, в основному основа логарифму повинна бути такою ж, як довжина зразка, а не більше?
Fierce82

2
Немаловажна і довжина зразка. Це скільки у вас категорій.
Нік Кокс

просто для уточнення, це k кількість можливих категорій чи кількість категорій, для яких ви обчислюєте ентропію? напр. У мене є 10 можливих категорій, але є 3 вибірки, що представляють 2 категорії в системі, для якої я обчислюю ентропію. є k у цьому випадку 2?
eljusticiero67

Категорії, які не зустрічаються на практиці, спостерігають нульову ймовірність і не впливають на результат ентропії. Це сильна конвенція, яка може бути виправдана більш жорстко, що слід вважати нульовим (основа логарифмів тут несуттєва). 0log0
Нік Кокс

-2

Спробуйте це (зверніть увагу на основу ):e

from math import log

def calc_entropy(probs):
    my_sum = 0
    for p in probs:
        if p > 0:
            my_sum += p * log(p)

    return - my_sum

Давання:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
0.796311640173813

Я знаю, що я можу це зробити, але в мене склалося враження, що використання бази журналів 2 також повинно давати значення ентропії між 0 і 1. Чи можна використовувати базу журналу 2 лише тоді, коли у мене є дві ймовірності?
Акавал

Використання вимірює кількість бітів, необхідних для характеристики невизначеності ряду -значень. Дивіться xkcd.com/936 та en.wikipedia.org/wiki/Entropy_%28information_theory%29log2p
Олексій

Ця відповідь підказує, що ентропія, виражена в наці, не повинна перевищувати , але я сумніваюся, що це інформація, яку ви мали намір передати, бо це просто неправда. 1
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.