Paralelna implementacija metode nadziranog učenja

Similar documents
SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

SAS On Demand. Video: Upute za registraciju:

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Port Community System

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

PROJEKTNI PRORAČUN 1

4. Stabla odlučivanja

Klasterizacija. NIKOLA MILIKIĆ URL:

BENCHMARKING HOSTELA

Podešavanje za eduroam ios

Upute za korištenje makronaredbi gml2dwg i gml2dgn

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Nejednakosti s faktorijelima

Priprema podataka. NIKOLA MILIKIĆ URL:

1. Instalacija programske podrške

The SAS System 18:28 Saturday, March 10, Clustering Clusters by Ward's Method

KOMPARATIVNA ANALIZA PREDIKTIVNIH TEHNIKA RUDARENJA PODATAKA

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

Uvod u relacione baze podataka

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

PRIMJENA RAZLIČITIH METODA STROJNOG UČENJA U PROBLEMU KLASIFIKACIJE SLIKARSKIH DJELA PREMA AUTORU

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE

Vrednovanje postupka semantičke segmentacije temeljenog na slučajnim šumama

Otpremanje video snimka na YouTube

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

Windows Easy Transfer

int[] brojilo; // polje cjelih brojeva double[] vrijednosti; // polje realnih brojeva

EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU OGLASA

Bušilice nove generacije. ImpactDrill

Primjena genetskog programiranja na problem klasifikacije podataka

Modelling Transport Demands in Maritime Passenger Traffic Modeliranje potražnje prijevoza u putničkom pomorskom prometu

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

Tutorijal za Štefice za upload slika na forum.

ANALIZA PRIMJENE KOGENERACIJE SA ORGANSKIM RANKINOVIM CIKLUSOM NA BIOMASU U BOLNICAMA

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C

Sveučilište Jurja Dobrile u Puli Fakultet ekonomije i turizma «Dr. Mijo Mirković» SARA NIKOLAŠEVIĆ METODE I PROGRAMI ZA RUDARENJE PODATAKA

Sustav za gusto označavanje prometnih znakova u video sekvencama

RJEŠAVANJE BUGARSKOG SOLITERA

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

INTEGRACIJA DODATNIH MOGUĆNOSTI U PROGRAMSKI SUSTAV MARKER

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

DEFINISANJE TURISTIČKE TRAŽNJE

Eksperimentalna evaluacija metoda za prepoznavanje prometnih znakova

RANI BOOKING TURSKA LJETO 2017

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

Advertising on the Web

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

Mogudnosti za prilagođavanje

Statistička analiza algoritama za dinamičko upravljanje spremnikom

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Uticaj parametara PID regulatora i vremenskog kašnjenja na odziv i amplitudno-faznu karakteristiku sistema Simulink

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

