KONPUTAZIO ZIENTZIETAN METODO MATEMATIKOAK 09-10
UNIVERSIDAD DEL PAIS VASCO - EUSKAL HERRIKO UNIBERTSITATEA, UPV-EHU

                                                                                       

PRAKTIKA IV: SAILKATZAILE ANITZAK eta ALDAGAI AUKERAKETARAKO TEKNIKAK

 exclam.gif (14233 bytes)  Entregatze epea: maiatzak 19, asteazkena. Gaiak aurrera joan ahala, galdera gehiago jarriko ditut.


==== WEKA formatoko datubaseak: kurtso guztian zehar eta praktika guztietarako erabil itzazu ====

 

[Galdera 1 -- Sailkatzaile anitzak WEKA-n: the "meta" family of supervised classifiers] -- WEKA-ren "meta" familian dauden hainbat "sailkatzaile anintzentzako": AdaBoostM1, Bagging, Stacking eta Vote. Beraien "more" botoia sakatu behin aukeratu eta gero, eta bakoitzarentzako, saiatu explikatzen ahal dituzun bere parametro gehienak (denak ez dituzu ulertuko) (klaseko teoriarekin "matcheatu" WEKA-ren terminologia).

 

[Galdera 2 -- Sailkatzaile anitzak: stacking egitearen abantaila?] -- WEKA-k "meta" familiaren barruan sailkatzaile anitzetarako aukera desberdinak eskeintzen ditu. Bertan ikusiko dituzu klase teorikoetan aurkeztutako batzuk.

"Vote" saillkatzailearekin "gehiengoaren botoaren" (edo "Plurality vote") sailkapen eskema egikaritzen da: predizitutako klasea etiketatu gabeko kasu batentzat erabakitzen da oinarrizko sailkatzaile talde baten botoaz. "Vote" metodoaren "classifiers" parametroarekin oinarrizko sailkatzaile hauek hautatzen dituzu (naive Bayes, J48, etc.). Ohartu zaitez, lehenik, "classifiers" parametro honetan defektuzko "ZeroR" ("Zero Rules" = erregelarik ez = ez ikasi "ezer" eta datu fitxategian klase nagusia beti predizitu edozein kasurentzat) sailkatzailea kendu behar duzula...

"Stacking" eskemaz proposatutako multisailkatzailea klase teorikoetan ikusi duzu. Bigarrengo nibel batetan "meta"-sailkatzaile bat kokatzen da non hau entrenatua izaten den oinarrizko sailkatzaileek (lehen nibela) predizitzen duten klaseekin (eta bukaeran berriro klase erreala kokatuz: horrekin entrenatzen da bigarren nibeleko metasailkatzailea, eta hauxe erabiliko da kasu bakoitzaren azken apostua egiteko). Uler itzazu "classifiers" eta "metaClassifier" parametroak. Uler ezazu klase teorikoetan ikusitakoa.

300 kasu baino gehiago dituen problema bat aukeratu. Hiru zure hautazko sailkatzaileekin "Vote" eta "Stacking" eskemak landu itzazu (azken honentzat bigarrengo nibelean "fidatzen" zaren sailkatzaile bat kokatu), eta ikertuko dugu ea "Stacking"-en bigarrengo nibel honek "plus" bat ematen digun. Zorizko hazi desberdinak ("More options"-- "random seed") erabiliz H metodoaren 5 exekuzioen bidez "Vote" eta "Stacking" eskemen asmatze tasa estima ezazu: eta hauetan oinarrituz, pasatako praktikan egin bezala, konparaketa estatistiko bat egin ezazu test ez-parametriko baten bidez bi sailkatzaileen artean.

"Estatistikoki esangarria" al da "Stacking"-ek ematen duen abantaila asmatze tasaren ikuspegitik? Oinarri estatistiko batekin, hitzegin al daiteke sailkatzaile irabazle/galtzaile batetaz konparaketan?

Gogoratu "statistical significance" (edo "p-value") kontzeptuaren explikazio intuitiboak (pasatako Praktikaren 2. galderan):

 

                                                        
 

 

