Lo scopo del programma e' di approssimare una funzione a valori discreti o un predicato mediante un albero di decisione (il nome e' un acrononimo per "inductive decision three").
Un albero di decisione e' un struttura dati in cui i nodi interni corrispondono gli attributi di classificazione, gli archi ne rappresentano i possibili valori, e le foglie indicano il risultato della funzione approssimata (valore booleano nel caso di predicati).
Un albero di decisione puo' anche essere visto come un insieme di regole
...Ad esempio:
if attributo1=valorea then funzione_approx = f1
if attributo1=valoreb and attributo2 =valorec then funzione_approx = f2
...
<tempo>regole corrispondenti:
|-(piovoso)----------------------------------[spiaggia_affollata=no]
|-(assolato)-<mese>
|--(luglio)--<giorno>
| |-----(festivo)---[spiaggia_affollata=si]
| |-----(feriale)---[spiaggia_ affollata=no]
|--(agosto)--------------------[spiaggia_affollata=si]
if tempo=piovoso then spiaggia_affollata=noL'albero di decisione viene costruito applicando ricorsivamente una procedura di scelta dell'attributo piu' significativo, ai fini della classificazione, tra quelli non ancora utilizzati.
(or) if tempo=assolato and mese=luglio and giorno=festivo then spiaggia_affollata=si
(or) if tempo=assolato and mese=luglio and giorno=feriale then spiaggia_affollata=no
(or) if tempo=assolato and mese=agosto then spiaggia_affollata=si
Per ogni arco, viene considerato il sottoinsieme S degli esempi E, compatibili con i vincoli specificati dai nodi precedenti.
Per la valutazione della "impurita'" della classificazione degli
esempi, si utilizza l'entropia dell'insieme S, misurata rispetto
al valore di classificazione
dove, con p+ e p-, sono state indicate rispettivamente le proporzioni di esempi positivi e negativi dell'insieme S.H (S) = - p+ log2 p+ - p- log2 p-
In base a questa, si introduce una misura del guadagno di informazione
Gain(S,A), che la scelta di un determinato attributo A,
puo' indurre sull'insieme S
dove, Values(A) indica l'insieme dei possibili valori dell'attributo A , e Sv indica il sottoinsieme di S per cui l'attributo A valga v.Gain(S,A) = H(S) - Sum ( |Sv|/|S| H(Sv) )
v in Values(A)
Dato un insieme di esempio, esistono diversi alberi di decisione compatibili. ID3 esegue una ricerca di tipo "hill climbing" di un albero di decisione di lunghezza minima, in grado di rappresentare gli esempi con un'ipotesi "semplice".
Il fatto che non vengano riconsiderate le scelte gia' effettuate, non assicura la minimalita' del risultato, che richiederebbe invece una scansione esaustiva di tutti gli alberi compatibili.
In applicazioni reali, gli esempi presentano errori o casi insoliti, che possono provocare un eccessiva complessita' dell'albero di decisione, determinata dalla consistenza del risultato con l'intero insieme di esempio. Questo puo' comportare una scarsa capacita' di generalizzazione rispetto alla distribuzione reale dei casi da classificare.
Per ovviare al problema, sono stati utilizzati con successo metodi di
"potatura" (post pruning), che, rispetto a misure statistiche
di accuratezza delle regole prodotte, riducono il numero di regole considerate.