Strumenti Utente

Strumenti Sito


informazione_mutua_puntuale

Informazione mutua puntuale

Uguaglianze e definizioni

Formula della probabilità congiunta applicata ai bigrammi: $$ 1)\hspace{4pt} P(x_{t}=a,\hspace{4pt}x_{t+1}=b)=P(x_{t+1}=b\hspace{4pt}|\hspace{4pt} x_{t}=a)P(x=a) $$ Probabilità condizionata (discende da 1): $$ 2)\hspace{4pt} P(x_{t+1}=b\hspace{4pt}|\hspace{4pt} x_{t}=a)= \frac{P(x_{t}=a,\hspace{4pt}x_{t+1}=b)}{P(x=a)} $$

Mutua informazione puntuale: $$ 3)\hspace{4pt} IMP=log_{2}\hspace{4pt}\frac{P(x_{t+1}=b\hspace{4pt}|\hspace{4pt} x_{t}=a)}{P(x=b)} $$ Sostituendo in base a 2): $$ 4)\hspace{4pt} IMP=log_{2}\hspace{4pt}\frac{P(x_{t}=a,\hspace{4pt}x_{t+1}=b)}{P(x=a)P(x=b)} $$ In base alla definizione dell'informazione: $$ 5a)\hspace{4pt} I(x=a)\hspace{4pt}=\hspace{4pt}log_{2}\hspace{4pt}\frac{1}{P(x=a)}\hspace{4pt}=\hspace{4pt}-log_{2}P(x=a) $$ Da 4) e 5a), per le proprietà dei logaritmi: $$ 5b)\hspace{4pt} IMP\hspace{4pt}=\hspace{4pt} log_{2}\hspace{4pt}\frac{1}{P(x=a)}\hspace{4pt}+\hspace{4pt}log_{2}\hspace{4pt}\frac{1}{P(x=b)}\hspace{4pt} +\hspace{4pt} log_{2}\hspace{4pt} P(x_{t}=a,\hspace{4pt}x_{t+1}=b) \hspace{4pt} =$$ $$= \hspace{4pt} I(x=a)+I(x=b)-I(x_{t}=a,\hspace{4pt}x_{t+1}=b) $$

Comportamento dell'informazione mutua puntuale

Se le probabilità dei due elementi del bigramma sono perfettamente indipendenti l'una dall'altra allora: $$ 6a)\hspace{4pt} P(x_{t+1}=b\hspace{4pt}|\hspace{4pt} x_{t}=a)= P(x=b) $$ Da 3) e 6a): $$ 6b)\hspace{4pt} IMP\hspace{4pt}=\hspace{4pt}log_{2}\hspace{4pt}\frac{P(x=b)}{P(x=b)}\hspace{4pt}=\hspace{4pt}log_{2}\hspace{4pt}1=0 $$


Se, data la conoscenza del primo elemento, si ha la certezza dell'occorrenza del secondo allora: $$ 7a) \hspace{4pt} P(x_{t+1}=b\hspace{4pt}|\hspace{4pt} x_{t}=a)= 1 $$ Da 3) e 7a): $$ 7b)\hspace{4pt} IMP\hspace{4pt}=\hspace{4pt}log_{2}\hspace{4pt}\frac{1}{P(x=b)}\hspace{4pt}=\hspace{4pt}I(x=b) $$

Funzioni in python

imp.py
import re
from numpy import log2
 
#preparazione del testo "Pinocchio"
f=open('testi/collodi_pinocchio.txt', mode='r', encoding='iso-8859-1')
testo=f.read()
testo=testo[1704:]
testo=re.sub("'","' ", testo)
testo=re.sub('[\.,;:\-?!]{1}','',testo)
testo=testo.lower()
testo=testo.split()
 
#funzioni
NGRAMMI = lambda n, testo: [tuple(list(['$$$']*(n-1)+testo)[i:i+n]) for i in range(len(testo))]
I = lambda x, testo: -log2(testo.count(x)/len(testo))
bigrammi = NGRAMMI(2,testo)
print("IMP di 'il burattino'")
print(I('il',testo) + I('burattino',testo)-I(('il','burattino'),bigrammi))
print("\n")
print("IMP di 'capelli turchini'")
print(I('capelli',testo) + I('turchini',testo)-I(('capelli','turchini'),bigrammi))
informazione_mutua_puntuale.txt · Ultima modifica: 2021/10/29 21:24 da deleteme