[Galdera 3 -- Sailkapen gainbegiratua -- etiketatu gabeko kasu berri batentzat "apostua", iragarpena] --  Pentsa ezazu gure datubaseko kasu guztiekin sailkatzaile bat eraiki dugula (kontutan hartu sailkatzailea eraiki dugun kasu guztien klase etiketa jakin bat zutela). Pentsa ezazu orain geroan kasu berri bat etortzen dela, baina KLASE GABEKOA, ETIKETA GABEKOA (adibidez "Iris" problemaren kasuan 151 landarea non botanikoak ez dakien zein iris motakoa den...). Ikasketa automatikoaren funtzio nagusietako bat da aldez aurretik eraiki dugun sailkatzailearekin, klaserik gabe etortzen diren kasu hauentzako klase aldagaia predizitzea, "apostua egitea". Funtzio honi "kategorizatu" bezala ere ezagutzen zaio, edo "class prediction". Hemen sailkatzaileak "apostua" itxuan egiten du, eta benetan ez daki asmatu duen edo ez: "spam karpetara joaten zaizkigu ere gure lagunen mail-ak...", "edo euria iragarrita dagoenean biharko, gero eguzkia dugu..."

Goazen WEKA-n egoera hau simulatzea. Hautatu lan egiteko WEKA formatoko datubase bat. Sortu ezazu *.arff fitxategi berri bat zuk asmatutako 5 etiketatu gabeko kasuekin, non '?' balioa jartzen duzun klasean (WEKA-k hau eskatzen du, "zerbait" jarri klase aldagaian, nahiz balio galdua izan). Kontutan izan sortzen duzun fitxategi berriak entrenamendukoaren formato bera jarraitu behar duena: inkluso bere "WEKA cabeceran", aldagaien definizio berbera jarraituz: aprobetxatu entrenamendukoarena eta kopiatu zuk asmatutako 5 klase gabeko instantzien fitxategian.

Begirada bat emaiozu hau egiteko WEKA-ren lan manualari, eta "test-options"-eko bigarren aukeraren bidez ("supplied test-set"), esandakoa simulatu daiteke. Eta ikusi zein klase predizitzen duten zure aukerako diren bi sailkatzaile desberdinek, zuk asmatutako 5 kasuentzat. Baina kontutan izan sailkatzaileak ez direla eraiki zure 5 instantziekin (klase gabekoak), baizik eta zure entrenamendu fitxategiko guztiekin (hau da, "Preprocess" leihoan kargatu dituzun, eta etiketatutak dauden kasu guztiekin...). 

Lehenik kargatuta izan WEKA-n zure entrenamendu fitxategia, klase erreala duten kasu guztietakoa: hauekin gerora predikzioak egingo dituen sailkapen modeloa ikasiko da. Gero, WEKA-ri "Supplied test-set" aukerarekin klase ezezaguneko kasuak eman behar dizkiozu.

Ikusteko zein klase iragartzen den etiketarik ez duen kasu bakoitzarentzat, "More options"-en, desaktibatuta dagoen aukera bat aktibatu behar duzu. Zein?

Erakutsi zein den zure bi sailkatzaileek iragartzen duten klasea zure 5 kasuko bakoitzarentzat. Ez diozu begiratu nahi "confusion matrix"-i, non ez den diferenziatzen zer prediziten den kasu bakoitzarentzat, baizik orokorrean. WEKA-ren irteeran hainbat kontzeptu agertzen dira klase gabeko 5 kasu horietako bakoitzarentzat: "actual", "predicted", "error" (honek ez du zentzurik), "probability distribution": laburki argitu eta komentatu zer den hauetako bakoitza. ETA ULERTU EGITEN ARI ZARENA.                                                     

 

[Galdera 4 -- Sentiment Analysis -- Irakurketak] --  "Sentiment Analysis" problema gure gizartean agertu berria da. Konpainia handiak (hotelak, arropa eta diseinu markak...), beraiek mediotan erosten duten publizidadeaz baino kezkatuagoak, Internet-eko foro eta blog-etan beraietaz nola hitzegiten den eta zein imagina duten gehiago kezkatzen die, bait dakite gaur egun foro horietara jotzen dugula eros dezakegun produktu bati buruz kontsulta egiteko. Nielsen, Asomo (Bilbon dago hau), Jodange... bezalako enpresak dedikatzen dira konpainia handiei informeak egitea Internet-en duten imaginari buruz. Horrela, enpresa hauetako langileak ordu asko dituzte Internet-en, baina ados egongo zareta nirekin ezin dutela orduak eta orduak egon blog eta foro asko ikusten, eta hor dauden sarrerak eta komentarioak irakurri eta "etiketatzen" eskuz (hau da, esanez post batetan agertzen den imagina konpainia bati buruz positiboa den edo ez)... lan izugarria, partzialki egin dezakete, baina "robot" edo "programa automatiko" bat behar dute non, Internet "rastreatzen" duena konpainia edo produktu jakin baten komentarioen inguruan, eta AUTOMATIKOKI kategorizatuko-sailkatuko duena post horietako idazlearen sentimendua: "positive sentiment", "neutral sentiment","negative sentiment" ("or opinion").

    Irakur itzazu gai honen inguruko bi artikulu hauek:

