Я запізнився з відповідями на два роки, тож, будь ласка, розгляньте це, незважаючи на лише кілька голосів за.
Коротка відповідь: використовуйте моє 1-е та 3-е напівжирне рівняння нижче, щоб отримати те, про що думає більшість людей, коли вони кажуть "ентропія" файлу бітами. Використовуйте лише 1-е рівняння, якщо ви хочете ентропію H Шеннона, яка насправді є ентропією / символом, як він 13 разів зазначив у своїй роботі, чого більшість людей не знають. Деякі калькулятори ентропії в Інтернеті використовують цей, але Н Шеннона - це "специфічна ентропія", а не "повна ентропія", що викликало стільки плутанини. Використовуйте 1-е та 2-е рівняння, якщо ви хочете, щоб відповідь від 0 до 1 була нормалізованою ентропією / символом (це не біти / символ, а справжній статистичний показник "ентропійного характеру" даних, дозволяючи даним вибирати власну базу журналів замість довільного присвоєння 2, e або 10).
Існує 4 типи ентропії файлів (даних) із N символів довжиною з n унікальними типами символів. Але майте на увазі, що, знаючи вміст файлу, ви знаєте стан, в якому він перебуває, а отже S = 0. Якщо бути точним, якщо у вас є джерело, яке генерує багато даних, до яких ви маєте доступ, тоді ви можете розрахувати очікувану майбутню ентропію / характер цього джерела. Якщо ви використовуєте наступне у файлі, точніше сказати, що він оцінює очікувану ентропію інших файлів із цього джерела.
- Ентропія Шеннона (конкретна) H = -1 * сума (count_i / N * log (count_i / N)),
де count_i - це кількість разів, коли я зазнав символ у N.
Одиниці виміру - це біти / символ, якщо журнал - база 2, nats / символ якщо натуральний журнал.
- Нормалізована специфічна ентропія: H / log (n)
Одиниці виміру є ентропією / символом. Діапазони від 0 до 1. 1 означає, що кожен символ зустрічався однаково часто, а біля 0 - всі символи, крім 1, траплялися лише один раз, а решта дуже довгого файлу була іншим символом. Журнал знаходиться в тій же основі, що і H.
- Абсолютна ентропія S = N * H
Одиниці - це біти, якщо log - основа 2, nats - якщо ln ()).
- Нормалізована абсолютна ентропія S = N * H / log (n)
Одиниця виміру "ентропія", варіюється від 0 до N. Журнал знаходиться в тій же основі, що і H.
Хоча остання є найправдивішою "ентропією", перша (ентропія Шеннона H) - це те, що всі книги називають "ентропією" без (необхідної кваліфікації IMHO). Більшість не уточнює (як це зробив Шеннон), що це біти / символ або ентропія на символ. Називання Н "ентропією" говорить занадто розкуто.
Для файлів з однаковою частотою кожного символу: S = N * H = N. Це стосується більшості великих файлів бітів. Ентропія не здійснює жодного стиснення даних і, таким чином, повністю не знає жодних шаблонів, тому 000000111111 має ті самі H і S, що і 010111101000 (6 1 і 6 0 в обох випадках).
Як сказали інші, використання стандартної процедури стиснення, як gzip та ділення до і після, дасть кращий показник кількості вже існуючого "замовлення" у файлі, але це упереджено щодо даних, які краще відповідають схемі стиснення. Не існує ідеально оптимізованого компресора загального призначення, який ми можемо використовувати для визначення абсолютного "замовлення".
Ще одне, що слід врахувати: H змінюється, якщо ви змінюєте спосіб вираження даних. H буде іншим, якщо ви виберете різні групи бітів (біти, пересічки, байти або шістнадцяткові символи). Отже, ви ділитесь на log (n), де n - кількість унікальних символів у даних (2 для двійкових, 256 для байтів), а H коливатиметься від 0 до 1 (це нормована інтенсивна ентропія Шеннона в одиницях ентропії на символ) . Але технічно, якщо з 256 типів байтів трапляється лише 100, то n = 100, а не 256.
H - це "інтенсивна" ентропія, тобто вона є символом, що є аналогом специфічної ентропії у фізиці, яка є ентропією на кг або на моль. Регулярною "великою" ентропією файлу, аналогічного фізичному S, є S = N * H, де N- кількість символів у файлі. H був би точно аналогічний частині ідеального об'єму газу. Інформаційна ентропія не може бути просто рівною фізичній ентропії в більш глибокому розумінні, оскільки фізична ентропія допускає "впорядковані", а також невпорядковані механізми: фізична ентропія виходить більше, ніж повністю випадкова ентропія (наприклад, стислий файл). Один аспект різного Для ідеального газу існує додатковий коефіцієнт 5/2, щоб врахувати це: S = k * N * (H + 5/2), де H = можливі квантові стани на молекулу = (xp) ^ 3 / hbar * 2 * сигма ^ 2 де x = ширина коробки, p = загальний неспрямований імпульс в системі (розрахований з кінетичної енергії та маси на молекулу) і сигма = 0,341 відповідно до принципу невизначеності, що дає лише кількість можливі стани в межах 1-ї розробки
Трохи математики дає коротший вигляд нормалізованої великої ентропії для файлу:
S = N * H / log (n) = сума (count_i * log (N / count_i)) / log (n)
Одиницями цього є "ентропія" (що насправді не є одиницею). Він нормований як кращий універсальний показник, ніж одиниці "ентропії" N * H. Але його також не слід називати "ентропією" без роз'яснень, оскільки звичайною історичною конвенцією є помилково називати H "ентропією" (що суперечить уточнення, зроблені в тексті Шеннона).