Я опоздал с ответом на два года, поэтому, пожалуйста, учтите это, несмотря на то, что проголосовали только несколько раз.
Краткий ответ: используйте мои 1-е и 3-е смелые уравнения, приведенные ниже, чтобы получить то, о чем думает большинство людей, когда они говорят "энтропия" файла в битах. Используйте только 1-е уравнение, если вы хотите энтропию Шеннона, которая на самом деле является энтропией / символом, как он 13 раз говорил в своей статье, о которой большинство людей не знают. Некоторые онлайн-калькуляторы энтропии используют этот, но H Шеннона - это «специфическая энтропия», а не «полная энтропия», которая вызывает столько путаницы. Используйте 1-е и 2-е уравнение, если вы хотите получить ответ между 0 и 1, который является нормализованной энтропией / символом (это не биты / символ, а истинная статистическая мера "энтропийной природы" данных, позволяя данным выбирать свою собственную базу журналов вместо произвольного присвоения 2, е или 10).
Там 4 типа энтропии файлов (данных) длиной N символов с n уникальными типами символов. Но имейте в виду, что, зная содержимое файла, вы знаете его состояние и, следовательно, S = 0. Если быть точным, если у вас есть источник, который генерирует много данных, к которым у вас есть доступ, вы можете рассчитать ожидаемую будущую энтропию / характер этого источника. Если вы используете в отношении файла следующее, более правильно будет сказать, что он оценивает ожидаемую энтропию других файлов из этого источника.
- Энтропия Шеннона (специфическая) H = -1 * сумма (count_i / N * log (count_i / N))
где count_i - количество символов, которое я встретил в N.
Единицы - биты / символ, если log - основание 2, нац / символ, если натуральный лог.
- Нормализованная удельная энтропия: 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) - это то, что все книги называют «энтропией» без (необходимого ИМХО) квалификации. Большинство не уточняет (как это сделал Шеннон), что это бит / символ или энтропия на символ. Называть H "энтропией" - значит говорить слишком свободно.
Для файлов с одинаковой частотой каждого символа: S = N * H = N. Это касается большинства больших файлов битов. Энтропия не производит никакого сжатия данных и, таким образом, полностью игнорирует любые шаблоны, поэтому 000000111111 имеет те же H и S, что и 010111101000 (6 1 и 6 0 в обоих случаях).
Как уже говорили другие, использование стандартной процедуры сжатия, такой как gzip и деление до и после, даст лучшую меру количества ранее существовавшего «порядка» в файле, но это смещено по отношению к данным, которые соответствуют схеме сжатия лучше. Не существует полностью оптимизированного компрессора общего назначения, который мы могли бы использовать для определения абсолютного «порядка».
Еще одна вещь, которую следует учитывать: H меняется, если вы меняете способ выражения данных. H будет другим, если вы выберете разные группы битов (биты, кусочки, байты или шестнадцатеричные значения). Таким образом, вы делите на log (n) где n - количество уникальных символов в данных (2 для двоичного, 256 для байтов), а H будет варьироваться от 0 до 1 (это нормализованная интенсивная энтропия Шеннона в единицы энтропии на символ). Но технически, если встречается только 100 из 256 типов байтов, тогда n = 100, а не 256.
H - это «интенсивная» энтропия, то есть для каждого символа она аналогична удельной энтропии в физике, которая представляет собой энтропию на кг или на моль. Обычная «обширная» энтропия файла, аналогичного физике, S равна S = N * H, где N - количество символов в файле. H будет в точности аналогична части идеального объема газа. Информационная энтропия не может быть просто сделана точно равной физической энтропии в более глубоком смысле, потому что физическая энтропия допускает «упорядоченные», а также неупорядоченные схемы: физическая энтропия получается больше, чем совершенно случайная энтропия (такая как сжатый файл). Один аспект отличается Для идеального газа есть дополнительный фактор 5/2 для учета этого: S = k * N * (H + 5/2), где H = возможные квантовые состояния на молекулу = (xp) ^ 3 / hbar * 2 * sigma ^ 2, где x = ширина прямоугольника, p = общий ненаправленный импульс в системе (рассчитанный по кинетической энергии и массе на молекулу) и sigma = 0,341 в соответствии с принципом неопределенности, дающим только число возможные состояния в пределах 1-го уровня.
Небольшая математика дает более короткую форму нормализованной обширной энтропии для файла:
S = N * H / log (n) = сумма (count_i * log (N / count_i)) / log (n)
Единицами этого являются "энтропия" (которая на самом деле не единица). Нормализовано, чтобы быть лучшей универсальной мерой, чем единицы «энтропии» N * H. Но это также не должно называться «энтропией» без пояснения, потому что нормальное историческое соглашение ошибочно называет H «энтропией» (что противоречит пояснения, сделанные в тексте Шеннона).