La dipendenza funzionale
Una dipendenza funzionale è una relazione che si instaura tra due proposizioni. E' anche detta determinazione.
A cosa serve? E' usata per migliorare l'efficienza di un sistema informativo nelle operazioni di ricerca. E' anche usata come conoscenza pregressa nei sistemi di apprendimento induttivo ( machine learning ).
Un esempio pratico
Ho due proposizioni P e Q.
P = x è italiano
Q = x parla italiano
Il database del training set è composto da cinque record (x1,...,x5).
Ogni record identifica una persona ed è composto da quattro attributi (Nome, Cittadinanza, Lingua e Altezza).
Analizzando i dati si intravede subito una dipendenza funzionale.
Posso rappresentarla con la logica del primo ordine nel seguente modo:
oppure in modo più sintetico tramite la seguente notazione:
La dipendenza funzionale afferma che ogni persona italiana parla l'italiano.
E così via.
Pro e contro delle dipendenze funzionali
Vantaggi
Le dipendenze funzionali migliorano l'efficienza del processo di apprendimento, perché si riduce lo spazio delle ipotesi da analizzare.
Nota. La complessità computazionale di un algoritmo che usa le dipendenze funzionali è nettamente inferiore rispetto a un semplice algoritmo di costruzione degli alberi decisionali.
Esempio
Per capire se una persona parla una lingua, gli attributi Nome e Altezza sono irrilevanti.
Quindi possono essere eliminati.
Svantaggi
Non tutte le dipendenze funzionali sono rilevanti. Alcune dipendenze lo sono, mentre altre no.
Inoltre, esistono dipendenze che sono rilevanti soltanto apparentemente ( cd falsi amici ). E sono le più pericolose.
Esempio
Se entrambe le persone italiane del training set si chiamassero Mario, potrei dedurre che tutti gli italiani si chiamano Mario o soltanto chi si chiama Mario parla l'italiano.
E ovviamente, così non è.
Una base di conoscenza ( conoscenza pregressa ) costruita su false dipendenze funzionali è pericolosa perché fuorviante.
Pertanto, trovare le dipendenze funzionali rilevanti è un aspetto molto importante.
Nota. A cosa servirebbe sviluppare sviluppare un algoritmo che trova velocemente la risposta sbagliata?