Як практично виміряти ентропію файлу?


9

Зараз я намагаюсь оцінити багато непотрібної (фактичної) інформації, яку містить мій файл. Деякі називають це кількістю ентропії.

Звичайно, є стандартний p (x) log {p (x)}, але я думаю, що Шеннон розглядав це лише з точки зору передачі, хоча каналу. Отже, формула вимагає розміру блоку (скажімо, у бітах, 8 зазвичай). Для великого файлу цей розрахунок є досить марним, ігноруючи кореляцію між символами між великими та великими відстанями.

Існують бінарні дерева та методи Зів-Лемпеля, але вони здаються дуже академічними за своєю природою.

Стиснення також розглядають як міру ентропії, але, здається, немає нижньої межі ступеня стиснення. Для мого файлу hiss.wav,

  • оригінальний hiss.wav = 5,2 Мб
  • ентропія за формулою Шеннона = 4,6 Мб
  • hiss.zip = 4,6 Мб
  • шис.7z = 4,2 Мб
  • hiss.wav.fp8 = 3,3 Мб

Чи існує якийсь розумно практичний метод вимірювання кількості ентропії в hiss.wav?


1
Я не розумію, що ви маєте на увазі під "високоакадемічним".
Девід Річербі

Мертвий ард. Я б міг подумати, що при масштабах масштабів дослідницьких доларів, витрачених у глобальному масштабі на максимізацію передачі та зберігання даних, існуватиме більш розроблений спосіб оцінити, з якою кількістю затьмарених речей ви насправді маєте справу. Я б не подумав, що це виходить за межі можливостей, щоб існувала файлова утиліта, яка передає вам деякі дані, що виводять теоретичну оцінку ентропії. Тільки в що грають виробники телефонів та дисків?
Пол Ушак

Відповіді:


9

Ентропія - це ознака випадкової величини . Даний файл має нульову ентропію, оскільки він є постійним. Ентропія має сенс у багатьох ситуаціях, коли немає каналу, і ви можете застосувати її до випадкового ансамблю, скажімо, WAV-файлів, згенерованих із заданого джерела. У цьому випадку ваш - це весь файл WAV.x

Фактичний файл WAV (за винятком заголовка) можна вважати генерованим якимсь марківським джерелом. Це джерело видає амплітуди звуків ("зразки") у послідовності, кожна залежно від тих, що передують йому. Після дуже тривалого запуску процесу ентропія кожного зразка (точніше, умовна ентропія з урахуванням попередніх зразків) стає дуже близькою до деякого граничного значення, яке ми визначаємо як ентропія джерела. Ентропія вибірок в разів перевищує цю кількість (в межах; знову ж таки, точніше, ми вимірюємо умовну ентропію). Лемпель і Зів показали, що якщо ентропія вибірки є бітами, то їх алгоритм стискає зразків доNNHNHN+o(N)біт, з високою ймовірністю (ймовірність перевищує вибірки). Стиснення Lempel – Ziv є досить популярним у практиці, наприклад, у популярному gzipформаті.

Завдяки цьому результату Лемпеля та Жива ентропію джерела можна наблизити, стиснувши довгу послідовність зразків, використовуючи алгоритм Лемпель-Зів. Це не оцінює ентропію конкретних вибірок, що не є чітко визначеною концепцією (константна послідовність має нульову ентропію), а швидше ентропією джерела, що її генерує.

Пов'язане поняття - алгоритмічна ентропія , також відома як складність Колмогорова . Це довжина найкоротшої програми, що генерує ваш файл. Ця кількість має сенс для окремого файлу. У випадку файлу, генерованого випадковим джерелом, теорема Лемпеля – Зіва показує, що алгоритмічна ентропія файлу з великою ймовірністю обмежена ентропією Шеннона. На жаль, алгоритмічна ентропія не піддається обчисленню, тому це скоріше теоретична концепція.

Для завершення картини я пропоную прочитати статтю Шеннона про передбачення та ентропію друкованої англійської мови для іншого підходу до оцінки ентропії джерела.


Я маю. І папір Schurmann & Grassberger. Виходячи з їх оціночної ентропії для англійської мови, здається, що найкраща оцінка ентропії, яку ми можемо отримати, - це за рахунок стиснення з варіантом PAQ8, як fp8. Там і мої результати досить добре виходять за шекспірівську прозу.
Пол Ушак

Здається, що проблема полягає в тому, що я б подумав, що для ентропії джерела має бути обмежене теоретичне значення. Визначення методом стиснення відображає лише ефективність алгоритму стиснення. Емпірично ваш gzip хороший, але 7z краще. І fp8 набагато краще, як показано в моєму запитанні. Чи можу я виявити, що hiss.wav містить лише 10 байт загальної ентропії, коли я використовую fp12000 в далекому майбутньому?
Пол Узак

Ентропія не є властивістю файлу; кожен окремий файл має нульову ентропію. Швидше, ентропія - це властивість випадкового джерела. Міра випадковості, яка підходить для конкретних файлів, є складністю Колмогорова (також відома як алгоритмічна ентропія), але, на жаль, ця міра не піддається обчисленню.
Yuval Filmus

Коли ви стискаєте файл для оцінки ентропії джерела, ви використовуєте теорему, яка гарантує, що швидкість стиснення даних, що генерується джерелом, наближається до ентропії джерела. Однак фактичні утиліти стиснення не застосовують ванільний алгоритм Lempel – Ziv, а більш практичну його версію. Якщо ви хочете оцінити ентропію, можливо, вам слід переосмислити алгоритм з цією метою.
Yuval Filmus

Я зняв неконструктивну дискусію; коментарі не для тривалих дискусій, за винятком покращення публікації. Якщо ви хочете чесно обговорити питання ентропії, створіть чат. Не забудьте тримати це цивільно.
Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.