SVEUČILIŠTE U ZAGREBU FAKULTET STROJARSTVA I BRODOGRADNJE DIPLOMSKI RAD VIKTORIJA IVANDIĆ. Zagreb, godina 2016.

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017. GIF FORMAT (.

1. Uvod Metodologija neuronskih mreža. 2. Metodologija istraživanja

Klasifikacija objekata na slici korištenjem superviziranog učenja

STRUKTURNO KABLIRANJE

24th International FIG Congress

Mindomo online aplikacija za izradu umnih mapa

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

INFORMACIONI SISTEMI ZA PODRŠKU MENADŽMENTU

PREDVIĐANJA U TURIZMU TEMELJENA NA METODI NAJMANJIH KVADRATA

PE FORMAT (.EXE,.DLL)

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

OTVARANJE BAZE PODATAKA I IZRADA TABLICE U MICROSOFT ACCESS-u

1.UVOD. Ključne reči: kriptografija, algoritmi, AES, performanse

DANI BRANIMIRA GUŠICA - novi prilozi poznavanju prirodoslovlja otoka Mljeta. Hotel ODISEJ, POMENA, otok Mljet, listopad 2010.

POSTUPAK OPTIMIZIRANJA IZBORA OGLASA NA TEMELJU STABALA ODLUČIVANJA

AUTOMATSKO RASPOZNAVANJE OSMJEHA IZ SLIKE LICA

Mašinsko učenje Uvod. Bojan Furlan УНИВЕРЗИТЕТ У БЕОГРАДУ ЕЛЕКТРОТЕХНИЧКИ ФАКУЛТЕТ

DETEKCIJA LJUDI NA ZRAČNIM SLIKAMA UPOTREBOM KONVOLUCIJSKIH NEURONSKIH MREŽA

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

PROGRAMSKI SUSTAV ZA RASPOZNAVANJE TISKANOG TEKSTA

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI

INFORMACIONI SISTEMI ZA PODRŠKU MENADŽMENTU

Testiranje koda - JUnit. Bojan Tomić

STRUČNA PRAKSA B-PRO TEMA 13

IZRADA TEHNIČKE DOKUMENTACIJE

Upravljanje kvalitetom usluga. doc.dr.sc. Ines Dužević

JavaScript podrska u radu sa greskama

IZDAVAČ / Publisher Sveučilište u Zadru / University of Zadar Mihovila Pavlinovića 1, Zadar, Hrvatska

SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET

Obrada podataka poslanih preko web formi

Rekonstrukcija filogenetskog stabla metodom maksimalne uštede uz razgranajograniči

Međimursko veleučilište u Čakovcu. Stručni studij računarstva. Anteja Vuk Maček

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

СТРУКТУРА СТАНДАРДА СИСТЕМАМЕНАЏМЕНТАКВАЛИТЕТОМ

CRNA GORA

SVEUČILIŠTE U ZAGREBU FAKULTET STROJARSTVA I BRODOGRADNJE ZAVRŠNI RAD Voditelj rada: Prof.dr.sc. Dorian Marjanović Ante Čamber Zagreb, FSB Sveuč

KABUPLAST, AGROPLAST, AGROSIL 2500

Transcription:

ZAVOD ZA ELEKTRONIČKE SUSTAVE I OBRADU INFORMACIJA FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SVEUČILIŠTE U ZAGREBU Paralelna implementacija metode nadziranog učenja Vedrana Baličevid Maja Bellotti Mirna Bokšid Oliver Marid Maja Štimac Zagreb, siječanj 2010.

Sadržaj 1. UVOD... 1 2. Reimplementacija Slučajnih šuma... 2 3. Opis rada... 3 3. 1 Ulazni podaci... 3 3.2 Slučajne šume... 4 3.2.1. Opis programa RF... 5 3.2.2. Procjena greške... 6 3.2.3. Važnost atributa... 7 3.2.4. Opis programa 'PROC'... 7 3.2.5. Paralelizacija... 8 4. Prikaz rezultata... 9 5. Primjena i konačni rezultati... 10 6. ZAKLJUČAK... 14 7. LITERATURA... 15

1. UVOD Algoritam Slučajnih šuma (eng. Random Forest) trenutno je jedan od najboljih poznatih algoritama za klasifikaciju (te regresijsku analizu) koji je sposoban klasificirati ogromne količine podataka s velikom točnošdu. Algoritam je izvorno napisan u programskom jeziku Fortran 77, ali ga je nažalost jako teško u potpunosti razumjeti. Stvoritelj algoritma je profesor s Berkeley-vog sveučilišta, Leo Breiman koji je jedan od začetnika područja strojnog učenja (eng. machine learning), metode rudarenja podataka ( eng.data mining) te je sudjelovao u stvaranju programa (CART Classification and Regression Trees). Osnovna ideja algoritma proizlazi iz činjenice da se koristi puno klasifikatora umjesto samo jednoga. Prilikom klasifikacije podataka, svaki klasifikator (stablo) donosi zasebno odluku o klasi (stabla glasaju za klasu). Nakon što sva stabla glasaju, podatak de biti klasificiran klasom koja dobije najviše glasova. S obzirom da su klasifikatori međusobno neovisni moguda je paralelizacija algoritma Slučajnih šuma. Metodom paralelne implementacije (PARF - PArallel Random Forest) omoguduje se izvršavanje algoritma na vedem broju računala. U ovom projektu pokušalo se na temelju opisa rada algoritma profesora Lea Breimana, implementirati Slučajne šume u programski paket Matlab. Napisani algoritam testiran je na numeričkim podacima. Rezultati su prikazani PROC (eng. Precision-Recall ) krivuljama na temelju podataka dobivenih iz Slučajnih šuma. 1

2. Reimplementacija Slučajnih šuma Slučajne šume, kao metoda nadziranog učenja, su prvotno napisane u Fortranu 77, nepriličnom i teškom programskom jeziku bez mogudnosti paralelne implementacije. Fortran je u to vrijeme bio logičan izbor kao široko prihvaden u matematičkim krugovima zbog svojih numeričkih i računskih prednosti u odnosu na druge programske jezike. Unatoč nedostatcima Fortrana sam algoritam RF (eng. Random Forest) je razvijen tako da je paralelna realizacija poželjna. Naime RF se sastoji od slučajnih stabala odluke (eng. decision trees) koja se generiraju nezavisno jedna o drugima. Stoga je nužna re-implementacija algoritma u nekom višem i pogodnijem programskom jeziku, koji omoguduje pokretanje istog na skupini računala (klaster). Problem se javlja zbog nerazumljivosti programskog koda pisanog u Fortranu iako je sam algoritam Slučajnih šuma ved poznat. Program je pisan vrlo strogim matematičkim stilom s nedovoljno opisnim imenima varijabli. Također programski jezik Fortran ne dozvoljava određene funkcionalnosti (npr. odgovarajude korisničko sučelje) te su neke karakteristike žrtvovane radi bržeg izvođenja i jednostavnosti programskog koda. Dodatna nepogodna stvar je nedostatak dinamičke alokacije u izvornom programu, točnije potrebno je u svakoj iteraciji izvođenja programa ručno mijenjati kod. Stoga je jasna potreba za reimplementacijom izvornog koda i poboljšanjem funkcionalnosti. Slika 1. Primjer dijela koda u programskom jeziku Fortran 77 2

3. Opis rada Slučajne šume su jedna od najsvestranijih danas poznatih klasifikacijskih metoda. To je metoda strojnog učenja koja je našla veliku primjenu zbog niza različitih mogudnosti koje nudi: Vrlo točna na nekim skupovima podataka Efikasna na velikim skupovima podataka Efikasna za velik broj atributa Daje procjenu koje varijable su važne za klasifikaciju Daje unutrašnju nepristranu procjenu opde greške tijekom procesa rasta šume Ima učinkovitu metodu procjene nepotpunih podataka i zadržava točnost i kada mnogo podataka nedostaje Jednom narasla šuma može se spremiti za bududu upotrebu Prototipovi daju procjenu o odnosu varijabli i klasifikacije Računa udaljenosti između parova podataka koji se mogu koristiti u klasterima, pronalaženju outlinera i daje zanimljiv prikaz podataka. Može se proširiti na neklasificirane podatke koje vodi nenadgledanom učenju Pruža eksperimentalnu metodu za otkrivanje interakcije među varijablama 3. 1 Ulazni podaci Ulazni podaci Slučajnih šuma su različiti podaci na kojima se izvršava statistička obrada. Ulazni podaci moraju biti na određeni način organizirani. Podaci su organizirani u ARFF datoteke. ARFF datoteke su ASCII tekstualne datoteke koje sadrže listu podataka koji imaju iste atribute. ARFF datoteke sastoje se od dva odvojena dijela. Prvi dio je zaglavlje, nakon kojeg slijedi dio s podacima. Zaglavlje ARFF datoteke sadrži ime relacije, listu atributa (stupci u dijelu datoteke koji sadrži podatke) i njihove tipove. Primjer standardnog zaglavlja IRIS datoteke izgleda ovako: @RELATION iris @ATTRIBUTE sepallength NUMERIC @ATTRIBUTE sepalwidth NUMERIC @ATTRIBUTE petallength NUMERIC @ATTRIBUTE petalwidth NUMERIC @ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica} Zaglavlje se sastoji od deklaracije atributa i relacija. Relacija odnosa definirana je kao prva linija ARFF datoteke: @relation <relation-name> Svaki atribut u području koje pripada deklaraciji atributa ima ima svoju vlastitu @attribute koja se uvijek piše u novi red i njome se definira ime atributa i tip podataka. Redoslijed kojim su zapisani atributi pokazuje poziciju stupaca u području datoteke u kojem su zapisani podaci. Format zapisa atributa je sljededi: @attribute <attribute-name> <datatype> 3