Irakurri eta gero, hurrengo galderei erantzun:


                                     

 


 

[Galdera 5 -- Aldagai aukeraketa -- Feature selection -- Feature ranking -- Univariate feature selection] --  Zihur joan zarela somatzen kurtso guztian zehar problema batetan, aldagai iragarle guztien garrantzia ez dela berdina klasea predizitzerako garaian. Aldagai redundanteak (informazio bera aportatzen dutenak: e.g., soldata eurotan eta soldata dolarretan) eta aldagai garrantzigabekoak ("irrelevant features", klase-aldagaiarekin inongo erlazioa ez dutenak) sailkatzailearen asmatze tasa gutxitzen dute. WEKA-rekin aldagai aukeraketarako ariketa anitz egin daitezke bere "Select Attributes" goiko fitxarekin ("pestaņa"), eta era batera edo bestera jakin problema baterako zeintzuk diren aldagai garrantzizkoenak. Arlo honi "Feature selection" bezala ezagutzen zaio eta oso erabilia da machine learning-en.

Erarik errazena jakiteko zeintzuk diren aldagai garrantzizkoak, hauen ordenazio edo "ranking" bat egitean datza. "Ranking" hauek isladatzen dute, handienetik txikira, zenbateko korrelazio maila (erlazioa) duten problemaren aldagai iragarle bakoitzak klasearekin. Korrelazio maila hauek kalkulatzeko metrika (neurri) asko daude teorian ("Attribute Evaluator", WEKA-n). Hauetako hiru neurriek, zerikusi haundia dute sailkapen zuhaitzetan aldagaiak kokatzeko neurriekin, hau da, entropia eta Informazio Teoriarekin: "gain ratio", "info gain" (J48 eraikitzekoa) eta "symmetrical uncertainty". Aukeratu itzazu eta beraien izenaren gainean klikatuz eta gero "More" klikatuz ikusi zein formula erabiltzen duten aldagai prediktore baten korrelazio maila kalkulatzeko eta hauek rankeatzeko: ulerterrazak dira.

Ohartu zaitez hauetakoak aukeratzerakoan, WEKA-k esaten dizula soilik "Rankeatu" ditzakela eta ordenazio hori erakutsi. Metrika hauek "univariate metric" dira, aldagaiak banan banan ikertzen dituztelako, eta ez besteekin kontextu edo erlazioan.

10 aldagai iragarle baino gehiago dituen datubase batentzat (hau da, "jokoa ematen" dizuna), ondokoa egin:

 
 

[Galdera 6 -- Aldagai aukeraketa -- Feature selection -- Feature ranking -- Univariate feature selection] --  Aurreko galderarekin erlazionatuta. WEKA-ren lehenengo "Preprocess" fitxan posible da aldagaiak ezabatzea modeloa egin baino lehen. Kontutan izan aurreko galderan egin duzun ranking-a, eta "top-ranked"-eko portzio batekin geratu zaitez modeloak eraikitzeko: zuk erabaki heren onenarekin, erdi onenarekin... (ez ezabatu klase aldagaia!!!)

Test estatistiko ez-parametriko (gure kasuan, "Mann Whitney" test) eta Hold-out asmatze-tasa estimatzeko 5 exekuzioen bidez, konparaketa estatistiko bat egin ezazu ondoko bi eskemen artean:

Ondokoa kontutan izan ezazu: "Ranker" metodoaren parametroen artean, "numToSelect" parametroa erabilgarria da, uler ezazu: exekuzioa egin eta gero, pantailaren ezker-behe parteko "Result-list"-en propietateen artean (arratoiaren eskubiko botoiarekin) "Visualize reduced data" erabilgarria al da? Zer erakusten dizu honek?

Abantailik ba al du asmatze tasaren ikuspuntutik aldagai kopurua murriztea?  Nahiz eta aldagai iragarle kopurua murriztu, asmatze tasa ez al da "estatistikoki txarragoa"? Era honetako konklusioak bildu eta komentatu.

                                         

 

