Algoritmul ID3
ID3 este un algoritm de construire inductiva a unor arbori de decizie.
Un arbore de decizie are la intrare un exemplu descris prin valori ale unui set de atribute si produce la iesire o valoare logica (decizie). Fiecare nod intern din arbore reprezinta un test al valorii unui atribut, iar arcele din arbore corespund valorilor posibile ale atributului testat. Nodurile frunza specifica decizia la care se ajunge pentru calea care duce la acel nod.
Un exemplu de arbore de decizie care raspunde la intrebarea "este patruped?"
'zboara?'
da/ \nu
/
\
/
\
NU
'latra?'
da/ \nu
/ \
/ \
DA NU
Construirea (invatarea) unui arbore de decizie porneste de la un set de exemple etichetate (pentru care cunoastem raspunsul). Un astfel de set poate fi:
[caine] (zboara(nu), latra(da), are_aripi(nu))
-> patruped(DA)
[gaina] (zboara(nu), latra(nu), are_aripi(da))
-> patruped(NU)
...
Exista un mod trivial de a construi un astfel de arbore, astfel incit sa fie consistent cu tot setul de invatare: construim o cale completa pentru fiecare exemplu din set, testind in cale toate argumentele pe care le poseda. Acest arbore trivial nu poate sa extraga insa nici un tipar din exemplele prezentate (nu poate sa generalizeze). Pentru aceasta ar trebui sa gasim un arbore de dimensiune cat mai mica (care este inca consistent cu exemplele etichetate). Aceasta idee este de fapt o instanta a unor principii mai generale: ipoteza cea mai probabila este cea mai simpla care este consistenta cu toate observatiile (Ockham's razor). Gasirea arborelui de dimensiune minima este o problema netractabila, insa cu anumite euristici putem sa construim arbori destul de mici.
Ideea de baza in ID3 este de a selecta cel mai important atribut prima data. Prin cel mai important intelegem in acest caz cel care diferentiaza cel mai mult exemplele inca neclasificate. Masura de importanta aleasa la acest algoritm este entropia.
In consecinta, ID3 alege atributul considerat cel mai important, si divide exemplele in subseturi corespunzatoare valorilor posibile ale atributului. In continuare se apeleaza ID3 recursiv pentru subseturile obtinute si lista de atribute ramase. Procedeul recursiv se termina cand toate exemplele dintr-un subset au aceeasi clasificare. Daca se termina toate atributele si subsetul contine inca exemple de clasificare diferita, atunci inseamna ca sunt exemple cu aceeasi descriere dar cu clasificare diferita. Acesta se poate datora mai multor motive:
Formula entropiei pentru selectarea unui atribut:
daca distributia exemplelor este cea din tabel
D(da) | D(nu) | total | |
C(DA) | tt | tf | ct |
C(NU) | ft | ff | cf |
total | dt | df | t |
unde
C este clasificarea (DA, NU)
D este atributul (da, nu)
atunci
entropia pentru D(da): e1 = -(tt/dt) * log(tt/dt)
- (ft/dt) * log(ft/dt)
entropia pentru D(nu): e2 = -(tf/df) * log(tf/df)
- (ff/df) * log(ff/df)
entropia pentru D: e = (dt / t) * e1 + (df / t) * e2
In algoritmul descris mai sus in fiecare pas trebuie sa alegem atributul care duce la entropia cea mai mica (entropie 0 inseamna certitudine).
Tema
lucrarii:
Construiti un program care porneste de la un set de exemple etichetate
si construieste arborele de decizie conform algoritmului ID3. Ca si masura
de testare programul trebuie sa includa o interogare a arborelui construit
(interogare realizata prin prezentarea a unor exemple spre clasificare).
Limbajul sugerat este SWI-Prolog.
Termen de predare: 6 Decembrie 1999
Pentru intarziere: -2 puncte/saptamana
Alte informatii despre ID3... 1, 2