Tip podatka koji podržava ovakva datoteka je: numerički nominal-specification string datum Nakon zaglavlja slijedi jedan razmak nakon kojeg se nalaze podaci koji su organizirani na sljededi način: @DATA 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa 5.0,3.4,1.5,0.2,Iris-setosa 4.4,2.9,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa @RELATION, @ATTRIBUTE i @DATA su dijelovi datoteke koji postoje po definiciji u svakoj ARFF datoteci, dok se druge stvari u datoteci, ovisno o vrstama podataka, mijenjaju. Područje ARFF-a u kojem su zapisani podaci sadrži liniju deklaracije podataka i stvarne linije podataka. Deklaracija podataka je samo jedna linija koja označava početak dijela s podacima: @DATA U području gdje se nalaze sami podaci, svaki podatak se nalazi u novom redu. Vrijednosti atributa za svaki podatak nalaze se odvojene u stupcima. Atributi se moraju pojaviti po redoslijedu po kojem su deklarirane u zaglavlju. 3.2 Slučajne šume Ulazni podaci su organizirani u ARFF datoteke. Uz pomod programa ReadData, koji se nalazi u privitku pročitani su podaci. Ulazni parametar navedenog programa je ARFF datoteka, izlazne vrijednosti programa su: X, Class, Label, Features. Navedene izlazne vrijednosti su podaci potrebni za rad statističke metode. Slučajne šume su statistička metoda koja se temelji na gradnji stabala. Stabla se grade uz pomod izmijenjene, u Matlab ugrađene, funkcije classregtree. Slučajne šume zahtijevaju izgradnju mnoštva stabala. Da bi se iz ulaznog vektora klasificirao novi objekt, on mora prodi kroz sva stabla šume. Svako stablo vrši klasifikaciju, odnosno glasa za određeni razred. Šuma se odlučuje za određenu klasifikaciju na temelju najvedeg broja glasova. Cijela metoda počinje od izgradnje samo jednog stabla. Jedno stablo se gradi na sljededem rekurzivnom principu: DTree(Primjeri, Atributi) Kreiraj osnovni čvor stabla Ako su svi primjeri iste klase i => stablo je osnovni čvor s oznakom i 4