[Galdera 7 -- What did you discover about this subject? Where is your curiosity leading you?] --  Zihur nago ez zara "ikasle funtzionarioen" artean sentitzen, eta kuriosidadea, jakin-mina eta jakiteko gogoa hor daudela bueltaka... pentsatu nahiko nuke aste hauetan zehar eta irakasgai honen inguruan horrelako zerbait noizbait sentitu duzula. Horrela izan ez bada nik ere zerbait gaizki egin dut.

 

[Galdera 8 -- Sailkapen ez gainbegiratua -- Clustering -- "Class discovery"] --  Ondoko fitxategia ("food.arff"= clustering egiteko aproposa da. Bertan, hainbat jaki-janari ("kasuak", datu analisiaren ikuspegitik) agertzen ditu, non bakoitza karakterizatzen den hainbat aldagaiengatik: fitxategiaren testua ikusiz gero, ilara-kasu bakoitzean, lehenik janari bakoitzaren izena agertzen da, eta gero bera deskribatzen duten 5 aldagai (ulerterrazak, ez da?). Kasuek ez dute "klase aldagairik":

Goazen "ariketa hau simulatzea" eman dizuedan "food.arff" datubasearekin (baita janarien izena ingelesez ikasteko aukera ona...):

 

[Galdera 9 -- Sailkapen zuhaitzak -- "ad hoc" edo eskuz erabikitako arbolak] --  "Trees" familiaren barruan dagoen "UserClassifier" sailkatzaileak aukera asko, eta oso kuriosoak, baditu. Beharbada lehenengo momentuan ez da erraza berataz jabetzea, baina guztiz oinarrituta dago WEKA-ren erabiltzailearen intuizioan: helburua delarik, zuk eskuz, 2-D-ko grafiketan oinarrituz, zure sailkapen arbola eraiki dezazun. Zure atentzioa eraman ezazu lehenik erakusten dizun 2-D grafikan ("Data Visualizer"): errektangeluen bidez ("Select instance ---> rectangle") defini ditzakezu arbolaren adarrak, eta hauen bidez bazoaz pixkanaka zuk deritzozun arbola eraikitzen, definituz ingelesez deritzon "decision boundaries" (klase desberdinen arteko "erabaki mugak").
Honetarako, beharbada "iris.arff" bezalako problema sinple bat erabiltzea da onena (3 klase eta 4 aldagai iragarlekin).
Posible izango zen teknika hau erabiltzea datubase zailago batekin: aldagai askotakoa, eta klase desberdinek beraien artean solapamendu handiagoa balute?
Saiatu zaitez sailkatzaile honen aukerak ulertzen. Komenta itzazu, eta esaidazu zer iruditu zaizun. Eta definitu zein abantaila/desabantaila ikusten dizkiozun.
Saiatu zaitez ulertzen zein lotura dagoen "Tree Visualizer" eta "Data Visualizer", sailkatzaileak eskaintzen dituen bi leiho hauen artean: antzemanez "Data Visualizer"-en delimitatzen dituzun "erabaki mugek", zein eragina duten pixkanaka "Tree Visualizer"-en eraikitzen den sailkapen zuhaitzaren estrukturan.
Ohartu zaitez eraikitze prozedura osoan zehar, WEKA-ren "txoria" mugitzen dagoela, "model building"-ean murgilduta bait dago. Eta "Test-options"-en aukera "10-fold cross-validation"-en baduzu, 11 aldiz egin araziko dizu exekutatzea teknika osoa (11 aldiz pantaila guztiak): zergatik 11 aldiz (zein da horietako bakoitza)? Modeloa balidatzea interesatzen al zaizu (hau da, bere asmatze tasa kalkulatzea), edo soilik eraikitzea?
 

 

[Galdera 10 -- Aldagai aukeraketa -- wrapper teknikak -- Algoritmo genetikoak] -- Hasi baino lehen, atera itzazu aldagai aukeraketarako apunteak, eta errepasatu: bereziki "wrapper" (erderazko "envoltura" bezala itzuli daiteke). Erlazio estua du aurrez jarritako 5-6. galderekin. Lehenengo galdera osoa irakurri, kontutan izan teoria, eta geor joan sekuentzian lantzen:

 

LABORATEGIEKIN BUKATZEKO, zuen IRITZI PERTSONALA jaso nahiko nuke: