Upload
phungkhue
View
218
Download
0
Embed Size (px)
Citation preview
SVEUC ILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 5371
Implementacija i vrednovanje algoritma za izgradnju stabla odluke C4.5
Luka Kiseljak
Zagreb, lipanj 2018.
SVEUC ILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 5371
Implementacija i vrednovanje algoritma za izgradnju stabla odluke C4.5
Luka Kiseljak
Zagreb, lipanj 2018.
\izvornik
5
Sadržaj
1. UVOD ................................................................................................................................................. 6
2. OSNOVNI PRINCIP RADA ALGORITMA STABLA ODLUKE ..................................................................... 7
I. ČISTOĆA ČVOROVA .....................................................................................................................................8 II. GRANANJE U ŠTO MANJI BROJ ČVOROVA .......................................................................................................10
3. POBOLJŠANJA OSNOVNOG ALGORITMA .......................................................................................... 11
I. PRESTANAK GRANANJA ..............................................................................................................................11 II. NEPOZNATE VRIJEDNOSTI ...........................................................................................................................11 III. NUMERIČKI ATRIBUTI ................................................................................................................................12 IV. PODREZIVANJE .........................................................................................................................................14
4. IMPLEMENTACIJA ............................................................................................................................. 16
I. POKRETANJE I IZVOĐENJE ALGORITMA ..........................................................................................................16 II. IMPLEMENTACIJSKI DETALJI .........................................................................................................................19
5. PERFORMANSE I USPOREDBA S POSTOJEĆIM RJEŠENJIMA ............................................................... 21
I. VREDNOVANJE REZULTATA .........................................................................................................................21 II. SKUP PODATAKA ODOBRENJE KREDITA ..........................................................................................................24 III. SKUP PODATAKA VRSTA STAKLA ...................................................................................................................28
6. ZAKLJUČAK ....................................................................................................................................... 30
7. LITERATURA ..................................................................................................................................... 31
6
1. Uvod
Stablo odluke je metoda induktivnog zaključivanja koja nalazi iznimno široku
primjenu u raznim poljima poput medicine i financija. U problemima u kojima je
pogodno koristiti strojno učenje algoritmi stabla odluke ostvaruju jako dobre
rezultate, a među njima posebno se ističe algoritam C4.5 koji je u okviru ovog rada
detaljno razrađen i implementiran.
Osnovna zadaća algoritama stabla odluke je rješavanje problema klasifikacije,
odnosno iz primjera koji imaju poznate vrijednosti relevantnih atributa i vrijednost
klasifikacijskog atributa naučiti o problemu na temelju čega je moguće za primjere
s poznatim atributima odrediti nepoznatu vrijednost klasifikacijskog atributa.
Stablo odluke počiva na pristupu indukciji „podijeli pa vladaj“. Taj je pristup u svom
osnovnom obliku ostvaren u algoritmu ID3 kojeg je prvi razradio i godinama
usavršavao John Ross Quinlan sa Sveučilišta u Sydneyju u Australiji. Daljnji razvoj
ove ideje kroz niz poboljšanja poput korištenja numeričkih atributa i učenja s
nepotpunim podacima implementirani su u nasljedniku ID3, algoritmu C4.5, koji se
također pripisuje Quinlanu.
U ovom radu najprije je pojašnjen osnovni mehanizam rada algoritma stabla odluke
koji je na razini algoritma ID3, zatim su objašnjena poboljšanja koja dovode do
algoritma C4.5 te je naposlijetku opisana izvedba algoritma, upute za uporabu i
performanse na dva testna skupa u usporedbi s postojećim implementacijama.
7
2. Osnovni princip rada algoritma stabla odluke
Algoritam koji koristi stablo odluke prolazi kroz dvije faze – fazu učenja i fazu
predviđanja.
U fazi učenja algoritmu se predaje skup primjera za učenje na temelju kojeg stvara
stablastu strukturu koja je osnova za predviđanja u drugoj fazi. Primjeri su
sastavljeni od niza atributa od kojih je jedan klasifikacijski, odnosno onaj kojeg
algoritam treba predvidjeti.
U fazi predviđanja algoritam dobiva primjer s nepoznatom vrijednosti klasifikacijskog
atributa te na temelju ostalih atributa s poznatom vrijednosti otkriva kojem listu
izgrađene stablaste strukture pripada. S tim predviđanje se svodi na odabir klase
koja je u tom listu najzastupljenija.
Stvaranje stabla odluke u fazi učenja može se opisati jednostavnim rekurzivnim
postupkom:
1) Stvara se čvor koji je korijen stabla odluke i sastavljen je od svih primjera koje
su u skupu za učenje
2) Svaki čvor na najnižoj razini dijeli se tako da se odabere jedan atribut i podijeli
primjere čvora u čvorove djecu na način da svi primjeri koji imaju istu
vrijednost odabranog atributa budu u istom čvoru
3) Korak 2 se ponavlja sve dok postoje atributi po kojima je moguće raditi
podjelu ili dok čvor nije sastavljen od primjera koji su svi iste klase – čvor je
u potpunosti čist
Pitanje koje se postavlja je kako odabrati atribut za podjelu jer je očito da različit
redoslijed odabira stvara u potpunosti različito stablo, a samim time dovodi i do
drugačijeg ponašanja u fazi predviđanja.
8
U idealnom scenariju listovi stabla odluke su u potpunosti čisti i sadrže što veći broj
primjera jer je tada stablo najopćenitije. Potonje se postiže grananjem u što manji
broj čvorova djece i što manjom dubinom stabla.
Zato atribute valja birati na način da se maksimalno udovolji oba kriterija – da su
čvorovi djeca što veće čistoće i da se čvorovi granaju u što manji broj djece.
I. Čistoća čvorova
Kako bi pojedine atribute bilo moguće vrednovati ovisno o čistoći čvorova koje
stvaraju potrebno je najprije pronaći funkciju koja opisuje čistoću čvora.
Čistoća čvora zapravo označava koliko je dodatne informacije potrebno dobiti kako
bi se odredila klasa (vrijednost klasifikacijskog atributa) nekog slučajno odabranog
primjera iz danog čvora.
Uzmimo za ilustraciju čvor s primjerima koji pripadaju klasi A, B ili C i promotrimo
kako distribucija klasa u primjerima čvora utječe na potrebnu količinu dodatne
informacije:
i) Kada je čvor sastavljen od primjera koji su svi iste klase, recimo svi
pripadaju klasi A, potrebna količina dodatne informacije je jednaka nuli jer
slučajan primjer može pripadati samo klasi A
ii) Ako je čvor sastavljen od jednakog broja primjera svih klasa potrebna je
maksimalna količina informacije jer je nesigurnost u odluku najveća
iii) U slučaju da većina primjera pripada jednoj klasi, recimo klasi A, s dobrom
sigurnošću je moguće tvrditi da je slučajno odabran primjer klase A,
odnosno količina dodatne informacije je između nule i maksimuma
Iz ovog promatranja slijedi zaključak da mjera čistoće čvora mora zadovoljavati dva
kriterija:
1) Ako je čvor sastavljen samo od primjera iste klase, vrijednost je nula
2) Ako je čvor sastavljen od jednakog broja primjera različitih klasa, vrijednost
je maksimalna
9
Postoji još jedno ograničenje koje nije veoma očito, a proizlazi iz prirode donošenja
odluka – ukupna količina informacije koja je potrebna ne ovisi o broju ili redoslijedu
koraka kako se do nje dolazi. Svejedno je odredi li se klasa neposredno ili prvo
pripada li primjer klasi A ili klasama B i C, a zatim ako ne pripada A pripada li
klasi B ili C. Dakle, postoji i treći kriterij:
3) Vrijednost mora biti neovisna o tome u koliko se koraka i kojim redoslijdeom
do dodatne informacije dolazi
Pokazuje se da samo jedna funkcija zadovoljava te kriterije – entropija.
Za diskretnu slučajnu varijablu 𝑋 koja poprima 𝑛 različitih vrijednosti s pripadajućim
vjerojatnostima 𝑝1 do 𝑝𝑛 entropija 𝐸(𝑋) izračunava se po formuli:
𝐸(𝑋) = 𝐸([ 𝑝1, … , 𝑝𝑛]) = − ∑(𝑝𝑖 ∗ log2 𝑝𝑖)
𝑛
𝑖=1
𝑋 ~ ( 𝑝1 𝑝2 … 𝑝𝑛)
Mjerna jedinica entropije je bit. Iako su u kontekstu računala bitovi nedijeljivi,
entropija može poprimiti bilo koju pozitivnu realnu vrijednost što je u praksi gotovo
uvijek tako.
Kako je cilj pronaći atribut koji će dovesti do najčišćih čvorova, odnosno čvorova s
najmanjom entropijom, pri odluci je potrebno za svaki atribut izračunati koliki je
dobitak informacije pri dijeljenju po tom atributu. Taj se podatak može izračunati na
način da se od entropije čvora koji se dijeli oduzme prosječna entropija čvorova
djece. Ova mjera naziva se informacijski dobitak (engl. gain), a atribut s najvećim
informacijskim dobitkom je najbolji kandidat za podjelu čvora.
Za čvor predstavljen diskretnom slučajnom varijablom 𝑋 koji se sastoji od 𝑛 primjera
i dijeli se na čvorove predstavljene diskretnim slučajnim varijablama 𝑋1, … , 𝑋𝑚 koji
imaju pripadajući broj primjera 𝑛1, … , 𝑛𝑚 informacijska dobit izračunava se po
formuli:
𝐺𝑎𝑖𝑛([𝑋1, … , 𝑋𝑚]) = 𝐸(𝑋) − ∑𝑛𝑖
𝑛
𝑚
𝑖=1
∗ 𝐸(𝑋𝑖)
10
II. Grananje u što manji broj čvorova
U obzir treba uzeti i drugi kriterij koji je označen kao relevantan - da je grananje u
što manji broj čvorova djece poželjno ponašanje.
Zašto je grananje u velik broj čvorova djece loše može se pokazati ako se uzme
ekstreman slučaj u kojem je jedan od atributa jedinstveni identifikator primjera.
U tako postavljenoj situaciji korijen bi bio podijeljen na čvorove veličine jedan – za
svaki identifikator stvorio bi se list sa samo jednim primjerom jer bi takvom podjelom
informacijska dobit bila maksimalna.
To dovodi do toga da niti jedan primjer za kojeg bi algoritam predviđao klasu ne bi
bilo moguće smjestiti u niti jedan list jer njegov identifikator nije već viđen. Dakle,
stablo odluke bilo bi u potpunosti beskorisno jer bi za svaki novi primjer otkrivalo
novu vrijednost kojeg identifikator može poprimiti. Zaključak je da informacijska
dobit ima neželjeno svojstvo da preferira atribute koji se granaju u velik broj
vrijednosti.
U svrhu korekcije tog ponašanja umjesto informacijske dobiti uvodi se druga veličina
koje se zove omjer dobiti (engl. gain ratio), a neželjeno ponašanje informacijske
dobiti kompenzira dijeljenjem s entropijom podjele.
Za čvor predstavljen diskretnom slučajnom varijablom 𝑋 koji se sastoji od 𝑛 primjera
i dijeli se na čvorove predstavljene diskretnim slučajnim varijablama 𝑋1, … , 𝑋𝑚 koji
imaju pripadajući broj primjera 𝑛1, … , 𝑛𝑚 omjer dobiti računa se po formuli:
𝐺𝑎𝑖𝑛 𝑅𝑎𝑡𝑖𝑜([𝑋1, … , 𝑋𝑚]) = 𝐺𝑎𝑖𝑛([𝑋1, … , 𝑋𝑚])
𝐸 ([𝑛1
𝑛 , … ,𝑛𝑚
𝑛 ])
Korištenje kriterija omjera dobiti donosi poboljšanje u odabiru atributa za podjelu, ali
u nekim slučajevima može dovesti do prevelike kompenzacije gdje se neki atributi
odabiru samo zato što se granaju u manje čvorova djece. Način na koji se tomu
može doskočiti je traženje atributa s najvećim omjerom dobitka, ali takvog da je
informacijska dobit veća ili jednaka prosječnoj informacijskoj dobiti svih atributa.
11
3. Poboljšanja osnovnog algoritma
I. Prestanak grananja
U osnovnom opisu algoritma navedeno je da grananje staje u trenutku u kojem se
postižu potpuno čisti čvorovi, odnosno kad je entropija čvora nula, ili kada je
napravljena podjela po svim dostupnim atributima. Međutim u problemima u kojima
je za primjere dostupan velik broj atributa stvaraju se iznimno duboka stabla s
relativno malim brojem primjera u listovima. Iako takvo stablo savršeno grupira
primjere koji se koriste za učenje, stablo postaje prenaučeno na skupu primjera nad
kojim se uči. Događa se da preciznost predviđanja opada zbog pojave primjera koje
nije moguće smjesititi niti u jedan list jer takva kombinacija atributa nije već viđena.
Zato je dobro ograničiti broj primjera koji može biti u čvoru tako da se ne stvaraju
listovi sa svega jednim ili dva primjera u sebi. Dodatno, može se definirati koja
vrijednost entropije je zadovoljavajuća tako da podjela ne staje kad je entropija nula
već neka druga pozitivna realna vrijednost.
II. Nepoznate vrijednosti
U stvarnim skupovima podataka vrlo je česta pojava da među primjerima koji se
koriste za učenje algoritma postoje oni kojima neke vrijednosti atributa nedostaju.
Najjednostavnija strategija nošenja s takvim primjerima je takve primjere ignorirati,
no često i oni nose neku korisnu informaciju pa odbacivanje nije najbolje rješenje.
Druga je strategija tretirati nepoznatu vrijednost kako zasebnu vrijednost, odnosno
ako atribut poprima dvije vrijednosti A i B, tretirati ga kao da poprima tri, A, B i
nepoznatu. Ovo rješenje također nije osobito dobro jer dodatna vrijednost ne postoji
pa zaključci koje algoritam izvodi mogu biti pogrešni.
12
Treća strategija iziskuje promjenu na čvorovima tako da ne sadrže samo cjelovite
primjere, nego i primjere koji predstavljaju samo dio cijelog primjera, definiranog
realnim brojem unutar intervala ⟨0, 1⟩.
Takva modifikacija omogućava da se pri dijeljenju po atributu za kojeg neki primjeri
imaju nepoznatu vrijednost dijelovi tih primjera pridjeljuju svakom čvoru djetetu.
Uzmimo za ilustraciju da postoji čvor koji u sebi ima 81 primjer i atribut po kojem se
radi podjela poprima vrijednost A za 60 primjera, vrijednost B za 20 primjera i za
jedan primjer nije poznata vrijednost tog atributa. Sada je moguće stvoriti dva čvora,
jedan koji u sebi ima 60 primjera s vrijednosti A, drugi koji ima 20 primjera s
vrijednosti B, a jedan primjer s nepoznatom vrijednosti podijeliti tako da 0.75 (60/80)
pripadne prvom čvoru, a ostalih 0.25 (20/80) drugom. Time postižemo da i primjeri
s nepoznatom vrijednosti atributa doprinose odlukama koje algoritam radi.
Naravno, ako primjer ima više nepoznatih atributa, moguće je da će njegov dio biti
ponovno podijeljen na manje dijelove.
Originalni algoritam C4.5 podržava nepoznate vrijednosti, ali te primjere izostavlja
iz izračuna, odnosno koristi prvu strategiju ignoriranja primjera s nepoznatim
vrijednostima.
III. Numerički atributi
U problemima koje algoritmi strojnog učenja rješavaju česta je pojava da nisu svi
atributi diskretni (nominalni), nego postoje i atributi koji poprimaju realne vrijednosti
(numerički). Kada bi algoritam ove atribute tretirao kao nominalne svaka vrijednosti
bila bi zasebna što bi dovelo do grananja u ogroman broj čvorova pa je bolja ideja
podjele po numeričkim atributima napraviti na način da se odrede skupovi vrijednosti
unutar kojih spadaju primjeri. Ovdje su spomenuta dva pristupa.
13
1. Podjela vrijednosti u dva skupa
Najjednostavnija podjela vrijednosti numeričkih atributa na skupove je podjela na
dva skupa. Odabere se vrijednost i primjeri se dijele u dva čvora ovisno o njihovoj
vrijednosti numeričkog atributa: u jedan čvor idu primjeri čija je vrijednost manja ili
jednaka, a u drugi primjeri čija je vrijednost veća od odabrane vrijednosti.
Odabir i vrednovanje vrijednosti po kojoj se odvija podjela ne predstavlja velik
problem. Primjeri se sortiraju po vrijednostima numeričkog atributa i između svake
dvije različite vrijednosti uzima se vrijednost koja razdjeljuje dva skupa. Među njima
odabire se ona čija podjela daje najveću dobit.
Dodatno, nema smisla promatrati podjelu kad je granica dva skupa između dva
primjera iste klase pa se te vrijednosti niti ne uzimaju u obzir.
2. Podjela vrijednosti u veći broj skupova
Ovdje je ideja da ne postoji samo jedna vrijednost koja dijeli vrijednosti numeričkih
atributa u skupove nego više njih. Postoji više mogućnosti kako izabrati te
vrijednosti, a u nastavku je opisana jedna varijanta.
Ponovo se primjeri sortiraju po vrijednosti numeričkog atributa. Svi se primjeri redom
stavljaju u isti čvor sve dok u čvoru nisu tri primjera iste klase. Ako je primjer
neposredno iza zadnjeg dodanog iste većinske klase i njega se stavlja u ovaj čvor
te se ponovo provjerava ovaj uvjet, inače se povlači granica i počinje se puniti novi
čvor. Na kraju, ako postoje susjedni čvorovi koji imaju istu većinsku klasu, spajaju
se u jedan i podjela je gotova.
Ono što je važno naglasiti kod numeričkih atributa je da se podjela po takvim
atributima može dogoditi i više puta na istom putu od korijena prema listu, odnosno
numerički atribut za razliku od nominalnog nikad se ne označava iskorištenim.
14
IV. Podrezivanje
Već je istaknuto da stabla odluke ponekad imaju tendenciju da postaju prenaučena.
Jedna od metoda kojom se omogućava povećanje općenitosti i posljedično
preciznosti algoritma na neviđenim primjerima je smanjivanje stabla podrezivanjem.
Ovo dovodi do kompaktnijih stabala koja su manje precizna na skupu za učenje, ali
potencijalno preciznija u fazi predviđanja.
Podrezivanje je moguće raditi u toku generiranja stabla, prije nego je ono
kompletirano (engl. prepruning), ili pak nakon što je stablo potpuno izgrađeno i svi
su parametri poznati. U okviru ovog rada fokus će biti na podrezivanju nakon što je
stablo gotovo (engl. postpruning). Postupak ide od listova sve do korijena i
podrezuje kad god je to moguće i isplativo. Postoje dvije strategije podrezivanja:
zamjena podstabla, koja je u osnovi zamjena čvora koji je razgranat na više listova
sa samo jednim listom i uzdizanje podstabla. Ovaj postupak uzdiže čvor koji se
nalazi dublje na višu razinu, a primjeri njegovih dosadašnjih susjeda se smještaju u
njegovu djecu. Slika 1 prikazuje ovaj postupak.
Čvor C se uzdiže na mjesto čvora B, a primjeri iz čvorova 4 i 5 se smještaju u
čvorove djecu čvora C tako da nastaju 1', 2' i 3'.
Slika 1: Uzdizanje podstabla
15
Postavlja se pitanje u kojima situacijama podrezivati, a u kojima je bolje stablo
ostaviti kakvo je. Očito treba utvrditi koliku pogrešku će podrezivanje donijeti i na
temelju toga procijeniti isplativost podrezivanja. Iz tog razloga čini se razumno dio
skupa za učenje odvojiti isključivo za provjeru pogreške uz i bez podrezivanje, ali to
znači da će stablo biti manje kvalitete jer je napravljeno iz manjeg skupa za učenje.
Druga i bolja opcija, koju koristi i originalni C4.5, je napraviti pesimističnu procijenu
pogreške koristeći intervale povjerenja ako predviđanje gledamo kao Bernoullijev
proces. Iako ova metoda dosta toga prepostavlja pa nije iz pogleda statistike sasvim
korektna pokazala se veoma uspješnom na raznovrsnim problemima.
Izračun je temeljen na razini pouzdanosti 𝑐 = 25% za koju je gornja granica intervala
povjerenja 𝑧 = 0.69. Broj svih primjera u čvoru označen je s 𝑁, a broj primjera koji
nisu dominantne klase u tom čvoru je 𝐸. Pesimistična procjena pogreške 𝑒
izračunava se po formuli:
𝑒 = 𝑓 +
𝑧2
2𝑁 + 𝑧√𝑓𝑁 −
𝑓2
𝑁 +𝑧2
4𝑁2
1 + 𝑧2
𝑁
𝑓 = 𝐸
𝑁
Odluka o isplativosti podrezivanja svodi se na izračun pesimistične pogreške čvora
i njegove djece. Ako je pesimistična pogreška čvora roditelja manja od prosječne
pesimistične pogreške djece podrezivanje se obavlja.
Uz pesimističnu pogrešku čvora 𝑒 koji ima 𝑛 primjera i pesimistične pogreške
čvorova djece 𝑒1, … , 𝑒𝑚 s pripadajućim brojem primjera 𝑛1, … , 𝑛𝑚 uvjet za
podrezivanje je:
𝑒 < ∑𝑛𝑖
𝑛∗ 𝑒𝑖
𝑚
𝑖=1
16
4. Implementacija
I. Pokretanje i izvođenje algoritma
Za implementaciju opisanog algoritma izabran je programski jezik Java.
Program se distibuira u obliku JAR arhive i na računalu s instaliranim JRE (Java
Runtime Environment) ili JDK (Java Development Kit) i ispravno podešenom
putanjom prema bin direktoriju instalacije pokreće se naredbom:
java –jar DecisionTree.jar
Otvara se grafičko sučelje sastavljeno od centralnog dijela koje prikazuje informacije
korisniku i alatne trake na desnoj strani koja sadrži niz opcija kojima je moguće
podešavati razne parametre algoritma kako je prikazano na slici 2.
Slika 2: Grafičko sučelje implementacije algoritma
17
U nastavku su pojašnjeni pojedini parametri konfiguracije.
Learning instances – označava koji postotak učitanih primjera treba biti korišten
za učenje algoritma. Dostupne opcije su 30%, 40%, 50%, 60%, 66%, 70%, 80% i
90%.
Class attribute index – označava indeks klasifikacijskog atributa. Indeksi počinju
od 1.
Purity threshold – označava koja vrijednost entropije je zadovoljavajuća, odnosno
ako je entropija manja ili jednaka zadanoj neće se raditi podjela.
Attribute selection strategy – označava koju strategiju je potrebno koristiti pri
odabiru atributa po kojem će se čvor dijeliti. Dostupne opcije su:
GAIN – informacijska dobit
GAIN_RATIO – omjer dobiti
Unknown atribute selection strategy – označava koju strategiju treba iskoristiti
ako se naiđe na atribute s nepoznatim vrijednostima. Dostupne opcije su:
SKIP – ignorira primjere s nepoznatim vrijednostima aributa
SPLIT – dijeli primjere s nepoznatom vrijednosti atributa na dijelove kako je
opisano u poglavlju 3.II.
Pruning – označava je li potrebno podrezivati stablo. Podrezivanje se odvija nakon
što je stablo napravljeno zamjenom podstabla.
Minimum node size – označava koja je minimalna veličina čvora. Broj može biti
bilo koji pozitivan i realan jer je moguća da se čvor sastoji od djelomičnih primjera.
18
Pritiskom na gumb Load otvara se prozor u kojem se odabire ulazna datoteka, a po
odabiru algoritam se automatski uči s danim postotkom primjera i nad ostatkom
provodi predviđanje i provjeru uspješnosti. Kada je operacija završena u centralnom
djelu ekrana prikazuje se izvješće, a na standardnom izlazu se ispisuje nastalo
stablo. Slika 3 prikazuje dio takvog ispisa.
Slika 3: Ispis stvorenog stabla na standardnom izlazu
Ukoliko parametri konfiguracije nisu ispravno unešeni ispisuje se poruka na
standardnom izlazu za pogreške i korisnik može podatke korigirati i ponovo odabrati
datoteku.
Ulazna datoteka treba formatirana tako da prvi red sadrži opis atributa odvojenih
jednim ili više praznih znakova. Atribut može biti „nom“ ako je nominalan ili „num“
ako se radi o numeričkom atributu.
Nakon toga slijede primjeri, svaki u novom redu. Oni se sastoje od vrijednosti
atributa međusobno odvojenih jednim ili više praznih znakova. Nepoznat atribut
označava se znakom upitnika „?“.
19
II. Implementacijski detalji
Dio programa koji komunicira s korisnikom kroz grafičko sučelje, postavlja
konfiguracijske parametre i zadužen je za otvaranje datoteke nalazi se unutar
razreda DecisionTree.
Primjeri su modelirani objektima razreda Instance, a za stvaranje primjeraka ovog
razreda dostupan je i razred tvornica InstanceFactory koji u svom konstruktoru
prima opis atributa kao polje AttributeType enumeracija. Pozivom metode
newInstance(String) tvornica obrađuje predani String objekt te stvara novu
instancu s odgovarajućim atributima i vrijednostima.
Atribut je modeliran apstraktnim razredom Attribute koji pamti zastavicu je li
nepoznat i definira metodu za dohvat vrijednosti getValue(). Ova metoda vraća
primjerak razreda Object s obzirom da različite vrste atributa vraćaju različite
tipove objekata kao svoju vrijednost.
Numerički atribut, primjerak razreda NumericalAttribute, kao i nominalni,
primjerak razreda NominalAttribute, nasljeđuje razred Attribute.
Primjeri su dio čvorova koji su modelirani razredom Node. Glavne operacije koje
čvor omogućava su createTree() koja stvara podstablo ispod sebe, prune() koja
podrezuje podstablo i findInstanceClass(Instance) koja za predan primjer predviđa
kojoj klasi pripada. Za određivanje pripadnosti čvoru svaki čvor ima jednu instancu
funkcijskog sučelja Predicate kojim provjerava ima li primjer odogovarajuću
vrijednost atributa da spada u taj čvor. Ako je čvor list ili primjer nije moguće smjestiti
niti u koji čvor dijete predviđena vrijednost koja se vraća je najzastupljenija vrijednost
klasifikacijskog atributa ovog čvora.
Algoritam je modeliran sučeljem Algorithm, a konkretna implementacija je unutar
razreda DecisionTreeAlgorithm. Sučelje definira dvije metode koje algoritmi
moraju znati, to su fit(Collection<Instance>, AttributeType[]) koja označava fazu
učenja i predict(Instance) koja predviđa.
20
Konfiguracijski paramteri su smješteni kao statičke vrijednosti unutar razreda
Configuration. Uz njega u podpaketu config nalazi se i nekoliko enumeracija
koje se koriste za prikaz vrijednosti konfiguracije.
Pomoć implementaciji je u podpaketima collection i utility.
Unutar podpaketa collection nalazi se generični razred CounterMap koji broji
zastupljenost objekata u obliku primjeraka MutableDouble razreda, koji je također
smješten u taj podpaket.
Razred Utility iz podpaketa utility sadrži niz metoda za izračunavanje
distribucija, entropija i dobitaka te nekoliko korisnih metoda za lijepi ispis brojčanih
vrijednosti. U istom paketu nalazi se i razred ListRandomizer koji je korišten pri
testiranju za slučajno ispremješanje lista primjera.
21
5. Performanse i usporedba s postojećim rješenjima
Impementirani algoritam testiran je na dva skupa podataka i rezultati su uspoređeni
sa perfomansama Java implementacije C4.5 algoritma J48 u sklopu programskog
paketa Weka koji je razvijen na Sveučilištu Waikato na Novom Zelandu.
I. Vrednovanje rezultata
Algoritmi stabla odluke rade s dva skupa primjera, za učenje i predviđanje. Kada je
dostupan jedan skup s primjerima najjednostavniji pristup korištenju istog za obje
ove zadaće je podijeliti ga u nekom omjeru na dva dijela. Ova podjela predstavlja
problem pri utvrđivanju uspješnosti jer je moguće da slučajna podjela u istom
omjeru, ali sa drugačijim rasporedom primjera, rezultira značajno različitim
ishodima. Iz tog razloga potrebno je testiranje provesti više puta sa slučajno
ispremješanim primjerima kako bi se dobila pouzdanija ocjena uspješnosti.
U okviru ovog rada svako testiranje provedeno je koristeći 5 slučajno generiranih
permutacija istog skupa podataka.
Dodatna mogućnost pri vrednovanju je primjena križne validacije (engl. cross
validation). Iza nje je ideja da se skup podataka podijeli na particije i s različitim
particijima više puta provodi učenje i predviđanje.
Na primjer, ako se uzme 66% primjera za učenje, skup se može podijeliti na tri
particije i provodi se testiranje tako da se algoritam pokrene tri puta pri čemu je
uvijek različita particija ona čiji se primjeri klasificiraju, dok se druga dva koriste za
učenje. Ova metoda osigurava da su svi primjeri jednom bili predviđani pa daje
poprilično dobru ocjenu uspješnosti. Mana je da izabiranjem nezgodnog postotka
stvara velik broj particija i kombinacija koji se mora isprobati što za probleme s
velikim količinama primjera može uzeti mnogo vremena i drugih resursa.
22
Postoji niz mjera kojima se može ocjeniti algoritam stabla odluke. U ovom radu
navedena su i upotrebljena četiri najkorištenija.
Klasifikacijska točnost
Klasifikacijska točnost označava omjer primjera kojima je točno predviđena klasa i
ukupnog broja primjera. Ovaj omjer množi se sa 100 kako bi se dobila vrijednost u
postocima.
𝑇𝑜č𝑛𝑜𝑠𝑡 = 𝐵𝑟𝑜𝑗 𝑖𝑠𝑡𝑖𝑛𝑖𝑡𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎
𝐵𝑟𝑜𝑗 𝑝𝑟𝑖𝑚𝑗𝑒𝑟𝑎∗ 100 [%]
Klasifikacijska preciznost
Često pogrešno predviđanje klase nije jednako loše za sve klase. Uzmemo li za
primjer požarni alarm koji svake sekunde uzima podatke iz raznih senzora i na
temelju njih odlučuje treba li oglasiti alarm, zasigurno lažna dojava predstavlja
manju štetu nego izostanak dojave ako je stvarno požar.
Iz tog razloga uvode se druge mjere poput klasifikacijske preciznosti koja daje
detaljniji uvid u točnost po vrijednostima koje klasifikacijski atribut može poprimiti.
Za izračun je potrebno najprije za svaki klasifikacijski atribut odrediti broj istinitih i
neistinith predviđanja.
Preciznost za vrijednost klasifikacijskog atributa 𝑉 izračunava se po formuli:
𝑃𝑟𝑒𝑐𝑖𝑧𝑛𝑜𝑠𝑡(𝑉) = 𝐵𝑟𝑜𝑗 𝑖𝑠𝑡𝑖𝑛𝑖𝑡𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎
𝐵𝑟𝑜𝑗 𝑖𝑠𝑡𝑖𝑛𝑖𝑡𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎 + 𝐵𝑟𝑜𝑗 𝑛𝑒𝑖𝑠𝑡𝑖𝑛𝑖𝑡𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎
𝑃𝑟𝑒𝑐𝑖𝑧𝑛𝑜𝑠𝑡 ∈ [0, 1]
Što je preciznost veća, algoritam je bolji. Loša preciznost za neku vrijednost atributa
označava da za atribut postoji velik broj neistinitih predviđanja pa bi u primjeru s
požarnim alaramom bilo važno proučiti preciznost za vrijednost koja označava da je
požar nastupio.
23
Osjetljivost (engl. Recall)
Osjetljivost je mjera koja predstavlja potpunost postupka klasifikacije. Što je
osjetljivost veća, algoritam je bolji. Osjetljivost za vrijednost klasifikacijskog atributa
𝑉 izračunava se po formuli:
𝑂𝑠𝑗𝑒𝑡𝑙𝑗𝑖𝑣𝑜𝑠𝑡(𝑉) = 𝐵𝑟𝑜𝑗 𝑖𝑠𝑡𝑖𝑛𝑖𝑡𝑖ℎ 𝑝𝑟𝑒𝑑𝑣𝑖đ𝑎𝑛𝑗𝑎
𝐵𝑟𝑜𝑗 𝑝𝑟𝑖𝑚𝑗𝑒𝑟𝑎 𝑘𝑜𝑗𝑖 𝑖𝑚𝑎𝑗𝑢 𝑣𝑟𝑖𝑗𝑒𝑑𝑛𝑜𝑠𝑡 𝑉
𝑂𝑠𝑗𝑒𝑡𝑙𝑗𝑖𝑣𝑜𝑠𝑡 ∈ [0, 1]
F1 mjera
F1 mjera predstavlja balans između točnosti i potpunosti klasifikacije. Za vrijednost
klaifikacijskog atributa 𝑉 izračunava se po formuli:
𝐹1(𝑉) = 2 ∗ 𝑃𝑟𝑒𝑐𝑖𝑧𝑛𝑜𝑠𝑡(𝑉) ∗ 𝑂𝑠𝑗𝑒𝑡𝑙𝑗𝑖𝑣𝑜𝑠𝑡(𝑉)
𝑃𝑟𝑒𝑐𝑖𝑧𝑛𝑜𝑠𝑡(𝑉) + 𝑂𝑠𝑗𝑒𝑡𝑙𝑗𝑖𝑣𝑜𝑠𝑡(𝑉)
𝐹1 ∈ [0, 1]
Kao i kod drugih mjera, veća vrijednost označava bolji rezultat.
24
II. Skup podataka odobrenje kredita
Skup podataka je jedan od predložaka koji dolazi uz instalaciju programskog paketa
Weka. Skup je objavio Dr. Hans Hofmann sa Sveučilišta u Hamburgu u Njemačkoj,
a odnosi se na odobrenje ili odbitak kredita ovisno o raznim parametrima vezanim
za kredit i osobu koja ga je zatražila.
Skup primjera sastavljen je od 20 atributa od kojih su 7 numeričkih i 13 nominalnih.
Klasifikacijski atribut (21.) može poprimiti dvije vrijednosti, bad ili good, ovisno o
tome je li zatraženi kredit dobar i treba li ga banka odobriti.
U tablici 1 je popis naziva i tipova atributa te broj vrijednosti koje može poprimiti.
Tablica 1: Popis atributa skupa odobrenje kredita
Redni broj Tip
(NUM – numerički, DIS- diskretni)
Naziv Broj mogućih
vrijednosti
1. DIS Trenutno stanje računa 4
2. NUM Trajanje kredita, u mjesecima *
3. DIS Prethodni krediti 5
4. DIS Namjena 11
5. NUM Iznos kredita *
6. DIS Posjedovanje štednje/dionica 5
7. DIS Staž kod trenutnog poslodavca 5
8. NUM Postotak prihoda koji je moguće izdvajati *
9. DIS Osobni status i spol 5
10. DIS Jamci / drugi sudionici u kreditu 3
11. NUM Duljina života u mjestu prebivališta (u godinama) *
12. DIS Posjedovanje nekretnine 5
13. NUM Starost (u godinama) *
14. DIS Način isplate 3
15. DIS Vlastita nekretnina / iznajmljivanje / život kod
nekoga 3
16. NUM Broj kartica u ovoj banci *
17. DIS Zaposlenje 4
18. NUM Broj uzdržavanih osoba *
19. DIS Posjedovanje mobitela 2
20. DIS Strani radnik 2
21. DIS Kredit je dobar 2
25
Dani skup podataka sastoji se od 1000 primjera među kojima nema primjera s
nepoznatim vrijednostima. Najprije je na jednom skupu podataka proveden
algoritam s različitim parametrima kako bi se utvrdilo kakvu točnost algoritam
postiže. Pokazalo se da postavljanje minimalne veličine entropije i podrezivanje nisu
imali većih utjecaja na rezultate pa su ti parametri izostavljeni. Rezultati su prikazani
u tablici 2.
Tablica 2: Testiranje parametara algoritma
Računanje dobitka Minimalna veličina
čvora Postotak primjera za
učenje Točnost
Informacijska dobit
5
50% 68.40%
66% 69.71%
90% 63.00%
10
50% 70.60%
66% 73.53%
90% 71.00%
15
50% 72.00%
66% 74.41%
90% 73.00%
Omjer dobiti
5
50% 63.20%
66% 65.00%
90% 70.00%
10
50% 70.00%
66% 75.00%
90% 75.00%
15
50% 70.00%
66% 73.82%
90% 70.00%
Iz tablice 2 vidljivo je da algoritam postiže nešto bolje rezultate ako se za odabir
atributa iskoristi omjer dobiti pa to predstavlja bolju opciju za provođenje testiranja.
Također se primjećuje da ograničavanje broja primjera koji mogu biti u jednom čvoru
pozitivno djeluje na rezultate, odnosno rezultati su svi preko 70% ako se odabere
10 ili 15. Što se tiče postotka, slični rezultati se postižu s 66% i 90%, ali čini se boljim
izabrati manji skup za učenje jer to daje bolji uvid u performanse algoritma s obzirom
da je dostupno više primjera za predviđanje.
26
Stoga su sljedeće opcije odabrane za izvođenje algoritma:
Postotak primjera za učenje – 66%
Minimalna entropija – 0.0
Strategija odabira atributa – omjer dobiti
Podrezivanje – uključeno
Minimalna veličina čvora - 25
Provođenjem algoritma na 5 slučajno ispremješanih skupova primjera dalo je
rezultate koji su prikazani u tablici 3. Usporedba s J48 implementacijom dana je u
tablci 4. Vidljivo je algoritmi postižu veoma slične rezultate. Gledajući mjere osim
samo točnosti može se uočiti relativno slab rezultat na klasi bad što predstavlja
problem jer je upravo neispravan odabir te klase štetniji za banku koja bi koristila
ovaj algoritam kao smjernicu za odobrenje kredita.
27
Tablica 3: Rezultati testiranja vlastite implementacije na skupu odobrenje kredita
Tablica 4: Usporedba rezultata testiranja na skupu odobrenje kredita
Vrijednost klasifikacijskog atributa Mjera Vlastita implementacija J48/Weka
bad
Preciznost 0.51 0.60
Osjetljivost 0.40 0.36
F1 0.45 0.45
good
Preciznost 0.78 0.73
Osjetljivost 0.84 0.88
F1 0.80 0.80
Točnost 71.35% 72.24%
Vrijednost klasifikacijskog atributa
Mjera Redni broj slučajnog rasporeda primjera u skupu Izmjerena
vrijednost Standardna devijacija 1 2 3 4 5
bad Preciznost 0.58 0.53 0.54 0.48 0.42 0.51 0.06164
Osjetljivost 0.44 0.36 0.44 0.46 0.31 0.40 0.06419
F1 0.5 0.43 0.48 0.47 0.36 0.45 0.05541
good
Preciznost 0.8 0.74 0.76 0.79 0.79 0.78 0.02510
Osjetljivost 0.87 0.85 0.82 0.8 0.85 0.84 0.02775
F1 0.83 0.79 0.79 0.79 0.82 0.80 0.01949
Točnost 75.00% 69.71% 70.00% 70.29% 71.76% 71.35% 2.19%
28
III. Skup podataka vrsta stakla
Skup podataka je originalno prikupila dr.sc. Vina Speihler iz Američkog odbora
forenzičkih toksikologa (American Board of Forensic Toxicologists - ABFT) u svrhu
klasifikacije tipa stakla ovisno o njegovom indeksu loma i prisutnosti određenih
kemijskih elemenata korištene u kriminalističkim istragama. Skup se sastoji od devet
atributa prikazanih u tablici 5.
Tablica 5: Atributi skupa podataka vrsta stakla
Redni broj Tip Naziv Broj mogućih
vrijednosti
1 NUM Indeks loma *
2 NUM Prisutnost Na *
3 NUM Prisutnost Mg *
4 NUM Prisutnost Al *
5 NUM Prisutnost Si *
6 NUM Prisutnost K *
7 NUM Prisutnost Ca *
8 NUM Prisutnost Ba *
9 NUM Prisutnost Fe *
10 DIS Tip stakla 7
Algoritam je u testiranju pokretan sa sličnim parametrim kao i na prethodnom skupu,
jedina promjena je minimalna veličina čvora koja je postavljena na 1 jer je skup
relativno malen. Za atribute se nepoznatim vrijednostima uzeta je strategija podjele
opisana u poglavlju 3.II.
Konačni rezultati uspoređeni s J48 implementacijom dani su u tablici 5. Može se
uočiti da su perfomanse J48 nešto slabije s obzirom da ta implementacija ignorira
primjere s nepoznatim vrijednostima atributa pri izračunu (ponašanje originalnog
C4.5).
29
Tablica 6: Usporedba rezulata testiranja na skupu vrsta stakla
Vrijednost klasifikacijskog atributa Mjera Vlastita implementacija J48/Weka
build wind float
Preciznost 0.55 0.53
Osjetljivost 0.57 0.60
F1 0.56 0.56
build wind non-float
Preciznost 0.71 0.73
Osjetljivost 0.54 0.50
F1 0.61 0.59
vehic wind float
Preciznost 0.30 0.33
Osjetljivost 0.60 0.25
F1 0.40 0.29
containers
Preciznost 0.67 0.50
Osjetljivost 0.80 0.50
F1 0.73 0.50
tableware
Preciznost 1.00 0.25
Osjetljivost 1.00 0.50
F1 1.00 0.33
headlamps
Preciznost 0.89 0.59
Osjetljivost 0.89 0.91
F1 0.89 0.58
Točnost 63.89% 57.53%
30
6. Zaključak
Problemi klasifikacije koje se nalazi na raznim poljima pogodno je rješavati
algoritmima strojnog učenja. Napose se ističu algoritmi stabla odluke koji na temelju
primjera s poznatim atributima i klasom stvaraju stablastu strukturu, djeleći pritom
skup primjera u podskupove s ciljem povećanja znanja o klasi svakog podskupa.
Nakon te prve faze, faze učenja, odeđivanje nepoznate klase neviđenog primjera
svodi se na smještanje u odgovarajući list stabla.
Temeljni problem u fazi učenja predstavlja odabir atributa na temelju kojeg se
skupovi djele, odnosno vrednovanje svake te moguće podjele. Rješenje ovog
problema nalazi se na polju teorije informacije u vidu entropije – veličine koja
predstavlja nesigurnost u klasu slučajno odabranog primjera iz skupa. Na temelju
nje moguće je izvesti informacijski dobitak podjele po svakom atributu i izabrati
atribut koji donosi najveći dobitak. Dodatno, neželjeno svojstvo izabiranja atributa s
podjelom na velik broj čvorova kompenzira se uzimanjem u obzir i entropije same
podjele, čime se izvodi omjer dobitka koji predstavlja iznimno koristan kriterij pri
podjelama. Opisan postupak ostvaren je u algoritmu ID3.
Međutim u stvarnim skupovima podataka nailazi se na niz dodatnih problema koji
iziskuju dodatna poboljšanja koja su ostvarena u njegovom nasljedniku, algoritmu
C4.5, čija je implementacija izrađena u okviru ovog rada. Poboljšanja se odnose na
rad s numeričkim atributima, uzimanje u obzir primjera čije su vriednosti nekih
atributa nepoznate, podrezivanje i prestanak grananja pri dovoljno dobrom stablu s
ciljem izbjegavanja prenaučenosti stabla.
U provedenim testiranjima algoritam je po točnosti, preciznosti, osjetljivosti i F1 mjeri
pokazao rezulatate na razini postojeće implementacije s kojom je uspoređen.
31
7. Literatura
1) Data Mining, H.Witten, E.Frank, M. A. Hall, 2011
2) Machine Learning, T. Mitchell, 1997.
3) Classification Accuracy is Not Enough: More Performance Measures You
Can Use, Jason Brownlee, 21.02.2014.,
https://machinelearningmastery.com/classification-accuracy-is-not-enough-
more-performance-measures-you-can-use/
4) Data Mining: Practical Machine Learning Tools and Techinques,
https://www.cs.waikato.ac.nz/~ml/weka/book.html
5) Weka 3: Data Mining Software in Java,
https://www.cs.waikato.ac.nz/~ml/weka/index.html
6) How to Evaluate Machine Learning Algorithms, Jason Brownlee,
27.12.2013., https://machinelearningmastery.com/how-to-evaluate-
machine-learning-algorithms/
7) Machine Learning: Neural and Statistical Classification, D. Michie, D.
Spiegelhalter, C. Taylor, 2009.
8) Pruning decision trees and lists, Elbe Frank, Sveučilište Waikato, 2000.
9) How decision tree algorithm works, R. Saxena, 30.01.2017.,
http://dataaspirant.com/2017/01/30/how-decision-tree-algorithm-works/
10) UCI Machine Learning Repository, http://archive.ics.uci.edu/ml/index.php
11) Wikipedia, 12.06.2018., Precision and recall,
https://en.wikipedia.org/wiki/Precision_and_recall
32
Implementacija i vrednovanje algortima za izgradnju stabla odluke C4.5
U ovom radu iznesen je osnovni princip rada algoritma stabla odluke te su objašnjeni
ključni koncepti koji se koriste pri izgradnji uspješnog stabla odluke na razini
algorimta ID3. Na to je prezentiran i niz nadogradnji koji je implementiran u
njegovom nasljedniku, algoritmu C4.5, koje uključuju rad s numeričkim atributima,
nošenje s nepoznatim vrijednostima te postupke koji povećavaju općenitost stabla
poput prestanka grananja prije nego su svi atributi poznati i podrezivanje. Opisana
je i testirana ponuđena implementacija na dva skupa podataka koji su dali dobar
uvid u sposobnosti implementiranog rješenja.
Ključne riječi:
Umjetna inteligencija, problem klasifikacije, strojno učenje, stabla odluke, ID3, C4.5,
vrednovanje klasifikatora, točnost, preciznost, osjetljivost, F1 mjera
33
Implementation and evaluation of C4.5 decision tree algorithm
Contains basic principle behind decision tree algorithm as well as an introduction to
key concepts used when building a successful decision tree on level of ID3
algorithm. On top of that a series of enhancements are presented that are
implemented in its succesor, C4.5 algorithm. These include working with numerical
values, handling unknown data and various procedures used to generalize trees,
such as pruning and stoping tree development earlier than when all attributes are
used up. A description and a comperhensive test of the developed implementation
is also included giving a good insight in the capabilites of the provided solution.
Key words:
Artificial intelligence, classification problem, machine learning, decision tree, ID3,
C4.5, classifier evaluation, accuracy, precision, recall, F1 measure