Ako su svi atributi iskorišteni => vrati osnovni čvor s oznakom najbrojnije klase Inače Dok atributi >0 Ai = Odredi atribut koji najbolje klasificira skup primjera Za svaku vrijednost vj od Ai Dodaj novu granu ispod čvora, koja korespondira s testom Ai = vj Neka su Primjeri(Ai = vj) onaj skup primjera koji zadovoljava Ai = vj Ako primjeri (Ai=vj)=0 Dodaj oznaku c = najčešda klasa u skupu Primjeri Inače za novu granu dodaj novo podstablo DTree(Primjeri(Ai=vj),Atributi-Ai) Odnosno, taj rekurzivni postupak se u osnovi se temeljni na sljededoj ideji: ako je broj podataka u setu za treniranje N, slučajnim odabirom s ponavljanjem uzorkuj iz ulaznog skupa podataka N podataka ako postoji M ulaznih varijabli m mora biti manje od M, m je konstantan tokom cijele klasifikacije. On predstavlja broj podstabala koja mogu nastati iz svakog čvora. Za svaki čvor odabire se m slučajnih varijabli. Promatraju se sva podstabla koja mogu nastati i izabire se ono koje ima najbolji split. Najbolji slit se pronalazi uz pomod Gini indexa za mjeru nečistode. Atribut s najvedim Gini indeksom je pobjednik, odnosno na njemu se radi grananje. stablo se gradi do maksimalne dubine Naravno za tokom glasanja ponekada može dodi i do pogreške, jer svako stablo ponekada može odrediti pripadnost krivoj klasi. Relativna procjena pogreške ovisi o: korelaciji bilo koja dva stabla u šumi. Povedavanjem korelacije raste učestalost pogreške snazi svakog individualnog stabla u šumi. Stablo s malom učestalošdu pogreške je bolji klasifikator. Povedavanje snage individualnog stabla povedava procjenu pogreške Smanjenjem m smanjuje se i korelacija i snaga. Povedanjem m oboje rastu. Negdje na sredini se nalazi optimalan interval za m (obično dosta širok). Korištenjem OOB vrijednosti pogreške, lako se može pronadi vrijednost m. To je jedini podesivi parametar (osim broja stabla) na koji je Slučajna šuma osjetljiva. 3.2.1. Opis programa RF Učitavaju se podaci dobiveni iz arff datoteka. Jedan od ulaznih parametara je i broj stabala. Što je vedi broj stabala statistička metoda daje bolje rezultate. Iz ulaznih podataka slučajnim odabirom s ponavljanjem uzima se dio podataka. Podaci predstavljaju podatke za treniranje, odnosno TraningSet podatke i od tih podataka se gradi stablo. Svako stablo se gradi koristedi drugačiji skup primjera. Kako su ti podaci uzimani slučajnim odabirom, dio ulaznih podataka nije korišten za izgradnju stabla. Preostali ulazni podaci su OOB (eng. out of bag) podaci. Otprilike 1/3 ulaznih podataka predstavlja OOB podatke. Nakon što je stablo izgrađeno na podacima za treniranje OOB podaci se provlače kroz stabla. Stablo za svaki pojedini OOB podatak donese odluku (glas) kojoj klasi bi taj podatak trebao pripadati. Dodijeljeni glasovi uspoređuju se s ved poznatim glasovima, odnosno ulaznim podacima. Ulazni podaci se promatraju kao točni podaci na temelju kojih se može vršiti usporedba dobivenih podataka. Ako je stablo glasalo za točno, odnosno klasa za koju je glasalo stablo je jednaka ulaznoj klasi, vrijednost u matrici za taj primjer za promatrano stablo povedava se za jedan, a ako se glas 5

razlikuje vrijednost se ne mijenja. Ovaj postupak se ponavlja sve dok se ne izgrade sva zadana stabla. Pri izgradnji svakog stabla ponovo se vrši glasanje, ali bitno je za primijetiti da OOB i set za treniranje pri izgradnji novog stabla nisu isti, jer se uvijek uzimaju nove slučajne vrijednosti. Glasovi svih stabala se zbrajaju u istu matricu. Konačno se dobije matrica u koju su upisane vrijednosti koliko je stabala glasalo za koju klasu. Ta matrica predstavlja izlazni podatak Slučajnih šuma. Matrica se zapisuje u datoteku glasovi.txt i kasnije se koristi za izgradnju krivulja koje grafički prikazuju uspješnosti detektora. Nakon uspješno provučenih OOB podataka kroz Slučajne šume istrenirane na setu za testiranje slijedi postupak permutacije. Za svako stablo u OOB podacima permutiramo jednu značajku, a sve ostale ostavimo nepromijenjene. Tako dobiveni OOB provučemo kroz stablo, tako da za svaki pojedini OOB podatak stablo donese odluku (glas) kojoj klasi bi taj podatak trebao pripadati. Usporedbom s točnim podatkom (kojoj klasi taj podatak zaista pripada), dobiva se podatak je li stablo donijelo ispravnu odluku ili ne, iz čega se može vidjeti važnost jedne značajke u donošenju ispravne odluke. Ovaj postupak ponavlja se za svako stablo onoliko puta koliko postoji značajki (atributa), te za sva stabla u šumi. Slika 2. Izgradnja šume Na taj način dobivena je matrica koja za svaki podatak daje broj stabala koji su glasali ispravno i broj stabala koji su glasali krivo nakon permutiranja jedne značajke. Sličnu matricu dobili smo i upravo prije permutiranja. Razlika ove dvije matrice podijeljena s brojem stabala daje RawImportanceScore - važnost koja se ispisuje u jednu od izlaznih datoteka. 3.2.2. Procjena greške Kod slučajne šume, nema potrebe za validacijom ili odvojenim testovima da bi se dobila nepristrana procjena greške. Greška se procjenjuje interno, tijekom rasta šume. Na kraju izvođenja, uzmimo da j bude klasa koja je dobila najviše glasova svaki put kada je primjer n bio OOB. Omjer broja puta kada j nije jednak pravoj klasi i prosjek svih n-ova daje OOB procjenu pogreške. Pokazalo se da je to nepristrana procjena u mnogim testovima. 6

3.2.3. Važnost atributa U svakom izgrađenom stablu, testiramo OOB primjere i brojimo broj točnih glasova. Sada slučajno permutiramo vrijednosti atributa m u OOB primjerima i ponovimo test. Oduzmimo broj točnih klasifikacija za prave i permutirane primjere. Prosjek tog broja po svim stablima u šumi je približna važnost atributa m. Očekujemo da broj točnih glasova nede mnogo razlikovati ako je atribut nebitan, dok de se za važan atribut znatno razlikovati 3.2.4. Opis programa 'PROC' Na temelju podataka dobivenih Slučajnim šumama program PROC stvara Precision-Recall krivulje. Nastaju tri različite krivulje, po jedna PROC krivulja za svaku klasu. Za svaku klasu stvora se matrica sa i-redaka i 5 stupaca. Prvo se promatra matrica za jednu klasu, pa za drugu i na kraju za tredu. Na temelju tih matrica crtaju se krivulje. U prvom i drugom stupcu zapisani su podaci iz datoteke glasovi.txt, tj. u prvom stupcu nalazi se udio stabala koji je glasovao protiv, a u drugom stupcu udio stabala koji je glasovao za. U peti stupac matrice učitava se točnost poznata iz originalnih. Taj znak točnosti može biti True ili False, pa se u u ovisnosti o tome u matricu upisuje 1 ili 0. Tredi stupac matrice dobiva se pomodu formule stupac _ 3 stupac _1 stupac _1 stupac _ 2 (1) Prag se linerano povedava od 0 do 1. Četvrti stupac nastaje uspoređivanjem tredeg stupca i praga. Ukoliko je tredi stupac vedi od praga upisuje se jedinica, a u protivnom nula. GLASOVI 'PROTIV' GLAZOVI 'ZA' X=PROTIV/(PROTIV +ZA) X >PRAG => 1 X<PRAG => 0 TOČNOST IZ UL. MAT. 0.3621 0.6379 0.3621 0 0 0.9737 0.0263 0.9737 1 1 0.8122 0.1878 0.8122 1 0 0.8984 0.1016 0.8984 1 1 Tablica 1. Dio tablice korištene u programu 'P-ROC_crtanje' Precision-Recall krivulja crta se na temelju četiri parametra:. TP True positives detektor ( odluka RF-a) je rekao da je točno i bilo je točno (odluka donesena na temelju ulaznih podataka) TN True negatives detektor kaže da je netočno i njegova odluka je prema ulaznim podacima točna FP False positives detektor kaže da je točno i njegova odluka je prema ulaznim podacima netočna (bilo je netočno) FN False negatives detektor kaže da je netočno i njegova odluka je prema ulaznim podacima netočna (bilo je točno) 7

Formule za izračunavanje varijabli Precision i Recall su: Precision TP TP FP (2) TP Re call (3) TP FN Svakom parametru dodijeljene su kombinacije binarnih znakova dobivene usporedbom podataka dobivenih detektorom i točnih ulaznih podataka. TP = '11' FP = '10' FN = '01' TN = '00' Precision i Recall računaju se za različite pragove koji se linearno mijenjaju u intervalu *0,1+ s pomakom 0.01. Svakom pragu odgovara jedna točka krivulje. 3.2.5. Paralelizacija Promatrana metoda strojnog učenja često obrađuje velike skupove podataka, koji imaju mnoštvo klasa i atributa. To znatno usporava rad Slučajnih šuma. Jedan od načina da se ipak poveda brzina rada, bez obzira na to što se i dalje obrađuje velika količina podataka je paralelizacija. To je zapravo paralelna realizacija Slučajnih šuma (eng. PArallel Random Forest). Paralelna realizacija omoguduje puno bržu implementaciju i korištenje metode jer se algoritam može paralelno izvršavati na više različitih strojeva. 8

