Come misurare praticamente l'entropia di un file?


9

Sto cercando di misurare ora molte informazioni (ridondanti) non ridondanti contenute nel mio file. Alcuni lo chiamano la quantità di entropia.

Ovviamente esiste lo standard p (x) log {p (x)}, ma penso che Shannon lo considerasse solo dal punto di vista della trasmissione attraverso un canale. Quindi la formula richiede una dimensione di blocco (diciamo in bit, in genere 8). Per un file di grandi dimensioni, questo calcolo è abbastanza inutile, ignorando le correlazioni a breve o lunga distanza tra i simboli.

Esistono metodi di albero binario e Ziv-Lempel, ma questi sembrano di natura altamente accademica.

Anche la compressibilità è considerata una misura di entropia, ma non sembra esserci un limite inferiore per quanto riguarda il grado di compressione. Per il mio file hiss.wav,

  • hiss.wav originale = 5,2 MB
  • entropia tramite la formula di Shannon = 4.6 MB
  • hiss.zip = 4.6 MB
  • hiss.7z = 4.2 MB
  • hiss.wav.fp8 = 3.3 MB

Esiste un metodo ragionevolmente praticabile per misurare quanta entropia esiste all'interno di hiss.wav?


1
Non capisco cosa intendi per "altamente accademico".
David Richerby,

Ard 'morto. Avrei pensato che con la scala dei dollari della ricerca spesi a livello globale per massimizzare la trasmissione e l'archiviazione dei dati, ci sarebbe un modo più sviluppato di stimare quanta roba dannata stai effettivamente affrontando. Non avrei pensato oltre i limiti della possibilità che ci sarebbe un'utilità di file che si passa sopra alcuni dati che genera la stima dell'entropia teorica. A cosa stanno giocando i produttori di videocamere e dischi?
Paul Uszak,

Risposte:


9

X

NNHNHN+o(N)gzip

A causa di questo risultato di Lempel e Ziv, l'entropia di una sorgente può essere approssimata comprimendo una lunga sequenza di campioni usando l'algoritmo Lempel-Ziv. Questo non stima l'entropia dei campioni specifici, che non è un concetto ben definito (una sequenza costante ha zero entropia), ma piuttosto l'entropia della fonte che lo genera.

Un concetto correlato è l' entropia algoritmica , nota anche come complessità di Kolmogorov . È la lunghezza del programma più breve che genera il tuo file. Questa quantità ha senso per un singolo file. Nel caso di un file generato da una fonte casuale, il teorema di Lempel-Ziv mostra che l'entropia algoritmica di un file è limitata, con alta probabilità, dalla sua entropia di Shannon. Sfortunatamente, l'entropia algoritmica non è calcolabile, quindi è più un concetto teorico.

Per completare il quadro, suggerisco di leggere l'articolo di Shannon su Predizione ed entropia dell'inglese stampato per un approccio diverso alla stima dell'entropia di una fonte.


Io ho. E la carta Schurmann & Grassberger. Sulla base delle loro entropie stimate per l'inglese, sembra che la migliore stima dell'entropia che possiamo ottenere sia tramite compressione con una variante PAQ8 come fp8. C'è e i miei risultati si sposano abbastanza bene con la prosa shakespeariana.
Paul Uszak,

Il problema sembra essere che avrei pensato che ci fosse un valore teorico limitante per l'entropia di una fonte. La determinazione mediante compressione riflette solo l'efficienza dell'algoritmo di compressione. Empiricamente, il tuo gzip è buono, ma 7z è migliore. E fp8 è molto meglio come mostrato nella mia domanda. Potrei scoprire che hiss.wav contiene solo 10 byte di entropia totale quando uso fp12000 in un futuro lontano?
Paul Uszak,

L'entropia non è una proprietà di un file; ogni singolo file ha zero entropia. Piuttosto, l'entropia è una proprietà di una fonte casuale. Una misura di casualità che è appropriata per file specifici è la complessità di Kolmogorov (nota anche come entropia algoritmica), ma sfortunatamente questa misura non è calcolabile.
Yuval Filmus,

Quando comprimi un file per stimare l'entropia di una fonte, usi un teorema che garantisce che la velocità di compressione dei dati generati dalla fonte si avvicina all'entropia della fonte. Tuttavia, le attuali utilità di compressione non applicano l'algoritmo Lempel-Ziv alla vaniglia, ma piuttosto una versione più pratica di esso. Se vuoi stimare l'entropia, forse dovresti reimplementare l'algoritmo con questo obiettivo in mente.
Yuval Filmus,

Ho rimosso una discussione non costruttiva; i commenti non sono per lunghe discussioni se non per migliorare il post a portata di mano. Se vuoi discutere onestamente di questioni di entropia, crea una chat room. Ricorda di tenerlo civile.
Raffaello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.