MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Analýza experimentov strojového učenia BAKALÁRSKA PRÁCA Katarína Švecová B r n o , j a r 2 0 2 1 MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Analýza experimentov strojového učenia BAKALÁRSKA PRÁCA Katarína Švecová B r n o , j a r 2 0 2 1 Na tomto mieste sa v tlačenej práci nachádza oficiálne podpísané zadanie práce a vyhlásenie autora školského diela. Vyhlásenie Vyhlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracovala samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používala alebo z nich čerpala, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Katarína Švecová Vedúci práce: doc. RNDr. Lubomír Popelínský, Ph.D. i Poďakovanie Ďakujem vedúcemu tejto práce, pánovi docentovi Popelínskemu, za obrovskú mieru ochoty a trpezlivosti so mnou. m Zhrnutie Práca sa týka výskumu ohľadne vplyvu odstránenia anomálií na výsledky klasifikácie. Uvádza informácie o open source projekte OpenML, ktorý je významným kolaboratívnym projektom z oblasti strojového učenia. Ďalej hovorí o významných metaatribútoch a popisuje nástroj vyvinutý v Prologu na spracovanie a analýzu výstupov z experimentov s odstraňovaním anomálií. Na záver ukazuje jeho praktické využitie na analýzu parametrov experimentov ako aj na metaatribúty. iv Kľúčové slová machine learning, OpenML, outlier detection, meta-attributes v Obsah Úvod 1 1 Motivácia 3 2 Projekt OpenML 5 2.1 Popis 5 2.1.1 Dataset 5 2.1.2 Úloha 6 2.1.3 Tok 6 2.1.4 Beh 7 2.2 Význam OpenML 7 2.3 Podobné projekty 8 3 Metaatribúty 9 3.1 Opisné metaatribúty 9 3.2 Štatistické metaatribúty 10 3.3 Landmarking 11 3.4 Významné metaatribúty 11 4 Nástroj na podporu analýzy experimentov 13 4.1 Motivácia 13 4.2 Dáta o experimentoch strojového učenia 13 4.3 Popis nástroja 15 4.3.1 Načítanie dát z csv súboru 15 4.3.2 Ukladanie výsledkov do csv súboru a mazanie pamäte 16 4.3.3 Prehľadávanie dát 17 4.3.4 Operácie relačnej algery 20 4.3.5 Agregácie a štatistické metódy 23 4.3.6 Zložené príkazy 26 4.3.7 Testovanie rovnosti 29 4.4 Vyhodnotenie 33 5 Experimenty 35 5.1 Generovanie dát 35 5.2 Získané výsledky 36 vii 5.2.1 Parameter accuracy 36 5.2.2 Parameter gain_clfbest 40 5.2.3 Práca s metaatribútami 43 Záver 47 viii Úvod Množstvo generovaných dát z roka na rok rastie a s ním narastá aj potreba efektívnej analýzy. Strojové učenie poskytuje možnosť analýz týchto dát a robenia predpovedí na nich, avšak, keďže sa neobmedzuje len na jednu konkrétnu funkciu, ktorú by používateľ mohol spustiť a získať presne to, čo potrebuje, množstvo dostupných možností, ich kombinácií a možných nastavení sa stáva až neprehľadným a orientácia v nich je často neefektívna. Existujú dlhodobé snahy viacerých inštitúcií vyvinúť nástroje umožňujúce automatické strojové učenie [a] (alebo AutoML), ktoré by uľahčovali používateľovi výber vhodných funkcií, či ich kombinácií (napríklad AutoWeka) ale je ešte veľa priestoru na hľadanie toho, čo všetko by mohli využívať a aké výsledky by mohli dosahovať. Jednou z málo preskúmaných oblastí v AutoML je detekcia anomálií (outlier detection) a jej možné využitie pri problematike klasifikácie dát. Laboratoř dobývání znalostí na Fakulte informatiky Masarykovej univerzity sa v rámci svojho výskumu snaží práve o hlbšie preskúmanie tejto problematiky. V tejto práci budeme hovoriť o využití metaatribútov pri automatickom strojovom učení a o projekte OpenML, združujúcom veľkú databázu datasetov a údajov o nich. Pri experimentoch vrámci Laboratoře dobývání znalostí vzniká veľké množstvo špecifických dát, ktoré sa časom menia a rozširujú. Hlavnou náplňou tejto práce je ich analýza a vytvorenie nástroja, ktorý by ju pre tieto dáta dokázal efektívne vykonávať. Nástroj bol vyvinutý v Prologu a dokáže načítať dáta a pridať ich do svojej bázy znalostí, robiť na nich základné operácie relačnej algebry a vykonávať na nich zložitejšie požiadavky, špecifické pre dáta z týchto experimentov. Práca na záver demonštruje, ako sa s pomocou nástroja dajú zodpovedať rôzne otázky o vplyve odstraňovania anomálií na výsledky klasifikácie. Najvýraznejším získaným výsledkom je zrejme zistený vplyv rozptylu výsledkov pre daný klasifikátor za použitia odstránenia anomálií na výsledky klasifikácie. 1 1 Motivácia Laboratoř dobývání znalostí Fakulty informatiky Masarykovej univerzity v súčasnosti skúma vplyv odstránenia anomálií na výsledky klasifikácie. Hlavnými faktormi sú datasety a ich meta-atribúty, metódy detekcie anomálií (outlier detection methods) a ich nastavenia, podiely odstránených anomálií a metódy klasifikácie a ich nastavenia. Ich výber a počet sa neustále mení, ako sa výskum rozširuje a zisťujú sa nové informácie. Hlavnou otázkou výskumu je, či a za akých okolností napomáha odstránenie anomálií výsledkom klasifikácie. Ide o zatiaľ príliš neprebádanú oblasť, avšak predbežné výsledky naznačujú, že odstránenie anomálií by mohlo byť pri klasifikácii v niektorých prípadoch skutočne nápomocné - vo výnimočných prípadoch hodnota accuracy pri správnej kombinácii klasifikátor - metóda detekcie anomálii - percento odstránenia narastá aj o 10 percent oproti najlepším výsledkom dosahovaným bez odstránenia anomálií. Experimentálny spôsob výskumu produkuje veľké množstvo dát. V prvom rade je to výsledná hodnota accuracy pre každú kombináciu dataset - metóda detekcie anomálií (prípadne ešte jej nastavenia) - percento odstránených anomálií - klasifikátor (prípadne jeho nastavenia). Tu nás môže zaujímať viacero informácií - napríklad ktoré klasifikátory majú všeobecne lepšie výsledky, ktoré kombinácie klasifikátor - metóda detekcie anomálií sú úspešnejšie, aký má vplyv percento odstránených anomálií na zlepšenie/zhoršenie hodnoty accuracy... Predbežné výsledky ukazujú, že vo väčšine prípadov odstránenie anomálií nepomôže klasifikácii, alebo ju dokonca zhorší. Ukazuje sa však veľká rôznorodosť výsledkov pre jednotlivé datasety, klasifikátory, či metódy odstraňovania anomálií. Prípadov, kedy odstránenie anomálií skutočne pomôže výsledku je síce menšina, avšak stále ostávajú dôležité a tak ich odhalenie sa stáva významným predmetom ďalšieho skúmania. 3 i . MOTIVÁCIA Pre meta-learning a zistenie toho, v akých prípadoch sa pri klasifikácii pomocou odstránenia anomálií hodnota accuracy zlepší, nie sú významné názvy daných datasetov, ale ich metaatribúty (vlastnosti jednotlivých datasetov). Tým pádom vznikajú ďalšie samostatné rozsiahle údaje významné pre výskum. Takto vzniká množstvo dát, ktoré programy bežne používané na analýzu už nemusia zvládnuť. Z možných riešení bol zvolený Prolog pre svoj jedinečný prístup k dátam ako k báze znalostí. 1. Strojové učenie nad výsledkami strojového učenia. 4 2 Projekt OpenML 2.1 Popis OpenML je open source kolaboratívny projekt na GitHube prístupný na stránke https: //www. openml. org/, ktorého hlavným cieľomje sprístupnenie strojového učenia. Stojí na 4 základných množinách záznamov: dataset, task, flow, run. [2, 3] 2.1.1 Dataset Dataset je základný kameň strojového učenia. Je to tabuľka hodnôt, ktoré skúmame a na ktorých môžeme trénovať a testovať modely strojového učenia. Obsahuje n riadkov - n záznamov a m stĺpcov - m meraných hodnôt pre každý záznam. Na stránkach OpenML sú dané súbory dostupné v rôznych formátoch - klasickom csv a vo formáte arff, spracovateľnom Wekou a ktokolVek si ich môže stiahnuť či pridať nové datasety. Každý dataset sa dá vyhľadávať pomocou textového vyhľadávania a každý dataset má svoju stránku so všetkými svojim údajmi, stiahnuteľnými súbormi, autorom, zdrojom a prípadne aj s textovým popisom. OpenML eviduje cez 3 000 aktívnych datasetov[4], mnohé z nich sú obmenenými verziami menšieho počtu jedinečných datasetov. Príkladom je dataset iris, ktorý je možné nájsť v rôznych obmenách aspoň 48 krát.1 [2] Názov každého stĺpca (atribútu, na stránkach v angličtine feature) stránka automaticky zobrazí v prehľadnej tabuľke a pridá údaje o type atribútu (numerický, nominálny alebo string), počte rôznych záznamov, o počte chýbajúcich hodnôt a taktiež zobrazí rozloženie hodnôt daného atribútu pomocou grafu (v prípade numerických hodnôt využíva krabicový graf, pre nominálne atribúty stĺpcový). [2,3] OpenML tiež poskytuje ku každému datasetu veľké množstvo metaatribútov - vlastností daného datasetu (napr. počet riadkov/stĺpcov, štatistické údaje, či výsledky landmarkingu), ktoré sa využívajú 1. viď OPENML Iris search, https: //www. openml. org/search?q=iris&type=data 5 2. PROJEKT O P E N M L na zisťovanie vlastností daného datasetu, či metalearning (učenie z výsledkov strojového učenia). Sú zobrazené na stránke (pod názvom properties, a data quality) a tiež dostupné na stiahnutie v JSON formáte. Viac o nich v kapitole 3. [3] Každý dataset má priradenú množinu úloh. [3] 2.1.2 Úloha Úloha (pôvodne task) je konkrétna kombinácia datasetu, typu úlohy (task type), ktorá má byť splnená na danom datasete a metódy vyhodnocovania úspešnosti, prípadne pri učení s učiteľom (supervised learning) aj stĺpca, ktorý má byť (napríklad) klasifikovaný. OpenML ich aktuálne eviduje cez 260 000 [4] a rozpoznáva 8 typov úloh - v angličtine subgroup discovery, survival analysis, machine learning challenge, clustering, supervised data stream classification, learning curve, supervised regression a supervised classification [4]. Vrámci tejto bakalárky je významná hlavne klasifikácia (supervised classification). Príklad z dokumentácie - Classifying different iris species from other attributes and evaluate using 10-fold cross-validation [2]. [2,3] Každá úloha má priradenú množinu behov a ich dosiahnutých výsledkov. Vyhodnocované sú vždy určenou rovnakou metódou (ako napríklad 10-fold cross-validation) ale je možné sa pozrieť na viacero metrík vyhodnocovania úspešnosti, ako napríklad presnosť a precíznosť. Výsledky sa dajú zobraziť v grafe podľa jednotlivých tokov, jednotlivých ľudí ktorí dané behy vykonávali a ako zoznam jednotlivých behov. [2, 3] 2.1.3 Tok Tok (v angličtine flow) označuje konkrétny algoritmus strojového učenia v jeho konkrétnej implementácii a verzii z konkrétnej knižnice. OpenML ich v súčasnosti eviduje cez 16 000 [4]. Príkladom je RandomForest z Weky, verzia 3.7.10 [4]. Stránky OpenML zobrazujú k danému toku jeho nastaviteľné parametre, zoznam behov využívajúcich tento tok a graficky zobrazujú výsledky týchto behov na rôznych datasetoch s nastaviteľným typom úlohy a metrikou vyhodnocovania výsledku. 6 2. PROJEKT O P E N M L Každý tok má priradenú množinu behov, ktoré tento tok využívajú. [2, 3] 2.1.4 Beh Beh (v angličtine run) je konkrétny tok s nastavením parametrov aplikovaný na konkrétnu úlohu, OpenML ich aktuálne eviduje cez 10 miliónov [4]. Príklad z dokumentácie - Classifying irises with WEKA's RandomForest[2]. Stránka každého behu obsahuje špecifikáciu toku a nastavení daného algoritmu, stiahnuteľné výstupné súbory behu vo viacerých formátoch a prehľad dosiahnutých výsledkov v rôznych metrikách ako F measure, presnosť a precíznosť. Úspešnosť jednotlivých behov sa dá porovnávať pre daný dataset vďaka grafom na stránke datasetu, na stránke toku pre daný tok a behu pre daný beh. [2, 3] 2.2 Význam OpenML Webstránka OpenML umožňuje voľný prístup ku množstvu datasetov, úloh, tokov a behov. Navyše umožňuje prihlásenému používateľovi pridávať vlastné dáta, čím sa OpenML stáva významným kolaboratívnym projektom. Prístup k úložisku je ešte uľahčený dostupnými API (pre REST, Python, R, Java a .NET), či napríklad pluginom k významnému nástroju strojového učenia Weka a tak je možná automatizácia získavania dát z OpenML, či pridávanie vlastných výsledkov do úložiska. OpenML má tak 2 veľké prínosy - zdieľanie dát a zdrojov a prínos pre metalearning. [2, 3] Výhodou zdieľania dát je napríklad možnosť zdieľania datasetu a úlohy, ktoré sú potom k dispozícii verejnosti a do riešenia problému sa tak môže zapojiť viac ľudí. Tektiež, keďže dané riešenia (behy) sú zdieľané, vzniká možnosť ich porovnávania a ľahšieho zorientovania sa v rôznych možnostiach. [2, 3, 6] OpenML je významným zdrojom pre metalearning a výskum v oblasti strojového učenia. Množstvo prístupných dát umožňuje získať obrovský základ pre automatické strojové učenie a možnosť využitia 7 2. PROJEKT O P E N M L API umožňuje automatizáciu výskumu - napríklad automatické skúmanie parametrov klasifikátorov. [5] Navyše množstvo automaticky spočítaných metaatribútov pre jednotlivé datasety pomáha zistiť viac o vlastnostiah rôznych datasetov, či napríklad s predpovedaním vhodných klasifikátorov pre daný dataset. [3, 6] Ďalším benefitom je napríklad šetrenie času a zdrojov, vďaka množstvu dostupných dát a použitiu API na automatizáciu rôznych procesov. OpenML je tiež užitočný ako pomôcka pre orientáciu sa v problematike strojového učenia a v rôznych možnostiach, ktoré sa dajú pre strojové učenie využiť a to vďaka svojej dobrej prehľadnosti, popisu a grafickému zobrazeniu parametrov či výsledkov. [2,3, 4] 2.3 Podobné projekty OpenML je ako projekt relatívne jedinečný. Existuje viacero úložísk rôznych dát, OpenML sa však ako jedno z mála zameriava na strojové učenie a spája datasety s metaatribútmi a výsledkami. Kaggle je online platforma, slúžiaca na na vzdelávanie, súťaženie, programovanie a kolaboráciu v oblasti strojového učenia. Obsahuje tiež množstvo datasetov, oproti projektu OpenML k nim však nezdieľa také množstvo výsledkov a metaatribútov a na kolaboráciu a výskum sa sústredí menej. [8] UC Irvine Machine Learning Repository (UCI) je rovnako ako OpenML repozitárom datasetov, avšak obsahuje ich menšie množstvo (588) a neposkytuje k nim informácie v takom rozsahu ako OpenML. [7] Ďalšími repozitármi datasetov sú napríklad Amazon Datasets2 , Azure Open Datasets3 a Awesome Public Datasets Collection4 . 2. Amazon Datasets AWS: Registry of Open Data on AWS. [online] Dostupné z: https://registry.opendata.aws/ 3. Azure Open Datasets MICROSOFT AZURE: Azure Open Datasets. [online] Dostupné z:https://azure.microsoft.com/en-us/services/open-datasets/ 4. GITHUB: Awesome Public Datasets Collection [online] Dostupné z: https: // github.com/awesomedata/awesome-public-datasets 8 3 Metaatribúty Metaatribúty (nazývané aj meta-features, properties, data quality) sú vlastnosti daného datasetu, ako napríklad veľkosť daného datasetu, či iné hodnoty, ktoré boli na ňom spočítané. Slúžia na popísanie daného datasetu, na zistenie viac informácií o ňom a na metalearning - napríklad určenie, aký klasifikátor by bolo vhoné na daný dataset použiť. Delia sa na tri hlavné typy - opisné, štatistické a landmarking. 3.1 Opisné metaatribúty Opisné metaatribúty sú základné informácie o danom datasete, napríklad jeho počet riadkov, stĺpcov, počet tried. Slúžia hlavne na získanie hrubého obrazu o danom datasete, ale dajú sa využiť aj na metalearning. V OpenML sú to napríklad: • NumberOfClasses - počet rôznych hodnôt pre cieľový atribút (ak je nominálny) • NumberOfFeatures - počet stĺpcov • NumberOflnstances - počet riadkov • NumberOfSymbolicFeatures - počet nominálnych atribútov • NumberOfMissingValues - počet chýbajúcich hodnôt • PercentageOfMissingValues - podiel chýbajúcich hodnôt • PercentageOfBinaryFeatures - podiel binárnych atribútov Pinto z opisných metaatribútov uvádza ako tradičné number ofexamples, proportion of symbolic attributes a proportion of missing values[10]. [9,10, 11] 9 3- META ATRIBÚTY 3.2 Štatistické metaatribúty Štatistické metaatribúty sú hodnoty získané nejakou štatistickou metódou, ako priemer, medián, šikmosť a špicatosť. Dávajú nám hlbší obraz o vlastnostiach daného parametra datasetu. OpenML okrem iného počíta minimum (Min), maximum (Max), priemer (Mean) a kvartily (Quartilel a Quartile3) pre nasledujúce hodnoty: • AttributeEntropy - entropia medzi atribútami • CardinalityOfNominalAttributes - mohutnosť nominálnych atri­ bútov • CardinalityOfNumericAttributes - mohutnosť • KurtosisOfNumericAttributes - špicatosť numerických atribútov • MeansOfNumericAttributes - priemer numerických atribútov • Mutuallnformation - vzájomná informácia medzi nominálnymi a cieľovým atribútom • NominalAttDistinctValues - počet odlišných hodnôt pre nominálne atribúty • SkewnessOfNumericAtts - šikmosť numerických atribútov • StdDevOfNumericAtts - smerodajná odchýlka numerických at­ ribútov a zopár ďalších. OpenML počíta relatívne veľa štatistických metaatribútov, Pinto v tradičných uvádza entropy of classes, average mutual information of class and attributes and canonical correlation of the most discriminating single linear combination of numeric attributes and the class distribution[10]. [9,10,11] 10 3- M E T A ATRIBÚTY 3.3 Landmarking Landmarking je použitie (jednoduchšej) metódy strojového učenia na daný dataset a následné pracovanie s jej výsledkami ako s metaatribútami. Ich výhodou je to, že už dopredu poznáme výsledok vybraných metód strojového učenia a môžeme si vedieť podľa toho ľahko vybrať metódu, ktorú použijeme, nevýhodou je vysoká časová náročnosť na ich výpočet. OpenML využíva hlavne nasledujúce metódy: • DecisionStub • NaiveBayes • k N N l • J48 • REPTree • RandomTree Pre tieto metódy počíta viacero hodnôt, ako miera chybovosti, kappa, plocha pod ROC krivkou. Pinto z landmarkingu uvádza Decision Stump sub-sampling landmarker and a Naive Bayes subsampling landmarker'[10]. [9,10,11] 3.4 Významné metaatribúty OpenML počíta v súčasnosti do 119 metaatribútov, pričom toto číslo stále stúpa. Bilalli uvádza, že správnym výberom metaatribútov sa dajú dosiahnuť pri metalearningu výrazne lepšie výsledky, ako použitím všetkých, správny výber však závisí od typu úlohy. [9] 11 4 Nástroj na podporu analýzy experimentov 4.1 Motivácia Experimenty strojivého učenia v Laboraoři dobývání znalostí vygenerovali množstvo dát. Tie je potrebné vedieť spracovať a analyzovať. Keďže množstvo generovaných dát sa rozšieuje a experimenty sa dopĺňajú, je potrebné vedieť rovnaký proces vykonávať opakovane. Množstvo dát je pre niektoré programy ťažko spracovateľné napríklad Microsoft Excel a aj klasický Notepad od Windowsu majú problém ich celé načítať. Iné nástroje sú zase rozsiahle, čo sťažuje prácu s nimi a znižuje efektivitu analýzy. Vznikla tak potreba nástroja, ktorý by bol robený na mieru získaným dátam, dokázal ich efektívne spracovať a obsahoval žiadanú funkcionalitu. Ako programovací jazyk bol zvolený Prolog, pretože umožňuje pracovať s dátami ako so bázou znalostí a na rozdiel od klasickej relačnej databázy umožňuje jednoduchšie implementovat aj zložitejšiu funkcionalitu a dokáže tak riešiť zložitejšie požiadavky. Tiež sme mali záujem vyhodnotiť vhodnosť Prologu na riešenie podobných problémov do budúcnosti. 4.2 Dáta o experimentoch strojového učenia Výstupy z experimentov sa ukladali do csv súbora, beh jedného klasifikátora na jednom datasete ako jeden riadok. Získané údaje teda boli: • dataset - názov daného datasetu • clf - názov daného klasifikátora • od_name - názov metódy odstraňovania anomálií • removed - percento odstránených anomálií • accuracy - dosiahnutá presnosť • od_time - čas, ktorý trvala detekcia anomálií • clf_time - čas, ktorý trvala klasifikácia 13 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV • total_time súčet času detekcie anomálií a klasifikácie Okrem toho boli dopočítané hodnoty: • gain_clf - rozdiel získanej accuracy oproti accuracy získanej daným klasifikátorom bez odstránenia anomálií • gain_clfbest - rozdiel získanej accuracy oproti najlepšej accuracy získanej na danom datasete bez odstránenia anomálií • gain_random - rozdiel získanej accuracy oproti accuracy získanej náhodným klasifikátorom bez odstránenia anomálií Súbor, s ktorým pracujeme má pridané do každého riadku nasledujúce metaatribúty daného datasetu1 : • knnlnerrrate - miera chýb (error rate) pre klasifikátor kNNl • maxstddevofnumericatts - maximálna smerodajná odchýlka dosiahnutá číselnými atribútmi • numberofinstances - počet riadkov daného datasetu • naivebayeserrrate - miera chýb pre klasifikátor NaiveBayes Uvedené metaatribúty boli zvolené na základe diplomovej práce D. Heteroviča, v ktorej sa zdali byť významné pre metalearning na našich výsledkoch. [12] hlavička csv súboru teda je: dataset, knnlnerrrate, maxstddevofnumericatts, numberofinstances, naivebayeserrrate, clf, odjiame, removed, accuracy, odjime, clfjime, totaljime, gain_clf, gain_clfbest, gainjandom. 1. viď OPENML Measure Type [online] Dostupné z: https://www.openml.org/ search?q=7o2520measure_type7o3Adata_quality&type=measure 14 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV 4.3 Popis nástroja Nástroj bol vytváraný a ladený v SWI-Prolog 7.6.4. Jeho hlavnou úlohou je uľahčiť a pomôcť so získavaním znalostí z výstupov experimentov strojového učenia. Dokáže načítať výsledky z csv súboru, pracovať s nimi a získavať z nich ďalšie znalosti. Na toto slúžia databázové príkazy, alternatívne k SQL, na ktorých stojí a ďalšie, zložitejšie na nich postavené. Pozostáva zo siedmich hlavných častí - Načítanie dát z csv súboru, ukladanie výsledkov do csv súboru a mazanie pamäte, prehľadávanie dát, databázové a množinové operácie, agregácie a štatistické metódy, zložené príkazy a zložené štatistcké metódy na testovanie rovnosti. Jednotlivé časti usporiadané do 8 modulov a 12 súborov, ktoré sú jednoducho spoločne načítateľné z jedného súboru (load_all.pl). Program je ovládaný z príkazového riadku textovým volaním jednotlivých predikátov. 4.3.1 Načítanie dát z csv súboru Načítanie dát je realizované v súbore load_data.pl v module s názvom loaddata. Pozostáva z dvoch základných príkazov - load_data/2 a add/2. load_data( +File, +Name) vezme názov a cestu k csv súboru vo forme string (parameter File) a načíta z neho do bázy znalostí jeho obsah pod názvom Name (názvy by mali byť jedinečné). Každý riadok súboru, ktorého počet stĺpcov sa zhoduje s popisom (okrem prvého - popisného), je vložený do pamäte pomocou príkazu assert/1 ako Name(obsah riadku), napríklad data2('analcatdata-dmfť, 'LMT', 0.21075). Tak sa následne všetky záznamy dajú vyhľadať pomocou predikátu findall/3. Predpokladá sa správna forma daného súboru, obzvlášť hlavičky - mala by obsahovať len alfanumerické symboly, prípadne podčiarkovník (_) a čiarky a každé slovo by sa malo začínať písmenom. Pre neskoršie volanie je hlavička uložená do databázy malými písmenami. Uvedený príklad načíta súbor results.csv do bázy znalostí pod názvom datal. 15 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Obr. 4.1: Volanie predikátu load_data/2 ?-load_data("c:/users/x/desktop/results.csv", datal). add(+Data, +Name) rovnako načíta dáta do bázy znalostí, ale prvým parametrom už nie je csv súbor, ale výstup z predošlých požiadaviek na databázu (ako napríklad searchdata, prípadne následné filtrovanie, agregácie...) vo forme zoznamu zoznamov. Vďaka tomu je umožnené jednoduché uloženie predošlých výsledkov. Príklad vezme z tabulky datal tie záznamy, ktoré majú gain_clf > 0 a uloží ich do báze znalostí pod názvom data2. Obr. 4.2: Volanie predikátu add/2 ?-search_data(datal, a l l , gain_clf > 0, R), add(R, data2). Na rozšírenie už existujúcej tabulky sa môže použiťadd/2 alebo load_data/2, s premennou Name zhodnou so starým názvom, nástroj bude fungovať korektne, ak sa hlavička nových záznamov zhoduje s hlavičkou starého záznamu. 4.3.2 Ukladanie výsledkov do csv súboru a mazanie pamäte Funkcionalita ukladania do csv súboru a mazania z databázy je združená do súboru file_work.pl ako modul file_work. Pozostáva z troch predikátov - make_csv/2, clear_data/0 a clear_data/l. make_csv(+From, +Name) vytvára nový csv súbor pod menom Name. Ako vstup využíva zoznam zoznamov - výstup z predošlých požiadaviek na databázu. Dokážeme si vďaka tomu ukladať získané výsledky, či jednoducho pretvoriť vstupný csv súbor a napríklad tak z neho vybrať len niektoré stĺpce či riadky, či pridať doň ďalšie údaje. Umožňuje tak ďalej pracovať aj v iných programoch, napríklad pre tvorbu grafov. Ukážka vyberie z tabulky datal riadky, ktoré majú gain_clfbest > 0.01 a zapíše ich do súboru xyz.csv. 16 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Obr. 4.3: Volanie predikátu make_csv/2 ?-search_data(datal, a l l , gain_clfbest > 0.01, R), make_csv(R, "xyz.csv"). cleardata je nulárny predikát slúžiaci na zmazanie všetkých záznamov z databázy. Unárny predikát clear_data(+Name) zmaže z bázy znalostí všetky záznamy pod názvom Name. Obr. 4.4: Volanie predikátov clear_data/0 a clear_data/l ?-clear_data. ?-clear_data(). ?-clear data(datal). 4.3.3 Prehľadávanie dát Prehľadávanie dát - získanie záznamov z databázy je zabezpečené modulom search_data, uloženom v súbore search_data.pl. Obsahuje päť predikátov, respektíve jeden v piatich variantoch - search_data/2, search_data/3, search_data/4, search_data/5, search_data/6. Stoja na príkaze find_all/3 [13] a využívajú rôzne možnosti nastavenia jeho parametrov. Úlohou týchto predikátov je získať záznamy pod daným menom z databázy a sprístupniť ich ako zoznam zoznamov, čo umožňuje akúkoľvek ďalšiu prácu s nimi. V rozšírených verziách dokážu vykonať aj základnú selekciu a projekciu. search_data(?Name, -Result) je základný najjednoduchejší predikát na prehľadávanie dát. Result je zjednotený so zoznamom zoznamov všetkých záznamov uložených v databáze pod názvom Name. Uvedený príklad vyhľadá všetky záznamy z tabuľky datal a unifikuje ich s premennou Result. Obr. 4.5: Volanie predikátu search_data/2 ?- search_data(data2, Result). Result = [[dataset, c l f , accuracy], ['analcatdata-dmfť, 'LMT', 0.21075], ['analcatdata-dmft', 'LMT', 0.20947], 17 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV ['analcatdata-dmft', ['analcatdata-dmft', ['analcatdata-dmft', ['analcatdata-dmft', ['analcatdata-dmft'| [...!...]!...]. 'LMT', 0.20817], 'LMT', 0.21579], 'Logistic', 0.20947], ' L o g i s t i c ' I . . . ] , search_data(+Name, +Args, -Result) je rozširujúcou verziou search_dataj2. Umožňuje už vprvom kroku vykonať projekciu (výber stĺpcov - Args, select v SQL). Príklad vyhľadá všetky záznamy z tabuľky datal a unifikuje stĺpce elf, odname a accuracy s premennou Result. Obr. 4.6: Volanie predikátu search_data/3 ?- search_data(datal, [elf, od_name, accuracy], Result). Result = [[elf, od_name, accuracy], ['LMT', 'ClassLikelihood', 0.21075], ['LMT', 'NearestNeighbors', 0.20947], ['LMT', 'TD', 0.20817] , ['LMT', 'TDWithPrunning', 0.21579], ['Logistic', 'IsolationForesť, 0.20947], ['Logistic', 'IsolationForesťI...], [ ' L o g i s t i c ' I . . . ] , [...!...]!...]. search_data(+Name, all, +Conditions, -Result) umožňuje vykonat selekciu (filtrovať riadky). V ukážke je s premennou Result unifikovaná tabuľka datal s tými záznamami, kde sa parameter clf nerovná LMT (všetky záznamy, v ktorých nie je použitý klasifikátor LMT). V druhom príklade ukážky sa s premennou Result unifikuje tabuľka, v ktorej je klasifikátor LMT a gain_clf > 0. Obr. 4.7: Volanie predikátu search_data/4 s all ?- search_data(datal, a l l , c l f \= 'LMT', Result). ?- search_data(datal, a l l , ( c l f = 'LMT', gain_clf > 0), Result). 18 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV search_data(+Name, +Args, +Conditions, -Result) spája možnosti selekcie a projekcie. Od tohto predikátu sa odvíjajú ostatné - ak za parameter Conditions dosadíme true, predikát je totožný s search_data/3, ak za predikát Args dosadíme celú hlavičku tabuľky, Result sa unifikuje so všetkými stĺpcami tabuľky. Príklad použitia - premenná Result je unifikovaná so stĺpcami elf a odname z riadkov, v ktoých je gainclf < 0. Obr. 4.8: Volanie predikátu search_data/4 ?- search_data(datal, [ c l f , od_name], (gain_clf < 0), Result). Result = [ [clf, od_name], ['IBk', 'ClassLikelihood'], ['IBk', 'ClassLikelihood'], ['IBk', 'ClassLikelihood'], ['IBk', 'ClassLikelihood'], ['IBk', 'ClassLikelihood'], ['IBk', 'ClassLikelihood'], ['IBk'I...], [ . . . | . . . ] | . . . ] . search data(+Name, +Args, +Conditions, -Result, unique) je posledným možným predikátom na prehľadávanie. Ponecháva vo výsledku len jedinečné riadky. To je dosiahnuté pomocou predikátu sort/2 [14], ktorý zoradí daný zoznam, ignoruje pri tom však viacnásovný výskyt jedného prvku, výsledný zoznam bude teda zoradený v inom poradí ako pôvodný a nebude obsahovať duplikáty. V ukážke je Result unifikovaný so zoznamom všetkých klasifikátorov (clf), ktoré dosiahnu aspoň raz gain_clfbest > 0.01, ako vedľajší efekt sú jednotlivé názvy klasifikátorov v abecednom poradí. 19 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Obr. 4.9: Volanie predikátu search_data/4 ?- search_data(datal, [elf], gain_clfbest > 0.01, Result, unique). Result = [[elf], ['JRip'], ['LMT'], ['Logistic'], [' NaiveBayes'], ['RandomForest'], ['SMO'], [' SimpleLogistic']] 4.3.4 Operácie relačnej algery Pre prácu s výsledkami experimentov - výber riadkov, stĺpcov a pod. sú potrebné základné operácie relačnej algebry. Toto umožňuje modul database zo súboru database.pl. Poskytuje základné operácie relačnej algebry (selekcia, projekcia, join a kartézský súčin) [18] - t.j. základné databázové operácie. Selekciu a projekciu poskytuje aj modul searehdata, avšak len v obmedzenej podobe - tieto operácie sa dajú vykonať len na tabuľke, ktorá už je uložené v báze znalostí, pričom modul database ich umožňuje vykonať aj na výsledkoch predchádzajúcich operácií. select(?List, ľColumn, ľResult) vykonáva projekciu - výber stĺpcov tabuľky (názov podľa databázového select). Uvedený príklad vyberie len stĺpce dataset a clf, je totožný s volaním ?- search_data(datal, [dataset, clf], Result). Obr. 4.10: Volanie predikátu select/3 ?- search_data(datal, R), select(R, [dataset, c l f ] , Result ). R = [[dataset, clfI . . . ] I . . .] Result = [[dataset, c l f ] , ['JMľ, 'IBk'], ['JMľ, 'IBk'], ['JMľ, 'IBk'], ['JMľ, 'IBk'], ['JMľ, 'IBk'], [...!...]!...] ; 20 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV filter(+List, +Condition, -Result) je predikát slúžiaci na selekciu. Result je unifikovaný s tabuľkou, v ktorej sú len tie riadky z List, ktoré spĺňajú podmienku Condition. Uvedený príklad vyberie tie riadky tabuľky, kde gainclf > 0. Príklad je totožný s volaním ?- search_data(datal, all, gain_clf > 0, R). Obr. 4.11: Volanie predikátu select/3 ?- search_data(datal, R), filter(R, gain_clf>0, Result). R= [[dataset, elf I . . . ] I . . . ] , Result = [[dataset, c l f , clf_family, od_name, odjparams, removed, accuracy|...], ['JM1\ 'IBk', lazy, ' [] ', 'CODB', 0.5|...], ['JMľ, ' IBk' , lazy, ' [] ', 'CODB'I...], [' JMľ , 'IBk' , lazy, ' [ ] ' ! . . . ] , [' JM1', 'IBk', l a z y l . . . ] , ['JMľ, 'IBk'|...], ['JMľ I . . .] , [ . . . | . . . ] | . . . ] . V predošlých príkladoch existovalo alternatívne volanie search_data. Tomu tak nie je napríklad pri použití agregačných a štatistických metód (viac o nich ďalej). Uvedený príklad spočíta priemerné hodnoty gainclf pre jednotlivé klasifikátory a premennú Filtered unifikuje s tými, ktoré majú túto priemernú hodnotu > 0. Obr. 4.12: Volanie predikátu filter/3 na výsledky agregácie ?- search_data(datal, R), stats(R, gain_clf, average, [clf ], Averages), filter(Averages, average_gain_clf > 0, Filtered). R = [...], Averages = [[clf, average_gain_clf], ['SimpleLogistic', -0.0007373544520547989], ['SM0\ 0.00019986729452054985], ['RandomForesť, -0.0024548715753424702], 21 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV ['LMT'I...], [ . . . | . . . ] | . . . ] , Filtered = [[elf, average_gain_clf], ['SMO', 0.00019986729452054985], ['NaiveBayes', 0.004943681506849221], ['Logistic', 0.0006293371630578178]]. cartesian (+Listí, +List2, -Result) vykoná kartézský súčin dvoch ta­ buliek. join(+Listl, +List2, +On, -Result) vykoná vnútorný join na parametri On - predpokladá sa, že obe tabuľky obsahujú stĺpec s rovankým názvom, na ktorom chceme uskutočniť join. join(+Listl, +List2, +Onl, On2, -Result) je verziou predikátu join, ktorá nespĺňa tento predpoklad. V ukážke je join/4 aplikovaný na výsledok agregácie - nájdenie maximálnej hodnoty gainclfbest a celú tabuľku (s vybranými stĺpcami), čím vieme získať celý riadok, ku ktorému maximálna hodnota patrí. Obr. 4.13: Volanie predikátu join/5 na výsledky prehľadávania a agregačnej funkcie ?- search_data(datal,[dataset, c l f , od_name, removed, gain_clfbest], R), stats(R, gain_clfbest, max, Max), join(R, Max, gain_clfbest, max_gain_clfbest, Joined). R = [[dataset, c l f , od_name, removed, gain_clfbest], [' analcatdata-dmft', 'Logistic', 'IsolationForest', 2, 0.00374], ['analcatdata-dmfť, 'Logistic', ' IsolationForest', 3, 0.0125]I...], Max = [[max_gain_clfbest], [0.03039]], Joined = [[gain_clfbest, dataset, c l f , od_name, removed], [0.03039, madelon, 'JRip', 'KDN', 0.5]]. Dôležitými operáciami relačnej algebry sú prienik, zjednotenie a rozdiel. Tie sú v Prologu implementované a dajú sa jednoducho použiť. Prienik - intersection(+Listl, +List2, ICommon). [15] 22 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Zjednotenie - union(?List1, ?Listí, ?ListíAndListl). [16] Rozdiel - subtract(+Set, +Delete, -Result). [17] Obr. 4.14: Príklad použitia prieniku, zjednotenia a rozdielu ?- search_data(dl, R l ) , search_data(d2, R2), intersection( Rl, R2,Result). ?- search_data(dl, R l ) , search_data(d2, [_|R2]), union(Rl, R2, Result). ?- search_data(dl,R1), search_data(d2, [_|R2]), substract( Rl, R2, Result). Pre získanie tabuľky jedinečných výsledkov je opäť možné použiť sort/I [14]. Zložitejší príklad nižšie vypíše tie kombinácie clf a od_name, ktoré aspoň raz dosiahli nadpriemernú hodnotu gainclfbest. Obr. 4.15: Príklad použitia predikátovfilter13, select/3 a sort/1 ?- search_data(datal, R), stats(R, gain_clfbest, average, [_,[Average]]), f i l t e r ( R , gain_clfbest > Average, Filtered), select(Filtered, [ c l f , od_name], [HeadI Selected]), sort(Selected, Sorted), Result = [HeadI Sorted]. Result = [ [clf, od_name], ['IBk', 'CODB'], ['IBk', 'ClassLikelihood'], ['IBk', 'ClassLikelihoodDifference'], ['IBk', 'DS'], ['IBk', 'IsolationForest'], ['IBk', 'KDN'], ['IBk'I...], [...!...]!...] 4.3.5 Agregácie a štatistické metódy Na získanie významných informácií zo záznamov sú potrebmé agregácie - štatistické metódy ako priemer, maximum, či rozptyl. Tieto 23 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV výsledky sú získané prehľadávaním celej tabuľky, či zoskupením viacerých riadkov - agregáciou. Toto poskytuje modul stats zo súboru stats.pl a pomocný modul statmethods zo súboru stat_methods.pl, v ktorom sú poskytnuté jednotlivé štatistické metódy - count/2, sum12, average/2, min12, max12, range12, frequencies12, model2, medián/2, lower_quartile/2, upper_quartile/2, variance/2, standard_deviation/2, standard_error/2, skewness/2, kurtosis/2. count/2 je predikátom, ktorý zisťuje počet prvkov daného zoznamu, sum/2 slúži na získanie súčtu všetkých prvkov v danom zozname. average/2 zistí priemer daného zoznamu. Definovaný je ako p = min/2 slúži na získanie najmenšieho prvku, max/2 najväčšieho, rangej2 je definovaný ako ich rozdiel. mode/2 zisťuje modus - najčastejšie sa vyskytujúcu hodnotu za po- mocifrequencies12. frequencies/2 spočíta frekventovanosť - počet výskytov každého prvku a zoradí ich od najväčšieho počtu výskytov. Je to jediná zo štatistických metód, ktorej výstup nie je číslo, ale zoznam. variance/2 slúži na zistenie rozptylu. Rozptyl je definovaný ako i Var(X) = — n ( x i ~ l1 )2 n i=l standard_deviation/2 - smerodajná odchýlka je definovaná ako c = y/vär{X) - odmocnina z rozptylu. standard_error/2 - štandardná alebo smerodajná chyba je definovaná ako podiel smerodajnej odchýlky a odmocniny z počtu prvkov: 24 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Nech F(x) je distribučná funkcia. Potom kvantilovú funkciu F 1 (u) definujeme ako F_ 1 (u) = inf(x;F(x) >= u) Kde 0 < u < 1. F - 1 (j) je medián (medián/2), F - 1 (|) je dolný kvartil (lower_quartile/ 2), F_ 1 (|) je horný kvartil (upper_quartile/2). [19] Kvartily sú v nástroji implementované ako medián hodnôt pod (nad) mediánom s vylúčením mediánu. [19] skewness/2 počíta koeficient šikmosti. Ten slúži na odhalenie nevyrovnaného rozloženia pravdepodobnosti - ak je koeficient > 0, tzv. chvost sa nachádza na pravej strane (je naklonená naľavo), ak je menší, tak na ľavej, ak je rovný nule, rozloženie je vyrovnané. Je počítaná ako _ y-> (xj — jif ~ f-í s3 * N 1=1 kurtosis/2 počíta koeficient špicatosti, resp. exces. Zisťuje, ako vyzerajú okraje rozloženia pravdepodobnosti, ak je koeficient špicatosti väčší, vo vzorke sa nachádza viac okrajových hodnôt (anomálií). Spicatosť je definovaná ako [19, 20] stats (+Data, +Of, +Function, -Result) aplikuje tieto metódy na stĺpec Of tabuľky Data. Jednotlivé štatistické metódy sa dajú zvoliť pomocou parametru Function - stačí zaň dosadiť názov zvolenej metódy a tá sa aplikuje na vybraný stĺpec. Result sa zjedontí so zoznamom zoznamov, v ktorom je popis výsledku a výsledná hodnota, dá sa tak ďalej použiť ako napríklad vstup predikátu join/4. Uvedený príklad spočíta 25 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV priemernú hodnotu stĺpca gainclf. Obr. 4.16: Príklad použitia stats/4 ?- search_data(datal, R), stats(R, gain_clf, average, Result). R = [..J, Result = [[average_gain_clf], [-0.0006843091341147265]]. stats (+Data, +Of, +Function, +GroupBy, -Result) umožňuje využívať štatistické funkcie nielen na celú tabuľku, ale aj na skupiny definované niektorým stĺpcom tabuľky - napríklad spočítať priemer stĺpca accuracy pre jednotlivé klasifikátory. stats/4 využíva tento predikát sú totožné, ak je parameter GroupBy unifikovaný s práznym zozna­ mom. Obr. 4.17: Príklad použitia stats/5 ?- search_data(datal, R), stats(R, gain_clf, average,[elf], Result). R = [..J, Result = [[elf, average_gain_clf], ['SimpleLogistic', -0.0010387819829424277], ['SM0', -0.0003847601279317661], ['RandomForest', -0.0026488539445628997], ['PART', -0.0005212126865671694], ['NaiveBayes', 0.0032822441364605964], ['Logistic', -0.0003863175033921267], ['LMT'I...], [...!...]!...]. 4.3.6 Zložené príkazy Modul advanced zapísaný v súbore advanced.pl obsahuje viaceré zložené príkazy, ktoré odpovedajú na komplikovanejšie otázky, ktoré nás o výsledkoch experimentov zaujímajú. Využívajú už definované predikáty z ostatných modulov. 26 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV find one percent best datasets(+Data, +Condition,-Result) - častou otázkou, ktorú chceme zisťovať, je, že u ktorých datasetov došlo k zlepšeniu výslednej accuracy odstránením anomálií aspoň o 0.012 v porovnaní s najlepším výsledkom daného klasifikátora (stĺpec gain_clfbest >= 0.01). Tento predikát slúži práve na to. Parameter Condition mu pridáva možnosť selekcie, dá sa nahradiť hodnotou true pre vyhodnotenie bez selekcie. Príklad uvedený nižšie vypíše zoznam datasetov, ktoré dosiahli gain_clfbest >= 0.01 a zároveň accuracy > 0.5. Obr. 4.18: Príklad použitia find _one_percent_best_datasets/3 search_data(datal, R), find_one_percent_best_datasets(R, accuracy > 0.5, Result). R = [...], Result = ['blood-transfusion-service', cnae9, 'dressessales', ilpd, madelon, 'pima-diabetes', 'qsar-biodeg', spf3] . recommend_top(+Data, +Condition, +What, -Result) unifikuje s parametrom Result pre danú podmienku Condition a vybrané stĺpce v parametri What tieto údaje zoradené od najvyššej dosiahnutej accuracy. Odpovedá tak na otázky typu: Aká kombinácia klasifikátora a metódy detekcie anomálií dosiahne pre dataset X najvyššiu accuracy? Obr. 4.19: Príklad použitia recommendJop/3 ?- search_data(datal, R), recommend_top(R, (dataset = car), [clf, od_name],Res). R = [...], Res = [ [clf, od_name], ['JRip', 'ClassLikelihood'], ['NaiveBayes', 'C0DB'], ['JRip', 'IsolationForest'], ['NaiveBayes', 'TD'], ['NaiveBayes', 'KDN']|...]. 2. 0.01 bola zvolená hranica, kedy je prírastok dostatočne významný. 27 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV recommend_only_clf/3 je špeciálnym prípadom predošlého predikátu, kedy za parameter What dosadíme hodnotu [elf] a získame tak poradie klasifikátorov, podľa najlepšieho dosiahnutého výsledku. find best boundary(+Data, +Attribute, -Best, -TTest) je predikát orientujúci sa hlavne na metaatribúty. Jeho úlohou je nájsť pre daný číselný atribút takú hodnotu, pre ktorú dosiahne Welchov t-test na stĺpci gain_clfbest čo najvyššiu hodnotu. Zisťuje tak, či sa pre daný atribút dá nájsť také rozdelenie, že výsledok klasifikácie a hodnota gain_clfbest bude pre dané dve skupiny čo najodlišnejšia. Ak sa taká hodnota nájde, mohlo by z toho vyplývať, že daný atribút má významný vplyv na gaincľfbest a môže byť vhodným kandinátom na použitie pri metalearningu. Pre svoje fungovanie využíva predikát check_boundary/'4, na ktorom testuje každú možnú hodnotu pre hranicu. Welchov t-test bol zvolený, pretože dokáže pracovať s dvomi vstupmi rôznej dĺžky. Uvedený príklad hľadá takú hranicu pre metaatribút knnlnerrrate, daná hranica má hodnotu 0.00145772594752187 a výsledok Welchovho testu - pravdepodobnosť, že daná hranica je významná >= 0.998. Obr. 4.20: Príklad použitiafind_best_boundary/4 ?- search_data(datal, R), find_best_boundary(R, knnlnerrrate, Best, P). R = [..J, Best = 0.00145772594752187, P = 0.998. check boundary(+Data, +Attribute, +Boundary, -TTest) podobne ako predošlý predikát určuje významnosť hranice pre daný atribút, v tomto prípade je však hodnota hranice zadaná ako parameter Boun­ dary. 28 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Obr. 4.21: Príklad použitia check_boundary/4 7- search_data(datal, R), check_boundary(R, numberof instances, 500, P) . R = [...], P = 0.998. 4.3.7 Testovanie rovnosti V nástroji sú implementované dve metody testovania rovnosti dvoch vzoriek. Obe testujú hypotézu rovnosti stredných hodnôt vybraných vzoriek - určujú, aká je pravdepodobnosť, že rozdiel medzi priemermi daných vzoriek nevznikol náhodou. Implementovanými metódami sú Welchov t-test a Wilcoxonov test. Welchov t-test je parametrický poskytovaný modulom welch zapísanom v súbore welch.pl. Je adaptáciou t-testu (Studenťs t-test) na prípady, kedy sa nedajú predpokladať v oboch vzorkách rovnaké rozptyly alebo rovnaké veľkosti oboch vzoriek. Hodnotu t zistíme ako: = ]i\ - }l2 I 2 2 V S 1 + S 2 Pričom u je priemer a s je štandardná chyba. Stupeň voľnosti (degrees of freedom) sa počíta pomocou Welch-Satterthwaiteovej rovnosti ako Vari 2 ) 2 d f _ 1 N i ' + [ N2 ' J f Var^ %2 / Va?2 \2 N j - l + N 2 - l Pomocou týchto dvoch hodnôt sa dá výsledná hladina významnosti získať priamo z tabuliek (v nástroji sú k dispozícii ako pomocný modul tables v súbore tables.pl). Pri analýze experimentov s odstraňovaním anomálií je Welchov ttest užitočný napríklad pri porovnávaní výsledkov vybraného klasifikátora voči ostatným, alebo pri zisťovaní významnosti vybranej hodnoty hranice pre niektorý metaatribút (napr. check_boundaryj'4), 29 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV v oboch prípadoch totiž nie je zaručená rovnaká veľkosť a rozptyl vzoriek. Welchov t-test je v nástroji dostupný v dvoch variantoch two_tailed_welch_ttest/5 a one_tailed_welch_ttest/5. two_tailed_welch ttest(+Data, +Groupl, +Group2, +Of, -P) vykoná dvojstranný Welchov t-test - testuje rovnakosť/odlišnosť zadaných vzoriek. Parametre Group1 a Group2 určujú 2 vzorky ktoré budú vybrané, parameter Of určuje stĺpec, na ktorom sa test vykoná. Hodnota P je výslená hodnota testu, určuje, ako veľmi je pravdepodobná odlišnosť vzoriek, jej rozsah je od 0 (nulová hypotéza rovnosti stredných hodnôt je potvrdená) po 1 (vzorky sú odlišné). Keďže je zistenie tejto hodnoty riešené tabuľkou, výslená hodnota má len obmedzený počet hodnôt, ktoré môže nadobudnúť (0.998, 0.99,0.98, 0.95, 0.9, 0.8, 0). Nadobudnutá hodnota vždy určuje interval, v ktorom sa výsledok nachádza - pre P = 0.8 sa nachádza výsledok v intervale od 0.8 po 0.9. V uvedenom príklade test ukazuje, že klasifikátor RandomForest je veľmi pravdepodobne odlišný od zvyšku klasifikátorov ako celku v parametri gain_clfbest. Obr. 4.22: Príklad použitia twoJailedjvelchJtest/'5 ?- search_data(datal, R), two_tailed_welch_ttest(R, c l f = 'RandomForest', c l f \= 'RandomForest', gain_clf, Result ). R = [..J, Result = 0.998. one tailed welch ttest(+Data, +Groupl, +Group2, +Of, -P) vykoná jednostranný Welchov t-test, to znamená, že porovnáva zadané vzorky. Testuje tak, čije parameter Of pre Groupl > alebo <= ako pre Group2, vysoké P hovorí, že Groupl > Group2. V prvom uvedenom príklade napriek zisteniu odlišnosti v predošlom príklade je výsledok 0 - hodnota gain_clfbest je pravdepodobne pre Groupl menšia alebo rovnaká ako pre Group2. 30 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV Obr. 4.23: Príklad použitia oneJailedjvelchjtest/5, výsledok 0 ?- search_data(datal, R), one_tailed_welch_ttest(R, elf = 'RandomForest', elf \= 'RandomForest', gain_clf, Result ). R = [...], Result = 0. Obr. 4.24: Príklad použitia oneJailedjvelchjtest 15, výsledok 0.999 ?- search_data(datal, R), one_tailed_welch_ttest(R, elf \= 'RandomForest', e l f = 'RandomForest', gain_clf, Result ). R = [...], Result = 0.999. [21, 22] Wilcoxonov test (Wilcoxon signed-rank test) taktiež slúži na porovnávanie priemerov dvoch vzoriek. Oproti Welchovmu t-testu musia byť vzorky rovnako veľké, avšak je neparametrický - nepredpokladá sa však ich normálna distribúcia. Slúži teda na porovnávanie dvoch rovnako veľkých vzoriek - v našom prípade napríklad dvoch rôznych metód odstránenia anomálií. Na použitie Wilcoxonovho testu sa z oboch vzoriek utvoria páry a pre každý pár sa zistí jeho rozdiel a znamienko (či je rozdiel väčší alebo menší od nuly). Jednotlivé páry sa zoradia od najmenšieho absolútneho rozdielu po najväčší a pridelí sa im rank (číslo od 1 po N), pričom páry s nulovým rozdielom sa vynechajú. Párom, ktoré majú rovnaký absolútny rozdiel sa priradí priemerný rank, ktorý by mohli dostať. Ďalej sa spočíta samostatne suma rankov pre páry s pozitívnym a negatívnym znamienkom - W + a W~ a z nich sa zvolí menšia hodnota W = min(W+ , W~). Pre menšie vzorky sa dá zistiť výsledná hladina významnosti pomocou tabuľky, pre väčšie sa dá použiť vzorec 31 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV na získanie z: N*(N + 1] W n * (n + 1) * (2 * n + 1) — tie24 t3 -t Pričom tie = £ ^ a ř je počet zhodujúcich sa rozdielov pre každú zhodu. Pravdepodobnosť odlišnosti daných vzoriek sa potom ďalej opäť zisťuje z tabuľky a preto výsledok dosahuje obmedzený počet hodnôt. [22, 23] two tailed wilcoxon(+Data, +Groupl, +Group2, +Of, -P) je predikát na aplikáciu dvojstranného Wilcoxonovho testu. Príklad použitia test, či sú metódy detekcie anomálií KDN a LOF odlišné vrátil stredne vysokú hodnotu - 0.6 (tabuľková hodnota, skutočná bude medzi 0.6 a 0.8). Obr. 4.25: Príklad použitia twoJailedjwilcoxon/'5 ?- search_data(datal, R), two_tailed_wilcoxon(R, od_name = 'KDN', od_name = 'LOF', accuracy, Result). R = [...], Result =0.6. one tailed wilcoxon(+Data, +Groupl, +Group2, +Of, -P) poskytuje jednostranný Wilcoxonov test. Dokážeme podľa neho porovnávať vybrané vzorky. V ukážke je ukázané, že je vysoká pravdepodobnosť, že metóda detekcie anomálií IsolationForest dosahuje lepšie výsledky ako KDN. Obr. 4.26: Príklad použitia oneJailedjwilcoxon/5 ?- search_data(datal, R) , one_tailed_wilcoxon(R, od_name = 'IsolationForest' , od name = 'KDN', accuracy, Result). R = [...], Result =0.99 32 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV 4.4 Vyhodnotenie Nástroj je relatívne jednoduchý na používanie, obsahuje potrebnú funkcionalitu a je užitočným prostriedkom na analýzu dát. Nástroj dokáže vykonať všetky základné operácie relačnej databázy - selekciu, projekciu, zjednotenie, rozdiel, kartézský súčin (viď 4.3.4) a premenovanie (pomocou uloženia dát ako novej tabulky alebo unifikácie dát s novou premennou). Umožňuje načítať nový csv súbor, vyhľadať si dané dáta a robiť na nich agregácie, či zisťovať odpovede na zložitejšie otázky. Výhodou nástroja je jeho jednoduchosť, to, že je prispôsobený dátam z experimentov, implementácia v Prologu poskytuje navyše možnosť použitia ďalších Prologovských príkazov, ktoré tak môžu rozšíriť funkcionalitu nástroja. Jednotlivé predikáty sa dajú jednoducho viazať na seba navzájom, čo umožňuje tvoriť neobmedzené množstvo rôznych požiadaviek na databázu. Jednoduchosť nástroja mu dodáva určitú mieru spoľahlivosti. Prolog ako zvolený programovací jazyk prináša benefit práce s dátami ako bázou znalostí, dáta sú automatickyjednoducho uložené medzi ostatnými predikátmi bez potreby držania si nejakého databázového objektu. Okrem tohto benefitu je však Prolog pre túto implementáciu porovnateľný s inými programovacími jazykmi, navyše prináša nevýhodu toho, že je menej populárny a má tak menej dostupných knižníc a užívateľov schopných s ním pracovať. Napríklad oproti jazyku R, určenom na spracovanie a analýzu dát, má nástroj menšiu šírku možností a na väčšina funkcionality by sa dal jazyk R zrejme využiť, čím by sa odstránila potreba samostatného nástroja, jeho výhodou zase je to, že užívateľ nemusí dané dáta už ďalej prispôsovovať a jeho funkcionalita je prispôsobená na pre nás zaujímavý typ požiadaviek - dokážeme teda vybrané problémy riešiť jednoduchším spôsobom. V budúcnosti by sa nástroj mohol jednoducho ďalej rozširovať a mohla by sa mu tak pridávať funkcionalita, čo nebude príliš zložité, vďaka jeho modulárnej štruktúre. Bolo by tiež užitočné zlepšiť jeho ošetrenie 33 4- NÁSTROJ N A PODPORU ANALÝZY EXPERIMENTOV chýb a okrajových prípadov, aby tak bolo pre užívateľa jednoduchšie ich vyriešiť, tiež by mohol byť prispôsobivejší pre zvládanie rôznych vstupných datasetov - v súčasnosti zvláda hlavne načítanie hlavičky súbora v dosť úzkom formáte. Nástroj v súčasnosti tiež nedokáže zvládnuť najäčší vygenerovaný súbor z experimentov (všetky výsledky so všetkými metaatribútami) a do budúcnosti by bolo užitočné nájsť spôsob, akým by to zvládol. 34 5 Experimenty 5.1 Generovanie dát V posledných rokoch prebiehajú v Laboratoři dobývání znalostí experimenty, ktorých cieľom je zistiť vplyv odstraňovania anomálií na výsledky klasifikácie. Experimenty prebiehajú pomocou frameworku, vytvoreného na tento účel. Ten rozdelí každý dataset pre 5-fold krížovú validáciu, spustí detekciu anomálií a odstráni zvolené percento anomálií, natrénuje zvolené klasifikátory a vyhodntí ich úspešnosť. Ak niektorý proces trvá príliš dlho, daný beh sa zastaví, z čoho vyplýva, že počty rôznych kombinácií sa nemusia úplne zhodovať. V aktuálnej verzii, ktorá je použitá v tejto práci, je 56 zvolených datasetov, U (+1 pre None) metód detekcie anomálií, 6 (+1 - nula) zvolených hodnôt ako percent odstránených anomálií a 10 klasifikátorov. Spolu je to teda vyše 36 000 behov. Hodnoty percenta odstránených anomálií sú: 0.5,1, 2,3,4, 5. Metódy detekcie anomálií: CODB ClassLikelihood ClassLikelihoodDifference DS IsolationForest KDN LOF NearestNeighbors RF-OEX TD TDWithPrunning Klasifikátory: IBk J48 JRip 35 5- EXPERIMENTY LMT Logistic NaiveBayes PART RandomForeest SMO SimpleLogistic 5.2 Získané výsledky Hlavnou otázkou skúmania vplyvu odstraňovania anomálií na výsledky klasifikácie je to, či a za akých podmienok je odstránenie anomálií prínosné. Na zodpovedanie tejto otázky je užitočné najprv zodpovedať viacero čiastkových otázok. S tým pomáha vytvorený nástroj a dáta získané z experimentov. Zvolené parametre na zodpovedanie otázok v tejto práci sú accuracy a gainclfbest. Okrem nich bude špecificky spomenutá práca s metaatribútmi. Tieto čiastkové otázky zároveň slúžia ako ukážky praktického využitia nástroja. 5.2.1 Parameter accuracy Existuje najlepší klasifikátor? Na zodpovedanie tejto otázky môžeme zistiť priemernú hodnotu accuracy pre jednotlivé klasifikátory a zoradiť si ich od najvyššej priemernej hodnoty. Obr. 5.1: Priemerné hodnoty accuracy pre jednotlivé klasifikátory ?- search_data(datal, _Searched), stats(_Searched, accuracy, average, [clf ], _Stats), select(_Stats,[ average_accuracy,clf], _S),sort(0, @>=, _S, Res). Res = [[average_accuracy, c l f ] , [0.853540967484007, 'RandomForest'], [0.853439331023453, 'LMT'], [0.8320501465884848, 'SimpleLogistic'], [0.8264123827292122, 'SMO'], [0.8223906823027715, 'IBk'], [0.8172032515991464, 'PART'], 36 5- EXPERIMENTY [O.8151018736673817, 'J48'], [0.8134700461329697, 'Logistic'], [0.8127784808102374, 'JRip'], [0.7566317084221758, 'NaiveBayes']] Podľa výsledku požiadavky na databázu vidíme, že najvyššiu priemernú hodnotu accuraccy dosahuje klasifikátor RandomForest, hneď po ňom s malým rozdielom LMT. Jednostranný Welchov t-test na vzorky clf = RandomForest a clf RandomForest nám dá výsledok 0.999, čo potvrdzuje hypotézu, že priemer accuracy klasifikátora RandomForest je významne väčší ako spoločný priemer ostatných klasifikátorov. Ďalej môžeme RandomForest porovnať jednostanným Wilcoxonovým testom s klasifikátorom LMT - aj tu vyjde hodnota 0.999, čím zisťujeme, že RandomForest má skutočne lepšiu priemernú accuracy od LMT a teda je skutočne lepší aj od druhého najlepšieho. Existuje najlepšia kombinácia klasifikátora a metódy detekcie ano­ málií? Obr. 5.2: Najvyššie priemerné hodnoty accuracy pre jednotlivé kombinácie klasifikátora a metódy detekcie anomálií ?- search_data(datal, _R), stats(_R, accuracy, average, [ c l f , od_name], _Stats), select(_Stats,[average_accuracy ,clf, od_name], _S),sort(0,@>=, _S, Res). Res = [[average_accuracy, c l f , od_name], [0.8562578571428568, 'LMT', 'None'], [0.8561898214285718, 'RandomForest', 'None'], [0.8557504761904762, 'LMT', 'IsolationForest'], [0.8555966964285718, 'LMT', 'TDWithPrunning'], [0.8554036607142861, 'LMT', 'NearestNeighbors'], [0.8552902380952383, 'LMT'I...], [ . . . ! . . . ] ! . . . ] Ako najlepšia kombinácia metódy klasifikátora a detekcie anomálií sa ukazuje byť LMT bez odstránenia anomálií, jednostranný Welchov t-test tejto kombinácie oproti ostatným dáva hodnotu 0.95 - priemer hodnôt accuracy je pravdepodobne v priemere skutočne lepší od os- 37 5- EXPERIMENTY tatných. Wilcoxonov test pre porovnanie kombinácií LMT - None a RandomForest - None dáva hodnotu 0.5 - kombinácite teda nie sú v priemere výrazne odlišné. Rovnako je tomu pri porovnaní s ďalšími tromi kombináciami - rozdiel priemerov accuracy nie je dostatočne významný, aby sa dalo jednoznačne povedať, že použiť LMT alebo RandomForest bez filtrovania anomálií je v priemere najlepšia mož­ nosť. Existuje najlepšia kombinácia klasifikátora, metódy detekcie anomálií a percenta odstránených anomálií? Obr. 5.3: Najvyššie priemerné hodnoty accuracy pre jednotlivé kombinácie klasifikátora a metódy detekcie anomálií ?Res = [[average_accuracy, c l f , od_name, removed], [0 857539285714286, 'LMT', 'TDWithPrunning', 0.5], [0 8572742857142858, 'LMT', 'ClassLikelihood', 1], [0 8572125000000004, 'LMT', 'NearestNeighbors', 1], [0 8569982142857145, 'LMT', 'TDWithPrunning', 1], [0 8569848214285714, 'LMT', 'IsolationForesť1...], [0 8565842857142856, 'LMT'1...], [0 85651553571428581 . . . ] , [. • 1 . . .] 1 . . .] V tomto prípade sa LMT opäť ukazuje ako najúspešnejší klasifikátor dosahujúci najlepšie výsledky. Prekvapivo sa tu neumiestňuje None (žiadna metóda odstraňovania anomálií). Welchov t-test nám dáva hodnotu 0.95 pre porovnanie najlepšej kombinácie s ostatnými - je významne lepšia, ako ostatné, Wilcoxonov test nám dáva hodnotu 0.5 pre porovnanie s prvými tromi hodnotami, čo znamená, že priemer najlepšej nie je oproti nim významne lepší, významnejší rozdiel nastáva až pri LMT - IsolationForesť - 1%, kde Wilcoxonov test dáva hodnotu 0.8, čo už napovedá o možnosti odlišnosti. 38 5- EXPERIMENTY Existuje najlepší podiel odstránených anomálií? Obr. 5.4: Najvyššie priemerné hodnoty accuracy pre jednotlivé kombinácie klasifikátora a metódy detekcie anomálií ?- search_data(datal, _R), stats(_R, accuracy, average, [ removed], Stats). Stats = [[removed, average_accuracy], [5, 0.8190416653114334], [4, 0.819956718165557], [3, 0.8204410831029407], [2, 0.8203837778500604], [1, 0.8210577736217298], [0.5, 0.8209273621727148], [0, 0.8211530948121645]]. Tu sa opäť ukazuje, že velké odstraňovanie anomálií má v priemere väčší negatívny vplyv na výsledky klasifikácie. Welchov t-test vracia pre porovnanie priemernej hodnoty pre removed = 0 a ostatné hodnotu 0 - najlepšia dosiahnutá hodnota tak zrejeme nie je významne odlišná voči ostatným. Wilcoxonov test tu nie je vhodný, keďže počet zánamov bez odstránenia anomálií je odlišný od počtu ostatných percent, napríklad však pre kombináciu 1 a 2, či 1 a 5 vracia hodnotu 0.999, čiže nie je pravda, že by na zvolenom percente odstránených anomálií vôbec nezáležalo, nižšie zvolené percentá dosahujú v priemere lepšie výsledky. Dosiahnme pre každý dataset maximálnu accuracy pomocou odstránenia anomálií? Obr. 5.5: Výber datasetov, s klasifikátormi, ktoré dosiahnu maximálnu accuracy bez odstránenia anomálií ?Res = [[dataset, c l f ] , ['banknote-authentication', 'LMT'], ['mice-protein', 'IBk'], ['mice-protein', 'J48'], ['mice-protein', 'LMT'], 39 5- EXPERIMENTY ['mice-protein', 'PART'], ['mice-protein', 'RandomForest'], ['mice-protein', 'SMO'], ['mice-protein', 'SimpleLogistic'], [satimage, 'RandomForest'], [sick, 'J48'], [vowel, 'IBk']] . Odpoveďou je nie, z 56 datasetov nastane opak však len u 5. 5.2.2 Parameter gain clfbest Prichádza v priemere k zlepšeniu oproti najlpešiemu klasifikátoru? Zistíme to spočítaním priemeru pre gain_clfbest. Obr. 5.6: Priemer gain_clfbest ?- search_data(datal, _R), stats(_R, gain_clfbest, average, Res) . Res = [[average_gain_clfbest], [-0.055179397645048575]]. Priemer je síce negatívny, čiže celkovo nedochádza k zlepšeniu ale nás zaujímajú výnimočné prípady, pri k torých k zlepšeniu dochádza. To môžeme zistiť práve meraním počtu prípadov, v ktorých odstránenie anomálií zlepšilo accuracy. Pre ktoré datasety sa oplatí filtrovanie anomálií? Odpoveď na túto otázku zistíme napríklad pomocou predikátu find_one_percent_best_datasets/3. Zvolená hranica kedy sa oplatí odstraňovanie anomálií je gain_clfbest >= 0.01. Obr. 5.7: Výber datasetov, s gain_clfbest >= 0.01 ?- search_data(datal, R), find_one_percent_best_datasets(R, true, Result). Result = ['analcatdata-dmft', 'blood-transfusion-service', cnae9, 'dresses-sales', ilpd, madelon, 'pima-diabetes' , 'qsar-biodeg', spf3] 40 5- EXPERIMENTY Zisťujeme, že významných datasetov, ktoré spĺňajú podmienku gain_clfbest >= 0.01 je 9 z 56. Identifikácia takýchto datasetov sa stáva dôležitou úlohou aj pre budúce skúmanie. Aká je priemerná hodnota gain clfbest pre nádejné datasety? Pri nádejných datasetoch je priemerná hodnota o niečo lepšia: -0.04378781757877278. To naznačuje, že filtrovanie datasetov môže byť skutočne nápomocné. Ktoré klasifikátory dosahujú výrazné zlepšenia? Ďalším prístupom, ktorý môžeme zvoliť, je pozrieť sa na počet jedntlivých klasifikátorov/datasetov/metód detekcie anomálií, ktoré dosahujú významné zlepšenie. Obr. 5.8: Počet klasifikátorov, ktoré dosiahli výrazné zlepšenie ?- search_data(datal, a l l , gain_clfbest>=0.01, _R.es),stats (_R.es, dataset, count, [clf ] , Res) . Res = [[clf, count_dataset], ['SimpleLogistic', 7], ['SM0', 3], ['RandomForest', 10], ['NaiveBayes', 3], ['Logistic', 12], ['LMT', 6] , ['JRip', 19]] . Tu vidíme, že jednotlivé klasifikátory sa drasticky líšia v počte výhier. Najvyššiu hodnotu dosahuje klasifikátor JRip, a za ním nasleduje Logistic, ktorý je dokonca vo výstupe z experimentov o trochu menej zastúpený. RandomForest a LMT, hoci v priemere sú lepšie, majú menší počet výhier. Tomu nasvedčuje aj ich rozptyl, ktorý je o niečo nižší. Obr. 5.9: Rozptyl pre jednotlivé klasifikátory ?- search_data(datal, a l l , _Res),stats(_Res, gain_clfbest, variance, [clf], Res). Res = [[clf, variance_gain_clfbest], 41 5- EXPERIMENTY ['SimpleLogistic', 0.003755533305100942], ['SMO', 0.004874537881320776], ['RandomForest', 0.0007704444857377529], ['PART', 0.002993361740623995], ['NaiveBayes', 0.012771343053534041], ['Logistic', 0.019358581146019477], ['LMT', 0.0020767611582490704], ['JRip', 0.004146587296733602], ['J48', 0.003347842584445931], ['IBk', 0.002786891808013951]]. Rozptyl v tomto prípade hovorí o tom, ako veľmi pôsobí na jednotlivé klasifikátory odstránenie anomálií. Zďaleka najmenej pôsobí na klasifikátor RandomForest, preto pri ňom nemá veľký zmysel používať odstránenie anomálií. Klasifikátory ako JRip a Logistic majú síce nižšiu priemernú accuracy, ale s pomocou odstránenia anomálií dokážu RandomForest v niektorých prípadoch predbehnúť. Môžeme si tiež všimnúť, že NaiveBayes má jeden z najväčších rozptylov, no keďže jeho priemerné výsledky sú výrazne nižšie, nedosahuje zďaleka také výsledky, ako ostatné klasifikátory. Je dataset X vhodným kandidátom na filtrovanie anomálií pred použitím klasifikátora Z? Túto otázku vieme overiťjednoduchým použitím predikátu search_data/4, kde vyfiltrujeme zvolený dataset, klasifikátor a podmienku gain_clfbest >= 0.01. Obr. 5.10: Je dataset analcatdata-dmft vhodným kandidátom na filtrovanie anomálií pred použitím klasifikátoru RandomForest? ?- search_data(d, [clf, removed, gain_clfbest], (dataset = 'analcatdata-dmft', c l f = 'RandomForest', gain_clfbest >= 0.01), R). R = [[clf, removed, gain_clfbest]]. Keďže výsledok je prázdny, odpoveď je nie, nemá zmysel používať odstraňovanie anomálií pri zvolenom klasifikátore na tomto datasete. 42 5- EXPERIMENTY Pri inom zvolenom datasete získavame neprázdny výsledok a teda pima-diabetes je vhodným kandidátom na filtrovanie anomálií pred použitím klasifikátora RandomForest. Obr. 5.11: Je dataset pima-diabetes vhodným kandidátom na filtrovanie anomálií pred použitím klasifikátora RandomForest? ?- search_data(d, [clf, removed, gain_clfbest], (dataset = 'pima-diabetes', c l f = 'RandomForest', gain_clfbest >= 0.01), R). R = [[clf, removed, gain_clfbest], ['RandomForest', 3, 0.01165], ['RandomForest', 4, 0.01035], ['RandomForest' , 2, 0.01034], ['RandomForest', 2, 0.01297], [' RandomForest', 1, 0.01036], ['RandomForest', 4|...], [' RandomForest'I...]]. 5.2.3 Práca s metaatribútami Nástroj pristupuje k metaatribútom rovnako ako k ostatným atribútom, nehľadiac na to, či sú štatistického, opisného alebo landmarkingového typu. Možné otázky, čo nás ohľadne metaatribútov zaujímajú sú identifikácia nádejných datasetov na odstránenie anomálií a hľadanie štatisticky významného rozdelenia daného metaatribútu. Je dataset s metaatribútom v danom rozsahu vhodným kandidátom na odstránenie anomálií? Vrámci Laboratoře dobývání znalostí sme si určili, že filtrovanie anomálií má zmysel pre tie prípady, kde gaincľfbest >= 0.01. Uvedené príklady kopírujú rozhodovací strom z diplomovej práce D. Hetleroviča, týkajúcej sa rovnakého výskumu na prevažne zhodných dátach. [12] knnlnerrrate > 0.151257 - ak existujú záznamy spĺňajúce túto podmienku, filtrovanie pre daný parameter má zmysel 43 5- EXPERIMENTY Obr. 5.12: Filtrovanie knnlnerrrate > 0.151257 ?- search_data(datal, _R), filter(_R, (knnlnerrrate \= 'NA knnlnerrrate > 0.151257, gain_clfbest > 0.01), _Res), stats(_Res, dataset, count, Count). Count = [[count_dataset], [53]] Selekcia knnlnerrrate > 0.151257 vrátila 53 pozitívnych výsledkov, vieme teda, že filtrovanie anomálií pre dataset spĺňajúci túto podmienku má zmysel vyskúšať. Opačná požiadavka na databázu vracia prázdny zoznam a tak sa zhoduje s predošlými zisteniami. Ďalšou podmienkou pre úspešné knnlnerrrate > 0.151257 v rozhodovacom strome je maxstddevofnumericatts =< 1551.78. Obr. 5.13: Filtrovanie knnlnerrrate > 0.151257, maxstddevofnumericatts =< 1551.78 ?- search_data(datal, _R), filter(_R, (knnlnerrrate \= 'NA ', maxstddevofnumericatts \= 'NA', knnlnerrrate > 0.151257, gain_clfbest > 0.01,maxstddevofnumericatts =< 1551.78), _Res), stats(_Res, dataset, count, Count). Count = [[count_dataset], [33]] Aj druhá podmienka rozhodovacieho stromu vracia neprázdny výsledok a teda sa jej pravdivosť potvrdzuje. Rovnako platia ďalšie podmienky rozhodovacieho stromu na parametre knnlnerrrate, maxstddevofnumericatts, numberofinstances, naivebayeserrratea teda sa aj jeho platnosť potvrdzuje. [12] Rovnako ako na podmienky z rozhodovacieho stromu sa dá pýtať aj na čokoľvek iné. Napríklad, ak nás zaujíma, či má zmysel filtrovať anomálie pre dataset s počtom riadkov medzi 500 a 1000:1 1. Oplatí sa dopredu skontrolovať, či sú v databáze datasety spĺňajúce danú pod­ mienku. 44 5- EXPERIMENTY Obr. 5.14: Filtrovanie numberofinstances > 500, numberofinstances < 1000 ?- search_data(datal, _R), filter(_R, (numberofinstances > 500, numberofinstances < 1000, gain_clfbest > 0.01), _Res), stats(_Res, dataset, count, Count). Count = [[count_dataset], [34]] Keďže výsledný počet je väčší od nuly, oplatí sa v tomto prípade vyskúšať odstránenie anomálií. Je daná hranica pre rozdelenie metaatribútu štatisticky významná? Na otestovanie významnosti rozdelenia podľa hranice určenej metaatribútom môžeme použiť Welchov t-test, keďže nepožaduje aby dané vzorky mali rovnakú veľkosť. Príklad testuje významnosť rozdelenia podľa metaatribútov knnlnerrrate, slúži na to zložený predikát check_boundary/4. Obr. 5.15: Welchov t-test na rozdelení podľa metaatribútov ?- search_data(datal, _R), check_boundary(_R, knnlnerrrate, 0.151257, Result). TTest = 0.998. Toto rozdelenie je štatisticky významné, čo opäť potvrdzuje platnosť rozhodovacieho stromu. Rovnako tomu je aj pre ostatné metaatribúty stromu. Zvolené metaatribúty majú silné spojenie s výsledkami experimentov, výraznú koreláciu potvrdzuje aj fakt, že s pomocou check_boundary/4 afind_best_boundary/4 dosahujú vysoké výsledky pri takmer akomkoľvek nastavení. 45 Záver Práca sa venovala vplyvu odstránenia anomálií na výsledky klasifikácie. Popisovala projekt OpenML ako významný zdroj pre oblasť strojového učenia a metalearning, vďaka množstvu ponúkaných datasetov, metaatribútov a údajoch o jednotlivých úlohách plnených na daných datasetoch. V práci boli ďalej bližšie popísané metaatribúty z OpenML, ktoré sú dôležitou súčasťou ako metalearningu, tak aj výskumu strojového učenia všeobecne a aj výskumu v oblasti vplyvu detekcie anomálií na klasifikáciu dát. Na analýzu výsledkov experimentov o tomto vplyve bol v Prologu zhotovený nástroj, ktorý dokáže tieto dáta načítať a potom ďalej odpovedať na otázky ohľadne nich. Nástroj dokáže odpovedať na požiadavky typu relačnej algebry, vie vyberať stĺpce a riadky tabuliek, spájať tabuľky, či vytvárať nové. Okrem toho dokáže využívať agregačné a štatistické funkcie a odpovedať na zložitejšie otázky pomocou zložených predikátov, prispôsobených na výstupné dáta z experimentov. V nástroji sú tiež implementované aj dve zložitejšie štatistické metódy, na testovanie rovnosti priemerov dvoch vzoriek - Welchov t-test a Wilcoxonov test. Hlavnými benefitmi nástroja sú jeho jednoduchosť, práca s dátami ako bázou znalostí, modulárna štruktúra a jeho prispôsobenosť špecificky na výstupy z experimentov Laboratoře dobývání znalostí. Jeho hlavnými nevýhodami sú nízka popularita Prologu ako programovacieho jazyka a dostupnosť alternatívnych nástrojov na analýzu dát (hoci teda sú zložitejšie a neprispôsobené na naše konkrétne dáta). Do budúcnosti sa môže nástroj jednoducho rozširovať, môže sa zvýšiť množstvo úloh, ktoré dokáže splniť a prípadne sa môže zvyšovať jeho uživatelská prívetivosť. Práca ďalej popisovala experimenty a niektoré ich výsledky. Zodpovedala viacero čiastočných otázok o vplyve odstraňovania anomálií na výsledky klasifikácie. Najvýraznejším zistením bolo, že klasifiká- 47 5- EXPERIMENTY tory RandomForest a LMT dosahujúce najvyššiu priemernú accuracy majú malý počet výrazných zlepšení oproti najlepšiemu výsledku na danom datasete, čo zrejme súvisí s ich nízkym rozptylom. Naopak klasifikátory JRip a Logistic, dosahujúce v priemere nižšie výsledky, zaznamenali o dosť väčší počet výrazných zlepšení oproti najlepším výsledkom bez odstránenia anomálií. Opäť to zrejme súvií s ich vyšším rozptylom. Na záver bolo tiež demonštrované využitie nástroja na volbu metód strojového učenia a využitie nástroja na prácu s metaatribútami, pričom u vybraných metaatribútov bol potvrdený ich výrazný vplyv na výsledky klasifikácie s odstránením anomálií. 48 Bibliografia [1] A. TRUONG, A. WALTERS, J. GOODSITT, K. HINES, C B. BRUSS, R. EARIVAR. Towards automated machine learning: Evaluation and comparison of automl approaches and tools. IEEE 31st International Conference on Tools with Artificial Intelligence (ICTAI) [online], s. 1471-1479. 2019. ISSN 2375-0197. Dostupne z: https: //arxiv.org/abs/1908.05557 [2] OPENML.OpenML Documentation [online] [cit. 2021-05-20]. Dostupne z: https://docs.openml.org/ [3] J. VANSCHOREN, J. N. van RIJN, B. BISCHL, L. TORGO. OpenML: networked science in machine learning. SIGKDD Explorations Newsletter, roc. 15, c. 2, s. 49-60. 2013. Dostupne z: https://arxiv. org/abs/1407.7722 [4] OPENML. OpenML [online] [cit. 2021-05-20]. Dostupne z: https: //www.openml.org/home [5] D. KÜHN, P. PROBST, J. THOMAS, B. BISCHL. Automatic Exploration of Machine Learning Experiments on OpenML [online] [cit. 2021-05-20] Dostupne z: https : //arxiv. org/abs/1806.10961 [6] J. VANSCHOREN, J. N . van RIJN, B. BISCHL, G. CASALICCHIO OpenML: a networked science platform for machine learning. In 2015 ICML Workshop on Machine Learning Open Source Software (MLOSS 2015). s. 1-3. 2015. Dostupne z: https://www.semanticscholar.org/paper/OpenML-7o 3A-a-networked-science-platform-for-machine-Vanschoren-Rijn/ 36d8d504b0fIal79d9b7d8c53d0de5f3ela900ed?p2df [7] D. DUA, C. GRAFF. UCI Machine Learning Repository. Irvine, CA: University of California, School oflnformation and Computer Science. 2019. [online] [cit. 2021-05-20]. Dostupne z: http: //archive. ics. uci.edu/ml [8] KAGGLE. Kaggle. [online] [cit. 2021-05-20]. Dostupne z: https: //www.kaggle.com/ 49 BIBLIOGRAFIA [9] B. BILALLI, A. ABELLÓ, T. ALUJA-BANET. On the predictive power of meta-features in OpenML. International Journal ofApplied Mathematics and Computer Science. 2017, roč. 27, č. 4. doi: 10.1515/amcs-2017-0048. [10] F. PINTO, C. SOARES, J. MENDES-MOREIRA. Towards Automatic Generation of Metafeatures. PAKDD. 2016. doi: 10.1007/978- 3-319-31753-3_18. [11] OPENML. OpenML: Measure, [online] [cit. 2021-05-20]. Dostupné z: https ://www.openml. org/search?q=°/o2520measure_ type°/03Adata_quality&type=measure [12] D. HETLEROVIČ Outlier Analysis and AutoML, Masarykova univerzita, Fakulta informatiky. Diplomová práca. Brno, 2020. Vedúci diplomovej práce doc. RNDr. Lubomír Popelínský, Ph.D. s. 46. [13] SWI PROLOG Predicatefindall/'3 [online] [cit. 2021-05-20]. Dostupné z:https://www.swi-prolog.org/pldoc/man?predicate= findall/3 [14] SWI PROLOG Predicate sort/2 [online] [cit. 2021-05-20]. Dostupné z:https://www.swi-prolog.org/pldoc/man?predicate= sort/2 [15] SWI PROLOG Predicate intersection/3 [online] [cit. 2021- 05-20]. Dostupné z: https://www.swi-prolog.org/pldoc/man? predicate=intersection/3 [16] SWI PROLOG Predicate union/3 [online] [cit. 2021-05-20]. Dostupné z: https://www.swi-prolog.org/pldoc/doc_for? obj ect=union/3 [17] SWI PROLOG Predicate subtract/3 [online] [cit. 2021-05- 20]. Dostupné z: https://www.swi-prolog.org/pldoc/doc_f or? obj ect=subtract/3 [18] M . ÖZSU, P. VALDURIEZ. Principles of Distributed Database Systems. Springer International Publishing. 2020, s.46. ISBN 978-3- 030-26253-2. 50 BIBLIOGRAFIA [19] F. LAMOŠ, R. POTOCKÝ, Pravděpodobnost' a matenatická statistika. 1. vydanie. Bartislava: Alfa, 1989. ISBN 80-05-00115-0, s. 14 - 18. [20] NIST/SEMATECH Measures of Skewness and Kurtosis. e-Handbook of Statistical Methods, [online] [cit. 2021- 05-20]. Dostupné z: https://www.itl.nist.gov/div898/ handbook/eda/section3/eda35b .htm#: ~ :text=Skewness°/0 20is, /,20a, /,20measure, /,20of, relative, /,20to, /,20a, /,20normal, /0 20distribution. doi: https://doi.org/10.18434/M32189 [21] WELCH, B. L. The Generalization of "Student's" Problem When Several Different Population Variances Are Involved, Biometrika, roč. 34, č. 1-2, Január 1947, s. 28-35. Dostupné z: https://doi. org/10.1093/biomet/34.1-2.28 [22] R. POTOCKÝ, J. KALAS, J. KOMORNÍK, F. LAMOŠ Zbierka úloh z pravděpodobnosti a matematické] statistiky. 1. vydanie. Bratislava: Alfa, 1986, s.165-175 [23] F. WILCOXON. Individual Comparisons by Ranking Methods Biometrics Bulletin, roč. 1, č. 6, s. 80 - 83.1945. doi:10.2307/3001968. 51