4. Prikaz rezultata Izlazne datoteke funkcije PARF() služe za kasniju analizu rezultata, tj. postaju ulazni podaci funkcije PROC() koja kao svoj izlaz daje Precision-Recall krivulje. Navedene krivulje pružaju kvalitativan uvid u uspješnost statističke metode. Precision i Recall su matematički modeli koji se koriste pri statističkoj klasifikaciji. Precision za neku klasu je broj TP (eng. true positives) podijeljen sa ukupnim brojem elemenata kojima je određena pripadnost pozitivnoj klasi, tj. suma TP i FP (eng. false positives) jedinki (izraz (2)). Preciznije definirano TP predstavlja broj jedinki kojima je točno određena pripadnost pozitivnoj klasi, dok FP označava broj jedinki kojima je ta pripadnost netočno određena korištenjem određene statističke metode (u ovom slučaju to određivanje kojoj klasi pripada donosi svako pojedino stablo odluke). Recall u kontekstu statističke klasifikacije se definira kao broj TP podijeljen sa ukupnim brojem elemenata koji stvarno pripadaju pozitivnoj klasi (izraz (3)), tj. kao suma TP i FN (eng. false negatives) jedinki, gdje FN predstavlja jedinke kojima nije označena pripadnost pozitivnoj klasi, a trebala je biti. Ako je Precision rezultat jednak jedinici za neku klasu C to znači da svaki element kojem je označena pripadnost klasi C uistinu i pripada toj klasi, no to ne daje nikakvu informaciju o broju jedinki klase C koje su krivo označene. Dok rezultat Recall jednak jedinici govori da je svakoj jedinci iz klase C označena pripadnost klasi C, no ne govori ništa o broju elemenata kojima je netočno također određena pripadnost klasi C. Poznata je pojava inverzne veze parametara Precision i Recall, gdje je mogude povedati jedan od parametara na štetu drugoga. U ovom radu kao i uobičajeno navedeni parametri se ne promatraju zasebno, dapače vrijednost jednoga se uspoređuje s fiksnom vrijednošdu drugoga ili reprezentira krivuljama iz kojih se može dobiti ukupnost informacija. U problemu klasifikacije izlazni podaci se mogu prikazati sa dva tipa krivulja: P-ROC (eng. Precision-Recall Operating Characteristic) i ROC (eng. Receiver Operating Characteristic ). Slika 3. Prikaz izgleda tipične P-ROC i ROC krivulje ROC krivulja daje grafički opis odnosa TP i FP parametara (obratiti pažnju kako su koordinatne osi označene na slici 2.), dok P-ROC krivulja, kao što joj i samo ime govori, daje odnos Precision i Recall parametara. 9

5. Primjena i konačni rezultati Algoritam RF implementiran u MATLAB programskom jeziku je testiran na četiri seta ulaznih podataka, tj. na četiri ulazne ARFF datoteke. Podaci su pronađeni na Internetu i pripremljeni u oblik pogodan za obradu. Bitno je napomenuti da algoritam radi samo za numeričke podatke. U radu na projektu nije bilo vremena za proširivanje, no u planu je razrada algoritma kako bi bio primjenjiv pri analizi genoma (bioinformatika) gdje su podaci organizirani u obliku stringova (kombinacija slova A,T, C i G). Varijabla loadfisheriris, ogledni primjer iz MATLAB programa, je prvobitno učitana te potom pretvorena u Iris.txt datoteku, a zatim koristedi se ReadData() funkcijom pretvorena u Iris.arff datoteku na ved opisani način. Stvorena datoteka je sastavljena od 150 ulaznih podataka od kojih svaki pripada jednom od tri cvijeta : Virginica, Setosa ili Versicolor. Algoritam RF na temelju četiri značajke (polje značajki se može pronadi u datoteci), mora odlučiti o kojem cvijetu se radi s određenim postotkom sigurnosti. Funkcija PROC() najlošije rezultate vrada za prvu datoteku, no svaki put vrada malo drugačije rezultate, a razlog tome je što stabla drugačije glasaju pri svakom pokretanju. Važno je napomenuti da pokretanje programa sa vedim brojem stabala daje bolje rezultate, poradi toga su prikazani rezultati za svaku datoteku i na 100 i na 1000 stabala odluke. Na slici 4. je prikazana P-ROC krivulja za Iris.txt datoteku. Cvijet Setosa se ne vidi na grafu rezultata jer se nalazi u točki u kojoj je Precision =1 i Recall =1, tj. pokazuje savršene rezultate. Slika 4. P-ROC krivulja za datoteku Iris.txt Datoteka Wine.txt je na sličan način pretvorena u.arff skup podataka. Podaci su rezultat kemijske analize više vrsta vina proizvedenih u istoj talijanskoj regiji, ali izvedenih od tri različite sorte. Analiza je ustvrdila trinaest različitih značajki koje se u različitim postotcima javljaju u spomenuta tri tipa vina (zbog nesređenosti podataka nije poznato kojih trinaest značajki je uključeno u test). Broj ulaznih podataka raspoređenih na tri tipa vina je 178, a rezultati su prikazani na slici 5. (vidljivo je da ovako raspoređen ulazni set podataka vrada bolje rezultate nego Iris.txt datoteka). 10

