Neurovõrgud. Praktikum 14. 21. mai 2005. a. 1 WEKA WEKA (Waikato Environment for Knowledge Analysis) on masinõppimise ja andmekaevanduse algoritmide komplekt koos mugava keskkonnaga, mis on tasuta (GNU GPL) kuid väidetavalt ei jää alla ka paljudele kommertsrakendustele. Tema kasutajaliides on päris intuitiivne ning igaüks peaks vajaduse korral sellega ilma suure vaeva hakkama saama. Selles praktikumis vaatame seega ainult põgusalt põhilisi võimalusi. Edaspidises toodud näited ei iseloomusta mingeid mõistlike analüüsitehnikaid, eesmärk on pigem võimalikult kiiresti kõike läbi klikkida. WEKA on kättesaadav aadressil http://www.cs.waikato.ac.nz/ml/weka/. Laadige sealt faili weka-3-4-4.zip, pakkige seda lahti (näiteks /tmp kataloogi), ning käivitage programmi käsuga java -jar weka.jar: /tmp$ unzip weka-3-4-4.zip /tmp$ cd weka-3-4-4 /tmp/weka-3-4-4$ java -jar weka.jar Avaneb aken, mis pakub neli töörežiimi: Simple CLI 1, Explorer, Experimenter ja KnowledgeFlow. Valige alguses Explorer-i. 2 Explorer 2.1 Andmete Visualiseerimine Avage Exploreris faili iris.arff (ta asub weka alamkataloogis data). Andmestikus on esitatud andmed kolme erineva iirise liiki kohta (andmeid saab näha vajutades nupu Edit üleval). Vasakul näeme andmestiku kirjeldust ning temas olevaid atribuute. Valides ühte atribuuti näeme paremal informatsiooni selle atribuuti kohta ning tema jaotust klassikaupa värvitud. Uuri erinevaid atribuute. Millised nendest aitavad ennustada klassi kõige kindlamalt? 1 CLI = Command Line Interface 1
Valige nüüd üleval tab-i Visualize. Mida saab sellisest scatter-plot maatriksist näha? Milleks on vajalik Jitter parameeter? Klikkige mõnel scatterplottidest selleks et saada suurema ekraani. Uurige seda ekraani võimalusi. Pange tähele mida teeb Alt+Shift+Click graafiku peal. 2.2 Andmete eeltöötlus ja atribuutide valik Minge nüüd jälle tab ile Preprocess. Seal saab rakendada andmetel filtreid. Uurige filtrite valiku. Pange tähele et seal on nii elementaarsed eeltöötlusevahendid (keskmistamine ja normaliseerimine), abivahendid nagu sõnedetöötlemine või aegridade autoregressiivne esitus, kui ka keerulisemad meetodid nagu klasterdamine. Rakendage filtrit, mis kasutab EM klasterdamisalgoritmi ning lisab andmetele selle abil veel ühte atribuuti: algoritmiga leitud klastri indeksi. Uurige kui hästi lisatud atribuut korrelleerub tegeliku klassiga (soovitav vaadata seda scatter ploti peal). Kustutage lisatud atribuuti. Proovime nüüd Select Attributes tab i. Kasutage kõiki atribuutide täieliku läbivaatust koos subset consistency hindamismeetodiga selleks et valida andmetest parima atribuutide alamhulga. Kas said valitud õiged atribuutid? Sealsamas saab teha ka peakomponentide analüüsi. Kui palju peakomponente on vaja selleks et kirjeldada 99% varieeruvust andmetes. All vasakul on Results list. Klikige seal PCA kirje peal hiire parema klahviga ning valige kontekst menüüst Visualize transformed data. 2.3 Klasterdamine ja assotsiatsioonireeglite leidmine Tab Cluster lubab rakendada andmetele klasterdamisalgoritme ning Associate assotsiatsioonireegleid. Proovige leida K-Means klasterdusalgoritmiga andmetest 3 klastrit. Tulemuse kvaliteedi hindamiseks võrrelge leitud klastrid õigete klassimärgenditega. Uurige väljundit. Milline on klasterdamise täpsus (õige klassi suhtes)? Pange tähele et huvitava pildi saab siit valides Result List-i vastava kirje kontekstmenüüst Visualize cluster assignments. Assotsiatsioonireeglite uurimiseks diskretiseerime alguses kõik atribuutid binaarseteks. Tehke seda kasutades filtri Discretize. Nende andmete peal võib nüüd jooksutada Apriori algoritmi. Edaspidiseks võtke maha diskretiseerimist kasutades näiteks Undo nupu (või avage andmefail uuesti). 2.4 Klassifitseerimine Tab Classify pakub laia spektrit klassifitseerijatest. Rakendage andmetel J48 otsustuspuu konstrueerimise algoritm, mille täpsust testige 10-fold crossvalidationi abil. Uurige väljundid. Vaadake ka Result List-i kontekstmenüüst Visualize tree. Millised atribuutid on kasutatud konstrueeritud puus? Milline on konstrueeritud mudeli viga ning kuidas oli see arvutatud? Mida 2
tähendavad TP rate, FP rate, Precision, Recall, F-measure ja Confusion matrix? Rakendage ka SVM klassifitseerijat. Kas tema täpsus on parem? Sealsamas saab rakendada ka regressiooni. Proovige näiteks ennustada atribuuti petalwidth teiste atribuutide abil kasutades mitmekihilist pertseptroni. Selleks kustutage andmetest atribuuti class ning määrake klassiatribuutiks petalwidth. Nüüd valige klassifitseerijaks MultilayerPerceptron. Konfigureerige teda kasutama GUI-d, ning kihtide arvuks valige 2. Andmeid jagage treening- ja testhulgaks proportsioonis 80/20. Uurige kuidas kasutada GUI selleks et ehitada ja modifitseerida võrku. Jooksutage 5000 treenimisepohhi. Milline on treenitud mudeli viga? Kas see on hea või halb? 2.5 Andmebaasi liides WEKA oma andmete formaat on ARFF. See on plaintext, võite vaadata kuidas ta välja näeb avades näiteks seda sama iris.arff tekstiredaktoris. Weka oskab avada ka CSV faile, kuigi sellega on mõnikord probleeme. Mugav on andmeid hoida andmebaasis, järgmine näide näitab kuidas neid baasist kätte saab. Laadige maha faili mysql-jdbc.jar ning pange teda samasse kataloogi kus asub ka weka.jar. Käivitage WEKAt nüüd järgmise käsu abil 2 /tmp/weka-3-4-4$ java -cp weka.jar:mysql-jdbc.jar weka.gui.guichooser Käivitage Explorerit, vajutage seal Open DB... Kasutage järgmised parameetrid: databaseurl: jdbc:mysql://ats.cs.ut.ee/neuralnets password: neuralnets query: select * from cells sparsedata: False username: neuralnets Tulemusena peab avanema teile juba tuttav rakude andmestik, mille peal võite katsetada visualiseerimisi ja muid algoritme (kuid eelnevalt kustutage sealt atribuuti id, mis oli vajalik ainult andmebaasi jaoks). 3 Käsurea kasutus Kõik WEKA algoritmid on tehtud niimoodi et neid on lihtne kasutada käsureast (ja seega integreerida automaatsetes skriptides). Proovige näiteks: /tmp/weka-3-4-4$ java -classpath weka.jar weka.classifiers.trees.j48 -t data/iris.arff -i 2 Windowsi all on path-i eraldajaks semikoolon ;, mitte : 3
4 Experimenter Experimenter on keskkond mille abil saab jooksutada mitu algoritmi mitme andmestiku peal mitu korda ja saada kõik tulemused mugavalt tabeli kujul. Proovige selle abil treenida RBF võrgu kolme erineva ridge parameetri väärtusega, J48 otsustuspuud vaikimisi parameetritega ning ZeroR klassifitseerijat 3 andmestikutel iris.arff ja contact-lenses.arff. Kasutage 10-fold cross-validationit, korrake igat jooksu 3 korda, ning tulemused salvestage CSV faili result.csv. Pärast jooksutamist minge Analyze tabi peale, ning avage seal seda result.csv faili. See ekraan lubab vaadata keskmistatud kokkuvõtteid Pivot-tabelitena, ning rakendada statistilisi teste oluliselt paremate klassifitseerijate tuvastamiseks. Valige näiteks Test-Base rolli ZeroR, ning vajutage Perform Test (muud parameetrid jätke nagu on). Tulemusena näeme klassifitseerijate täpsuste tabelit. Täpsuse juures on märgitud v, kui vastava klassifitseerija täpsus on statistiliselt oluliselt parem kui Test-Base-i rolli valitud klassifitseerija täpsus. Viisakamate tabelite ja graafikute koostamiseks võib avada CSV faili näiteks Excelis. 4.1 Hajusarvutused Experimener pakub võimalust hajutada pikki arvutusi mitme arvuti vahel. Selleks tuleb jooksutada nendel arvutitel Remote Experiment Server, ning paluda Experimenterit saata ülesandeid sinna. Teeme läbi lihtsa näite: Pakkige lahti WEKA kataloogis oleva faili remoteexperimentserver.jar, ning asetage seal oleva faili remoteengine.jar eraldi alamkataloogi: /tmp/weka-3-4-4$ jar xvf remoteexperimentserver.jar /tmp/weka-3-4-4$ mkdir remote /tmp/weka-3-4-4$ mv remoteengine.jar remote Laadige praktikumilehelt alla faile remote.policy ja startserver.sh ning pange samasse kataloogi remote. Juhul kui te kasutate kataloogina midagi muud kui /tmp/weka-3-4-4, muutke faile vastavalt. Samasse kataloogi pange ka andmefaili iris.arff. Käivitage serveri: /tmp/weka-3-4-4/remote$ bash startserver.sh 3 ZeroR on tavaline majority vote 4
On ok, kui ta ütleb vahepeal et mingi Connection refused. Nüüd jookseb teie arvutis server, kuhu Experimenter oskab ülesandeid saatma. Tegelikkuses peaks selliseid servereid käivitama mitu tükki ning hea oleks kasutada mingit ühist andmebaasi kuhu nad kõik saaksid tulemusi saatma, kuid meie piirdume siin sellise teoreetilisema näitega. Käivitage nüüd WEKA-t järgmiselt: /temp/weka-3-4-4$ java -Djava.rmi.server.codebase=file:/tmp/weka-3-4-4/weka.jar -cp weka.jar weka.gui.guichooser Disainige Experimenteris mõnda eksperimendi, mis kasutaks andmestiku iris.arff (seda, mis asub kataloogis remote). Tulemusi kirjutage faili result.csv kataloogis remote 4. Minge Advanced režiimi, ning pange linnukest Distribute Experiment juurde. Lisage nimekirja Hosts oma arvutit (localhost). Nüüd jooksutage eksperimendi. Kui kõik läheb hästi siis näete et eksperiment oli saadetud serverile, ning kataloogis remote salvestati tulemuste fail result.csv. 5 Knowledge Flow Knowledge Flow pakub ilusat graafilist võimalust disainida eksperimente kastikeste ühendamise meetodil. Disainige järgmist eksperimenti: andmebaasist laetakse rakude andmestik, andmestikust eemaldatakse atribuut id (atribuut nr 1). Sellest täis andmestikust nüüd valitakse välja mõne meetodiga olulisemad atribuutid ning visualiseeritakse paarikaupa scatter plotide abil. Seesama täis andmestik jaotatakse treening- ja testhulgaks (80/20) ning selle peal treenitakse SVM klassifitseerija. Hinnatakse saadud klassifitseerija täpsust, ning klassifitseerija treenimise ja täpsuse raportid saadakse TextView-sse. Kui protsessi visuaalne mudel on valmis, valige andmete laadija kontekstmenüüs Start loading selleks et protsessi käivitada. Visualiseerijate kontekstmenüüde abil saab näha tulemusi ja pilte. 4 Teine võimalus on katalooge üldse ära jätta 5