Slika 2. P-ROC krivulja za datoteku Wine.txt Datoteka Sonar.arff je korištena u studiji sonarnih signala gdje se iskoristila statistička metoda - neuronske mreže, no u ovom radu je primijenjena na algoritam Slučajne šume. Zadada je istrenirati stabla odluke da sa što vedom preciznošdu razlučuju sonarne signale reflektirane od metalnog cilindra i one reflektirane od kamenja u obliku cilindara. Ulazni set podataka je sastavljen od 208 elemenata, a skup značajki se sastoji od šezdeset različitih jedinki koje govore o kutu refleksije sonarnog signala na temelju kojega je analizom mogude ustanoviti u koji od dva skupa podataka (klasa Rock ili Mine) spada signal. Na slici 6. je prikazan izlazni rezultat algoritma Slučajne šume. Slika 6. P-ROC krivulja za datoteku Sonar.arff Datoteka Ionosphere.arff, slično kao i prethodna, je korištena u studiji uz primjenu neuronskih mreža za detekciju radarskih signala pri povratku iz ionosfere. Dobri rezultati radara ukazuju na određeni tip strukture u ionosferi, dok loši pokazuju izostanak iste njihovi signali prolaze kroz ionosferu. Ulazna datoteka se sastoji od 351 podatka, koji se na temelju trideset i četiri 11

značajke koristedi algoritam Slučajne šume svrstava u dobar ili loš signal. Na slici 7. je prikazan rezultat rada algoritma. Slika 7. P-ROC krivulja za datoteku Ionosphere.arff Klasifikacija određene siluete u jedan od četiri tipa vozila (klasa: opel, saab, bus, van), koristedi set značajki izvučenih iz siluete je sljededi zadatak za algoritam Slučajnih šuma. 946 ulaznih podataka je spremljeno u datoteku Vehicle.arff, a odluka se donosi na temelju osamnaest atributa (značajki). Rezultati za 100 i 1000 stabala su priloženi na slici 8. Slika 8. P-ROC krivulja za datoteku Vehicle.arff Datoteka Segment.arff je kreirana slučajnim odabirom slikovnih elemenata (eng.pixel) iz skupa od sedam slika. Ulazni set podataka ima 2310 podataka,a broj atributa, na osnovu kojeg 12

algoritam donosi odluku o kojoj od sedam slika se radi, je devetnaest. Slike predstavljaju klase i to redom: Brickface, Sky, Foliage, Cement, Window, Path i Grass. Prikaz rezultata je izložen na slici 9. Slika 9. P-ROC krivulja za datoteku Segment.arff 13

6. ZAKLJUČAK Algoritam Slučajnih šuma pruža velike mogudnosti u analizi podataka jer omoguduje obradu podataka širokog spektra. Vrlo je pouzdan, vrijeme izvođenja je relativno kratko, paralelizacijom je omogudeno izvođenje algoritma na više računala te ima vrlo visoku preciznost. Našao je svoju primjenu u širokom rasponu područja, ali se danas možda najčešde koristi za klasifikaciju velikih skupa podataka s velikim brojem atributa kao što je u području biomedicine ljudski genom. Iako algoritam napisan u programskom paketu Matlab trenutno radi samo s numeričkim varijablama, cilj je usavršiti program kako bi radio i s kategoričkim tipom varijabli. U tom slučaju algoritam bi se mogao upotrebljavati u bioinformatici u danas vrlo popularnom području detekcije kodirajudih regija u genomu. 14

7. LITERATURA [1] http://www.stat.berkeley.edu/~breiman/randomforests/cc_home.htm#intro [2] http://en.wikipedia.org/wiki/random_forest [3] http://www.parf.irb.hr/ [4] http://web.math.hr/nastava/ui/zadaci/2008_09/2/zadatak10/prezentacija.pdf [5] http://www.cs.waikato.ac.nz/~ml/weka/arff.html [6] http://en.wikipedia.org/wiki/precision_and_recall 15

8. PRIVITAK 8.1 Funkcija PARF : function [Label Class]=PARF(file,TreeNo) [X,Class,Label,Features] = ReadData(file); fprintf('-> podaci iz %s uèitani.\n',file); fprintf('-> Random Forest radi... ') ; [RawImportanceScore,Votes,N] = RF(X,Class,Label,Features,TreeNo); fprintf('gotov.\n'); OutputFiles(RawImportanceScore,Votes,N); fprintf('-> kreirane izlazne datoteke.\n\n'); 8.2 Funkcija za čitanje podataka ReadData function [X,Class,Label,Features]=ReadData(file) fid = fopen(file,'r'); head = fgets(fid); head = fgets(fid); % citanje atributa Features=''; for bz=1:inf head = fgets(fid); index = [0 regexpi(head, '\s*')]; feature = head(index(2)+1:index(3)); % if strcmp(feature(1:5),'class') break, if strcmp(head(index(2)+1:index(2)+5),'class') break, Features = strvcat(features,feature); index1 = [regexpi(head, '{')]; index2 = [regexpi(head, '}')]; lab = head(index1+1:index2-1); % lab = head(index+1:-3); Class = regexp(lab, ',', 'split'); % citanje podataka Label=''; head = fgets(fid); head = fgets(fid); for k=1:inf head = fgets(fid); if isnumeric(head), break, temp = regexp(head, ',', 'split'); X(k,:) = str2double(temp(1:length(temp)-1)); temp2 = char(temp(length(temp))); if strcmp(temp2(length(temp2)),native2unicode(13)) temp2 = temp2(1:length(temp2)-2); else temp2 = temp2(1:length(temp2)); 16

Label = strvcat(label,temp2); Label = cellstr(label); fclose(fid) 8.3 Funkcija RF : function [RawImportanceScore,Votes,N]=RF(X,Class,Label,Features,TreeNo) LabelNo = length(class); FeaturesNo = length(features(:,1)); N = length(x); Votes = zeros(n,labelno); VotesTF = zeros(n,2); Votes_perm = zeros(n, LabelNo); VotesT_perm = zeros(n, FeaturesNo); VotesF_perm = zeros(n, FeaturesNo); global RandomForest on parfor t=1:treeno r1 = randint(1,round(n),[1 N]); % slucajan odabir indeksa podataka TrSet = X(r1,:); TrSetLabel = Label(r1,:); T{t} = treefit(trset,trsetlabel,'splitmin',2,'prune','off'); % izgradimo stablo na TrainingSetu bag = zeros(1,n); % Evidencija izvucenih uzoraka bag(r1) = 1; OOBIndex = find(bag == 0); OOB = X(OOBIndex,:); % Neizvuceni uzorci OOBLabel = Label(OOBIndex,:); ResultsIndex = treeval(t{t}, OOB); ResultsName = T{t}.classname(ResultsIndex); % rezultat i-tog stabla za oob % Glasanje po klasama for l=1:length(oobindex) for k=1:labelno Votes(OOBIndex(l),k) = Votes(OOBIndex(l),k) + strcmp(resultsname(l),class{k}); % Glasanje true/false for l=1:length(oobindex) VotesTF(OOBIndex(l),1) = VotesTF(OOBIndex(l),1)+ strcmp(resultsname(l),ooblabel{l}); VotesTF(OOBIndex(l),2) = VotesTF(OOBIndex(l),2)+ 1 - strcmp(resultsname(l),ooblabel{l}); % permutiranje i glasanje 17

for i=1:featuresno OOB_length = length(oobindex); r2 = randint(1,oob_length,[1 OOB_length]); OOB_perm = OOB; OOB_perm(:,i) = OOB(r2,1); ResultsIndex_perm = treeval(t{t}, OOB_perm); ResultsName_perm = T{t}.classname(ResultsIndex_perm); % rezultat i- tog stabla za permutirani oob for l=1:oob_length for k=1:labelno Votes_perm(OOBIndex(l),k) = Votes_perm(OOBIndex(l),k) + strcmp(char(resultsname_perm(l)),char(class{k})); for l=1:length(oobindex) VotesT_perm(OOBIndex(l),i) = VotesT_perm(OOBIndex(l),i)+ strcmp(resultsname_perm(l),ooblabel{l}); VotesF_perm(OOBIndex(l),i) = VotesF_perm(OOBIndex(l),i)+ 1- strcmp(resultsname_perm(l),ooblabel{l}); Score = zeros(n,featuresno); for i=1:featuresno Score(:,i) = VotesTF(:,1)-VotesT_perm(:,i); RawImportanceScore = sum(abs(score))/treeno; 8.4. Funkcija PROC : function PROC(Label,Class) fid = fopen('izlazna-glasovi2.txt', 'r'); figure for ic=1:length(class) m = dlmread('izlazna-glasovi2.txt',' '); br_redova=length(m); mat = zeros(br_redova, 5); mat(:,2) = m(:,ic+1); for j=1:br_redova mat(j,1) = sum(m(j,:))-m(j,ic+1)-m(j,1); mat(:,3)=mat(:,2)./(mat(:,1)+mat(:,2)); mat(:,5) = strcmp(label,class{ic}); prag=0; precision=0; recall=0; for br=1:100 sumtp=0; sumtn=0; sumfp=0; sumfn=0; for i=1:br_redova if (prag<mat(i,3)) mat(i,4)=1; else mat(i,4)=0; if(mat(i,4)==1 && mat(i,5)==1) 18

sumtp=sumtp+1; if(mat(i,4)==0 && mat(i,5)==1) sumfn=sumfn+1; if(mat(i,4)==1 && mat(i,5)==0) sumfp=sumfp+1; if(mat(i,4)==0 && mat(i,5)==0) sumtn=sumtn+1; precision(br)=sumtp/(sumtp+(sumfp)); recall(br)=sumtp/(sumtp+sumfn); prag=prag+0.01; colors = {'r','b','g','c','m','y','k'}; hold on plot(recall,precision,colors{ic}) xlabel('recall'); ylabel('precision'); fclose(fid); leg(class) grid 8.5 Poziv Slučajnih šuma data={'iris.txt' 'Wine.txt' 'Sonar.txt' 'Ionosphere.txt' 'Vehicle.txt' 'Segment.txt' 'Segment2.txt'}; TreeNo=100; i=1; [Label Class] = PARF(data{i},TreeNo); PROC(Label, Class) title([data{i},', broj podataka: ', num2str(length(label)),', broj stabala: ' num2str(treeno),]) 19