Redukce dat pro data mining a neuronová síť GAME
Transkript
České vysoké učení technické v Praze Fakulta elektrotechnická Diplomová práce Redukce dat pro data mining a neuronová síť GAME Bc. Helena Krkošková Vedoucí práce: Ing. Miroslav Čepek Studijní program: Elektrotechnika a informatika (magisterský), strukturovaný Obor: Výpočetní technika – počítačové sítě a internet květen 2009 I ii Poděkování Ráda bych poděkovala vedoucímu mé diplomové práce Ing. Miroslavu Čepkovi za podnětné rady, čas strávený konzultacemi a jeho trpělivost. Také bych chtěla poděkovat kamarádce Jitce Závadové, která byla vţdy skvělou kolegyní. V neposlední řadě bych ráda poděkovala své rodině za veškerou podporu. iii Prohlášení Prohlašuji, ţe jsem svou diplomovou práci vypracovala samostatně a pouţila jsem pouze podklady uvedené v přiloţeném seznamu. Nemám závaţný důvod proti uţití tohoto školního díla ve smyslu § 60 Zákona č.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne 22.5. 2009 ............................................... iv v Abstract Training of the GAME neural network is very time consuming task. Time required to create a successful model increases with size of training set. This thesis investigates methods for data reduction (data condensing). Presented methods reduce number of instances in training set and in this way methods reduce time required to train GAME neural network and also reduces amount of memory required during the training process. The important requirement set on condensing methods is that reduced training set must produce a model with the same or similar accuracy as a model created on the not reduced set. Result of this work is implementation of selected methods for data condensing into data preprocessing module of the FAKE GAME project. The implemented condensing methods were tested using the GAME neural network and 1 – NN classifier on several real-world and artificial datasets. Abstrakt Učení neuronové sítě GAME je časově velmi náročné. Čas potřebný k vytvoření modelu roste s velikostí trénovací mnoţiny. Tato diplomová práce se zabývá metodami pro početní redukci dat, které by problém s rostoucí mnoţinou dat měly odstranit. Jsou zkoumány algoritmy, které podstatně zmenšují trénovací mnoţinu, čímţ sniţují paměťové nároky a čas potřebný k tvorbě modelu. Důleţitý poţadavek na tyto metody je, aby model naučený na redukované mnoţině byl stejně kvalitní jako model naučený na plné trénovací mnoţině. Výsledkem této práce je implementace zvolených metod pro početní redukci dat do předzpracovacího modulu projektu FAKE GAME. Úspěšnost implementovaných algoritmů je testována na neuronové síti GAME a pomocí 1 – NN klasifikátoru na umělých a reálných datech. vi vii Obsah Seznam obrázků ........................................................................................................................................ xi Seznam tabulek ....................................................................................................................................... xiii Seznam pseudokódů ................................................................................................................................ xiv Část I – Úvod............................................................................................................................................... 1 Struktura práce .............................................................................................................................. 1 1. Část II – Teoretický rozbor ....................................................................................................................... 3 2. Data Mining .................................................................................................................................... 3 2.1 Členění data miningových úloh ................................................................................................... 4 2.1.1 2.2 Klasifikace .............................................................................................................................. 4 Metodologie CRISP-DM ............................................................................................................. 5 Předzpracování dat ........................................................................................................................ 7 3. 3.1 Redukce dat ................................................................................................................................. 8 3.1.1 Seskupení do data cube .......................................................................................................... 8 3.1.2 Redukce dimenze ................................................................................................................... 9 3.1.3 Komprese dat........................................................................................................................ 10 3.1.4 Početní redukce dat .............................................................................................................. 10 3.1.5 Diskretizace dat a generovaných koncepčních hierarchií ..................................................... 11 Početní redukce dat...................................................................................................................... 12 4. 4.1 Zaměření algoritmů početní redukce dat .................................................................................. 13 4.1.1 Reprezentace dat................................................................................................................... 13 4.1.2 Směr prohledávání ................................................................................................................ 13 4.1.3 Hraniční pozice vs. centrální pozice ..................................................................................... 15 4.1.4 Hodnotící strategie ............................................................................................................... 15 Testované klasifikátory ............................................................................................................... 16 5. 5.1 Pravidlo nejbližšího souseda ..................................................................................................... 16 5.1.1 Algoritmus k – NN ............................................................................................................... 17 5.1.2 Slabé stránky k – NN............................................................................................................ 18 5.2 Neuronové sítě........................................................................................................................... 19 5.2.1 Inspirace ............................................................................................................................... 19 5.2.2 Umělá neuronová síť ............................................................................................................ 20 5.2.3 Group Method of Data Handling (GMDH) .......................................................................... 20 viii 5.3 Group of Adaptive Models Evolution (GAME) ......................................................................... 21 5.3.1 Nevýhody GAME................................................................................................................. 22 5.3.2 Předzpracování dat v projektu FAKE GAME ...................................................................... 23 Část III – Implementované algoritmy ..................................................................................................... 24 Algoritmy početní redukce dat ................................................................................................... 24 6. 6.1 Editační algoritmy ..................................................................................................................... 24 6.1.1 Editované pravidlo nejbliţšího souseda ............................................................................... 24 6.1.2 Editovací schéma All k – NN ............................................................................................... 26 6.2 Neadaptivní kondenzační algoritmy .......................................................................................... 27 6.2.1 Kondenzované pravidlo nejbliţšího souseda ........................................................................ 28 6.2.2 Redukované pravidlo nejbliţšího souseda ............................................................................ 30 6.2.3 Učící algoritmy zaloţené na instancích ................................................................................ 32 6.2.4 Dekrementální redukční optimalizační procedura ................................................................ 36 6.3 Adaptivní kondenzační algoritmy .............................................................................................. 39 6.3.1 Prototypy .............................................................................................................................. 39 6.3.2 Chenův algoritmus ............................................................................................................... 43 6.3.3 Redukce dělením prostoru .................................................................................................... 47 6.4 Vlastní experimentální redukce ................................................................................................. 52 6.4.1 7. MergeAllInstances................................................................................................................ 52 Implementace ............................................................................................................................... 54 7.1 Klasifikátor k - NN .................................................................................................................... 54 7.2 Integrace algoritmů do systému FAKE GAME ......................................................................... 54 Část IV – Testování .................................................................................................................................. 58 Testování implementovaných algoritmů .................................................................................... 58 8. 8.1 Popis testovaných dat ................................................................................................................ 58 8.1.1 Umělá data............................................................................................................................ 58 8.1.2 Reálné databáze .................................................................................................................... 60 8.2 Metodika experimentů ............................................................................................................... 61 8.3 Redukce umělých dat ................................................................................................................. 62 8.3.1 Neadaptivní kondenzační algoritmy ..................................................................................... 62 8.3.2 Adaptivní kondenzační algoritmy ........................................................................................ 65 8.3.3 Srovnání algoritmů ............................................................................................................... 73 8.4 Redukce reálných dat ................................................................................................................ 77 8.4.1 Srovnání algoritmů ............................................................................................................... 77 ix 8.5 Testování úspěšnosti algoritmu MergeAllInstances .................................................................. 83 8.5.1 MergeAllInstances................................................................................................................ 83 8.6 Testování vlivu na rozdělení dat................................................................................................ 86 8.7 Shrnutí dosažených výsledků ..................................................................................................... 88 Část V – Závěr .......................................................................................................................................... 90 Zhodnocení ................................................................................................................................... 90 9. 9.1 Náměty pro budoucí práci ......................................................................................................... 90 Literatura a zdroje ................................................................................................................................... 92 A Seznam pouţitých zkratek .......................................................................................................... 94 B Výsledky redukce umělých dat ................................................................................................... 95 C Uţivatelská příručka .................................................................................................................. 101 D Pomocné skripty ......................................................................................................................... 106 E Obsah přiloţeného CD ............................................................................................................... 107 x Seznam obrázků Obrázek 1: DM nástrojem KDD .................................................................................... 4 Obrázek 2: Učení s učitelem.......................................................................................... 5 Obrázek 3: Ţivotní cyklus CRISP – DM (převzato z [5]) .............................................. 6 Obrázek 4: Metody výběru podmnoţiny atributů (převzato z [4]) ................................. 9 Obrázek 5: Koncepční hierarchie atributu cena ( přezvato z [4]) ................................. 11 Obrázek 6: Kroky procesu početní redukce dat............................................................ 12 Obrázek 7: Klasifikace 1 – NN Obrázek 8: Klasifikace 3 – NN ............................. 17 Obrázek 9: Umělý neuron (převzato z [9]) .................................................................. 19 Obrázek 10: GMDH síť (převzato z [9]) ..................................................................... 20 Obrázek 11: Srovnání MIA GMDH síte se sítí GAME ................................................ 22 Obrázek 12: ENN redukce s k = 1 ............................................................................... 25 Obrázek 13: ENN redukce s k = 3 ............................................................................... 25 Obrázek 14: ENN redukce s k = 3 ............................................................................... 26 Obrázek 15: All k – NN s k = 3 ................................................................................... 26 Obrázek 16: CNN náhodný výběr instance .................................................................. 28 Obrázek 17: CNN klasifikační krok ............................................................................ 29 Obrázek 18: CNN splněna klasifikační podmínka ....................................................... 29 Obrázek 19: Původní mnoţina, CNN podmnoţina a RNN podmnoţina ....................... 31 Obrázek 20: Algoritmus Prototypy .............................................................................. 40 Obrázek 21: Chenův algoritmus, RSP1 algoritmus a RSP3 algoritmus ........................ 44 Obrázek 22: FAKE GAME Preprocessing dialog ........................................................ 55 Obrázek 23: Konfigurace IB3 algoritmu ...................................................................... 55 Obrázek 24: Class diagram modulu algoritmus Prototypy ........................................... 56 Obrázek 25: Uměle vytvořená data Zuby .................................................................... 59 Obrázek 26: Uměle vytvořená data Dvě E ................................................................... 59 Obrázek 27: Uměle vytvořená data Whirpool .............................................................. 60 Obrázek 28: Uměle vytvořená data Šachovnice ........................................................... 60 Obrázek 29: Algoritmus CNN na uměle vytvořených datech Zuby .............................. 63 Obrázek 30: Algoritmus CNN a RNN na uměle vytvořených datech Zuby .................. 63 xi Obrázek 31: Algoritmus IB3 na umělých datech Zuby ................................................ 64 Obrázek 32: Algoritmus DROP3 na umělých datech Zuby .......................................... 65 Obrázek 33: Algoritmus Prototypy na umělých datech Zuby ....................................... 65 Obrázek 34: Chenův algoritmus na umělých datech Zuby ........................................... 66 Obrázek 35: Algoritmus RSP1 na umělých datech Zuby ............................................. 67 Obrázek 36: Algoritmus RSP1 a RSP3 na umělých datech Zuby ................................. 67 Obrázek 37: Původní data s normálním rozdělením ..................................................... 87 Obrázek 38: Data redukovaná algoritmem IB3 ............................................................ 87 Obrázek 39: Data redukovaná algoritmem CNN ......................................................... 87 Obrázek 40: Otevření Preprocessing dialogu ............................................................. 101 Obrázek 41: Ukázka vstupního formátu dat ............................................................... 102 Obrázek 42: Import vstupních dat ............................................................................. 102 Obrázek 43: Načtení trénovací mnoţiny dat .............................................................. 103 Obrázek 44: Otevření konfigurace Chenova algoritmu .............................................. 103 Obrázek 45: Konfigurační dialog Chenova algoritmu ................................................ 104 Obrázek 46: Export redukované mnoţiny dat ............................................................ 104 xii Seznam tabulek Tabulka 1: Vliv editačních algoritmů na klasifikaci 1 – NN ........................................ 69 Tabulka 2: Vliv editačních algoritmů na neuronovou síť GAME ................................. 71 Tabulka 3: Porovnání algoritmů na umělých datech, 1 – NN klasifikátor..................... 73 Tabulka 4: Porovnání algoritmů na umělých datech, neuronová síť GAME ................. 75 Tabulka 5: Porovnání algoritmů na reálných datech, 1 – NN klasifikátor..................... 77 Tabulka 6: Porovnání algoritmů na reálných datech, neuronová síť GAME ................. 79 Tabulka 7: Neuronová síť GAME s alternativním nastavením ..................................... 82 Tabulka 8: Porovnání vlastního kondenzačního algoritmu, 1 – NN klasifikátor ........... 83 Tabulka 9: Porovnání vlastního kondenzačního algoritmu, neuronová síť GAME ....... 85 Tabulka 10: Porovnání statistických vlastností ............................................................ 87 xiii Seznam pseudokódů Pseudokód 1: Algoritmus k – NN ................................................................................ 17 Pseudokód 2: ENN algoritmus .................................................................................... 25 Pseudokód 3: Algoritmus All k – NN .......................................................................... 27 Pseudokód 4: Algoritmus CNN ................................................................................... 29 Pseudokód 5: Algoritmus RNN ................................................................................... 31 Pseudokód 6: Algoritmus IB3 ..................................................................................... 33 Pseudokód 7: Algoritmus DROP3 ............................................................................... 37 Pseudokód 8: Algoritmus Prototypy ............................................................................ 40 Pseudokód 9: Chenův algoritmus ................................................................................ 45 Pseudokód 10: Algoritmus RSP1 ................................................................................ 48 Pseudokód 11: Algoritmus RSP3 ................................................................................ 50 Pseudokód 12: Algoritmus MergeAllInstances ............................................................ 53 xiv xv Struktura práce Část I – Úvod V mnoha odvětvích počítačové vědy jako je například dobývání znalostí, rozpoznávání vzorů či strojové učení, je velmi důleţitá fáze předzpracování dat. Jednotlivé kroky procesu dobývání znalostí jsou různě časově náročné a mají odlišnou důleţitost pro úspěšné vyřešení dané úlohy. Praktici v oboru uvádějí, ţe nejdůleţitější je fáze porozumění datům, která ovšem zabírá pouhých 15% celkového času. Časově nejnáročnější je jiţ zmiňovaná fáze přípravy dat, která zabírá 80% celkového času. Zbylých 5% celkového času zaberou vlastní analýzy. V praxi je mnoţina zkoumaných dat obrovská. Komplexní analýza a dobývání znalostí na obrovském mnoţství dat zabírá mnoho času a znemoţňuje efektivní činnost data miningových algoritmů. Aplikované techniky redukce dat poskytují zredukovanou mnoţinu dat, která ovšem zachovává integritu původních dat. To znamená, ţe učení modelů probíhá podstatně kratší dobu, ovšem výsledky jsou prakticky stejné. Narůstající mnoţství dat vede u data miningových metod k problémům. Proces učení pak trvá příliš dlouho a větší mnoţství instancí v trénovací mnoţině není zárukou kvalitnějšího modelu. Navíc za některých okolností můţe příliš mnoho instancí v trénovací mnoţině zapříčinit selhání učícího algoritmu. K vyřešení tohoto problému pouţívají tradiční metody právě početní redukci dat, tedy odstranění některých instancí z trénovací mnoţiny. Tato práce si klade za cíl prozkoumání metod pro početní redukci dat a následnou implementaci vybraných metod do modulu předzpracování dat projektu FAKE GAME. U implementovaných metod testuji klasifikační přesnost pomocí 1 – NN klasifikátoru a neuronové sítě GAME. Metody testuji na klasifikátoru 1 – NN proto, ţe jej pouţívají autoři zabývající se problematikou početní redukce dat. Také budu testovat, jak implementované metody zachovávají statistické vlastnosti dat. Implementované metody testuji na vlastních uměle vytvořených datech a na vybraných reálných problémech. V práci také vizualizuji výsledné mnoţiny redukované implementovanými metodami na uměle vytvořených datech. 1. Struktura práce Kapitola 1 vznikla. Tuto kapitolu právě čtete. Obsahuje úvod a motivaci proč vlastně práce Kapitola 2 Přináší teoretický úvod k filozofii data miningu. Dále pojednává o klasifikaci a metodologii CRISP – DM. Kapitola 3 Obsahuje základní informace o fázi předzpracování dat. Zaměřuje se na krok redukce dat. Kapitola 4 Zabývá se problematikou početní redukce dat. Popisuje zaměření algoritmů početní redukce dat. 1 Struktura práce Kapitola 5 Rozebírá pouţité klasifikátory. Implementovaný klasifikátor 1 – NN a neuronovou síť GAME. Kapitola 6 Detailně popisuje vybrané algoritmy početní redukce dat a mnou navrţený algoritmus. Kapitola 7 Obsahuje popis implementace modulů vybraných algoritmů do projektu FAKE GAME a také popis implementace klasifikátoru 1 – NN. Kapitola 8 V této kapitole testuji implementované algoritmy na uměle vytvořených datech a vybraných reálných problémech. Je zde dokázáno, ţe práce měla smysl. Kapitola 9 Závěrečná kapitola, která obsahuje zhodnocení celé práce a nápady na budoucí pokračování a vylepšení. 2 Data Mining Část II – Teoretický rozbor Tato část se zabývá teoretickým úvodem do problematiky v procesu dolování dat. Rozebírá redukční metody pouţívané pro předzpracování dat a zaměřuje se na početní redukci dat. Dále věnuje pozornost pouţívaným klasifikátorům. 2. Data Mining Jsme svědky prudkého rozvoje informačních technologií (např. internet, intranet, data warehousing, atd.) a elektronických a optických médií. [1] K tomuto rozvoji patří také exponenciální nárůst mnoţství dat. Přesto, ţe máme zmiňované velké mnoţství dat, neznamená to, ţe jsme schopni z nich všechno zjistit. Databázový managementový systém sice umoţňuje přístup k datům, ale nezajišťuje zisk ucelených analýz. V této situaci se objevuje filozofie, obecně nazývaná Data Mining (dále jen DM), vycházející z předpokladu, ţe ve velkých databázích jsou ukryty poznatky, které lze vyjádřit jednoduchými tvrzeními, vyjadřujícími příčinné vztahy, závislosti, klasifikaci apod. Některé takové poznatky mohou být nečekané a mohou vést k novým odhalením i objevům. Hovoří se tedy o „objevování znalostí v databázích“ (anglicky Knowledge Discovery in Databases , dále jen KDD). Pouţívání DM vede k zajímavým výsledkům v oblastech medicíny, financí a ekonomiky, marketingu, demografie a také politologie. Ačkoliv jsou pojmy DM a KDD jiţ dlouhou dobu obecně známé, nepanuje jednotný názor na jejich obsah a neexistuje všeobecně přijímaná definice. Pro ilustraci uvádím představy několika známých autorů v oblasti DM. A. Zornse říká: „Data mining je multidisciplinární proces pro vývoj přesných strategických a taktických modelů zaloţených na analýze velkého objemu hodnotných dat, KDD je nástrojem DM“. U. Fayyad sděluje: „Data Mining je netriviální proces identifikace pravdivých, dosud neznámých, potenciálně vyuţitelných a naprosto srozumitelných vzorů v datech. DM je nástrojem KDD“ viz Obrázek 1. J. Mena uvádí: „Cílem DM je KDD. DM extrahuje skryté predikční kapacity dat. Kaţdý statistický software lze povaţovat za nástroj KDD. Technologie DM přechází vývojem automaticky k induktivní KDD.“ 3 Data Mining Dolování dat Interpretace Vyhodnocení Transformace Předzpracování Selekce Vzory Data Cílová data Předzpracovaná data Transformovaná data Obrázek 1: DM nástrojem KDD 2.1 Členění data miningových úloh V oblasti data miningu [2] se setkáme s celou řadou úloh, které jsou většinou děleny na tyto následující 3 typy: Klasifikace. Regrese. Shlukování. Klasifikace – je jednou z nejtypičtějších úloh dolování dat. Podstatou klasifikační úlohy je prozkoumání vlastností určité entity a rozhodnutí o jejím zařazení do předem definované skupiny resp. třídy. Počet tříd je konečný a je předem znám. Regrese – zatímco klasifikace pracuje s diskrétním výstupem, úlohy modelující spojitý výstup obvykle označujeme jako regresní. Úkolem regrese je pro dané hodnoty vstupních atributů odhadnout neznámou spojitou hodnotu cílového atributu. Shlukování – spočívá v rozdělení pozorovaných dat do určitého počtu homogenních skupin, tak aby si entity v nalezených skupinách byly co nejvíce podobné. Počet shluků můţe, ale nemusí být dopředu určen. I kdyţ shlukování má blízko ke klasifikaci, k interpretaci skupin dochází aţ po jejich vytvoření. 2.1.1 Klasifikace Nejčastěji pouţívaným hlediskem, dle kterého můţeme klasifikační algoritmy dělit je fakt, zda se při klasifikaci můţeme řídit nějakým vzorem (existuje „učitel“) nebo ne. Podle toho rozlišujeme: Učení s učitelem. Učení bez učitele. Učení s učitelem (Supervised learning) – metoda tvorby modelu pomocí trénovací mnoţiny (učitele) T, která je kolekcí trénovacích vzorů nazvaných instance. Kaţdá instance má vstupy 4 Data Mining a výstupní hodnotu – třídu. Metoda tvorby modelu, při které jsou známy výstupy pro instance v trénovací mnoţině, se nazývá učení s učitelem. Při učení modelu s učitelem jsou data z trénovací mnoţiny postupně předkládána modelu a jeho výstup je porovnáván s poţadovaným výstupem. Pokud se skutečný a poţadovaný výstup liší, učící algoritmus upraví parametry modelu tak, aby se příště výstup modelu blíţil poţadovanému výstupu. Viz Obrázek 2. Trénovací množina vstupy Učící algoritmus výstupy výstup Model Obrázek 2: Učení s učitelem Příkladem učení s učitelem mohou být algoritmy: Nearest Neighbour, Rozhodovací stromy, Neuronové sítě typu Back propagation. Učení bez učitele (Unsupervised learning) – metoda tvorby modelu, při které poţadované výstupy modelu nejsou známy. Model sám hledá vztahy v trénovací mnoţině. Tento typ učení se pouţívá pro shlukování. Při učení se vyhledávají podobné instance a seskupují se do shluků podle podobnosti. Příkladem takového algoritmu je neuronová síť typu SOM nebo K-Means algoritmus. 2.2 Metodologie CRISP-DM S postupem doby začaly vznikat metodologie, které si kladou za cíl poskytnout uţivatelům jednotný rámec pro řešení různých úloh z oblasti dobývání znalostí. [3] Tyto metodologie umoţňují sdílet a přenášet zkušenosti z úspěšných projektů. Za některými metodologiemi stojí producenti software (metoda „5A“ firmy SPSS nebo metodologie SEMMA firmy SAS), jiné vznikají ve spolupráci výzkumných a komerčních institucí jako „softwarově nezávislé“ (CRISP-DM). Metodologie CRISP-DM (CRoss-Industry Standard Process for Data Mining) vznikla v rámci výzkumného projektu Evropské komise. Cílem projektu je navrhnout univerzální postup (tzv. standardní model procesu dobývání znalostí z databází), který bude pouţitelný v nejrůznějších komerčních aplikacích. Vytvoření takovéto metodologie umoţní řešit rozsáhlé úlohy dobývání znalostí rychleji, efektivněji, spolehlivěji a s niţšími náklady. Kromě návrhu 5 Data Mining standardního postupu má CRISP-DM nabízet „průvodce“ potenciálními problémy a řešeními, které se mohou vyskytnout v reálných aplikacích. Ţivotní cyklus projektu dobývání znalostí je podle metodologie CRISP-DM tvořen šesti fázemi viz Obrázek 3. Pořadí jednotlivých fází není pevně dáno. Výsledek dosaţený v jedné fázi ovlivňuje volbu kroků následujících, často je třeba se k některým krokům a fázím vracet. Vnější kruh na obrázku symbolizuje cyklickou povahu procesu dobývání znalostí z databází. Obrázek 3: Ţivotní cyklus CRISP – DM (převzato z [5]) Porozumění problematice (Business understanding) je úvodní fáze zaměřená na pochopení cílů projektu a poţadavků na řešení formulovaných z manaţerského hlediska. Tato manaţerská formulace musí být převedena do zadání úlohy pro dobývání znalostí z databází. Fáze porozumění datům (Data understanding) začíná prvotním sběrem dat. Následují činnosti, které umoţní získat základní představu o datech, která jsou k dispozici (posouzení kvality dat, první „vhled“ do dat, vytipování zajímavých podmnoţin záznamů v databázi…). Obvykle se zjišťují různé deskriptivní charakteristiky dat (četnosti hodnot různých atributů, průměrné hodnoty, minima, maxima apod.), s výhodou se vyuţívají i různé vizualizační techniky. Fáze předzpracování dat (Data preparation) zahrnuje činnosti, které vedou k vytvoření datového souboru, který bude zpracováván jednotlivými analytickými metodami. Tato data by tedy měla obsahovat údaje relevantní k dané úloze, a mít podobu, která je vyţadována vlastními analytickými algoritmy. Analytické metody pouţité ve fázi modelování (Modeling) zahrnují algoritmy pro dobývání znalostí. Obvykle existuje řada různých metod pro řešení dané úlohy, je tedy třeba vybrat ty nejvhodnější (doporučuje se pouţít více různých metod a jejich výsledky kombinovat) a vhodně nastavit jejich parametry. Jde tedy opět o iterativní činnost (opakovaná 6 Předzpracování dat aplikace algoritmů s různými parametry), navíc, pouţití analytických algoritmů můţe vést k potřebě modifikovat data a tedy k návratu k datovým transformacím z předcházející fáze. Ve fázi interpretace (Evaluation) se dosaţené výsledky vyhodnocují z pohledu uţivatelů, tedy z pohledu zda byly splněny cíle formulované na počátku projektu. Vytvořením vhodného modelu celý projekt obecně nekončí. Dokonce i v případě, ţe řešenou úlohou byl „pouze“ popis dat, získané znalosti je třeba upravit do podoby pouţitelné pro podporu rozhodování. Podle typu úlohy tedy využití (Deployment) výsledků můţe na jedné straně znamenat prosté sepsání závěrečné zprávy, na straně druhé pak zavedení systému pro automatickou klasifikaci nových případů. Jednotlivé kroky procesu dobývání znalostí jsou různě časově náročné a mají i různou důleţitost pro úspěšné vyřešení dané úlohy. Praktici v oboru uvádějí, ţe nejdůleţitější je fáze porozumění datům (80 % významu, 20 % času) a časově nejnáročnější je fáze přípravy dat (80 % času, 20 % významu). Překvapivě málo práce zaberou vlastní analýzy (5 % času, 2 % významu). 3. Předzpracování dat Tato diplomová práce se zabývá fází předzpracovávání dat. V DM je klíčovým problémem kvalita dat. Jak jsem jiţ zmínila, v praxi bylo zjištěno, ţe aţ 80% času v procesu DM je věnováno zkvalitňování dat. Příprava dat je tedy hlavním předmětem zkoumání. Předzpracování dat je potřebné z mnoha důvodů. Reálná surová data nemusí být kompletní, mohou chybět hodnoty atributů nebo celé atributy jako takové, či obsahují pouze souhrnná data. [4] Data mohou být dále nekonzistentní v důsledku různého kódování v odlišných reprezentacích, nebo ze stejného důvodu mohou mít rozdílné pojmenování atributů. Objevit se mohou také data odlehlá mimo svůj daný rozsah či nesmyslná data pro danou definici. Běţně se setkáváme se šumem, tj. chybami nebo nepřesnostmi v datech. Fázi předzpracování dat je moţno rozdělit do čtyř skupin: Čištění dat. Integrace dat. Transformace dat. Redukce dat. Čištění dat – reálná data bývají často nekompletní, zašuměná a nekonzistentní. Čištění dat se snaţí zaplnit chybějící hodnoty, zahladit šum, identifikovat odlehlé hodnoty a opravit nekonzistence datech. Chybějící data mohou být způsobena kromě poruchy zaznamenávacího zařízení také nekonzistencí s jinými daty a tudíţ smazána, nebo také tím, ţe na počátku nemusela být povaţována za důleţitá. 7 Předzpracování dat Integrace dat – data do datového úloţiště mohou přicházet z různých zdrojů a to můţe zapříčinit nekoherenci. Integrace zajišťuje sjednocení atributů s různým jménem, které mají ovšem stejný význam. Také sjednocuje klíčová slova stejného významu, která jsou různě pojmenovaná (urgentní, UG, …). Zajišťuje převedení dat do stejných jednotek. Zabraňuje tak nekonzistenci a redundancím dat. Transformace dat – data jsou transformována a sloučena do vhodné podoby k budoucímu procesu dobývání znalostí. Zajišťuje normalizaci dat škálováním hodnot do minimálních rozsahů. Vyhlazuje šum z dat a data agreguje. Generalizuje data, kdy surová data nahrazuje vyššími koncepty pomocí koncepčních hierarchií. Redukce dat – velké mnoţství dat sniţuje výkonnost a dělá analýzu sloţitější. Redukce dat zajišťuje redukci velké mnoţiny dat na podstatně menší reprezentaci dat, která ovšem přináší stejné výsledky analýzy. Podrobněji viz následující kapitola 3.1. 3.1 Redukce dat V praxi je mnoţina zkoumaných dat obrovská. Komplexní analýza a dobývání znalostí na značném mnoţství dat zabírá mnoho času a znemoţňuje efektivní činnost data miningových algoritmů. Aplikované techniky redukce dat poskytují zredukovanou mnoţinu dat, která ovšem zachovává integritu původních dat. To znamená, ţe učení modelů probíhá kratší čas, ovšem výsledky jsou prakticky stejné. Strategie redukce jsou následující: 1. 2. 3. 4. 5. Seskupení do data cube, kde jsou operace aplikované na data, tak aby se seskupila do několikarozměrné datové krychle. Redukce dimenze, kde jsou nerelevantní nebo redundantní atributy a dimenze detekovány a odstraňovány. Komprese dat, kde jsou kódovací mechanizmy pouţity na sníţení velikosti mnoţiny dat. Početní redukce, kde jsou data nahrazena zástupnými daty, jako např. adaptivní modely (kdy je uloţen jeden model místo mnoţiny dat) nebo neadaptivní modely (kdy je vybrána pouze určitá podmnoţina z původní mnoţiny dat) Diskretizace a generace koncepční hierarchie, kde jsou surová data nahrazena rozsahy nebo vyššími koncepčními úrovněmi. 3.1.1 Seskupení do data cube Představme si příklad, kdy máme k dispozici souhrn trţeb za jednotlivá čtvrtletí v letech 2005 aţ 2007. Ovšem nás zajímají pouze celkové roční trţby místo čtvrtletních. Proto je vhodné, data seskupit do ročních období. Výsledná data tak budou menší, ovšem bez ztráty důleţité informace k analýze. Data cube obsahuje vícerozměrně seskupené informace. Kaţdá 8 Předzpracování dat buňka v prostoru obsahuje informaci odpovídající bodu v prostoru. Data cube poskytuje rychlý přístup k seskupeným datům. 3.1.2 Redukce dimenze Mnoţina dat můţe obsahovat stovky atributů, kdy většina z nich je v procesu dobývání znalostí nerelevantní nebo redundantní. Např. při klasifikaci zákazníků, kteří si s vysokou pravděpodobností koupí novou plazmovou televizi, je nepodstatný atribut telefonní číslo a naopak atributy plat či věk jsou důleţité. Vynechání relevantních atributů nebo ponechání zbytečných můţe způsobit zmatení procesu dobývání znalostí nebo jeho zpomalení. Redukce dimenze sniţuje velikost dat odstraňováním atributů. Typicky se aplikují metody výběru podmnoţiny atributů. Cílem je nalézt takovou minimální podmnoţinu atributů, aby rozloţení pravděpodobností tříd bylo co nejblíţe původnímu obsazení atributů. Sníţení počtu atributů také zjednodušuje pochopení nalezených vzorů. V mnoţině d atributů existuje 2d různých podmnoţin. Hledání nejlepší podmnoţiny hrubou silou je časově náročně. Proto se pouţívají různé heuristiky, převáţně na bázi hladových algoritmů, které se při prohledávání rozhodují podle nejlepší moţnosti v daném okamţiku. Strategií je přijmout lokálně optimální krok ve snaze najít globální optimum. V praxi jsou tyto metody efektivní. Kvalita atributů se určuje statistickými testy, předpokládá se, ţe jsou nezávislé. Základní heuristické metody jsou zobrazeny na obrázku, viz Obrázek 4. Obrázek 4: Metody výběru podmnoţiny atributů (převzato z [4]) 1. Dopředný výběr: začíná se s prázdnou mnoţinou atributů. V kaţdém kroku se vloţí nejlepší atribut z atributů zbývajících v původní mnoţině. 9 Předzpracování dat 2. Zpětná eliminace: začíná se s úplnou původní mnoţinou atributů. V kaţdém kroku se odstraní nejhorší atribut z mnoţiny. 3. Kombinovaný dopředný a zpětný běh: kombinace předchozích, kdy se v kaţdém kroku přidá nejlepší a odstraní nejhorší atribut. 4. Rozhodovací stromy: kaţdý vnitřní uzel stromu obsahuje test atributu, kaţdá větev odpovídá výsledku testu a kaţdý list znamená výsledek predikce třídy. Atributy ve stromu jsou redukovanou podmnoţinou atributů a ostatní jsou irelevantní. 3.1.3 Komprese dat Komprese dat můţe být bezeztrátová, kdy jsou data komprimována bez jakékoli ztráty informace, tak ztrátová, kdy můţeme původní data zrekonstruovat pouze přibliţně. Přestoţe existují algoritmy pro bezeztrátovou kompresi na řetězcích, tak se pro omezenou moţnost manipulace s daty příliš nepouţívají. Mezi populární ztrátové metody patří waveletová transformace a analýza hlavních komponent. Diskrétní waveletová transformace (DWT) je technika lineárního zpracování signálu, kde při aplikaci na vektor D jej transformuje na odlišný vektor D0 waveletových koeficientů stejné délky. Přestoţe nový vektor má stejnou délku, uţitečnost spočívá ve faktu, ţe transformovaná data mohou být zkrácena. Zkomprimovaná aproximace původních dat můţe být uchována uloţením pouze části waveletových koeficientů, např. koeficienty pod specifikovaným prahem jsou vynulovány. DWT souvisí s diskrétní Fourierovou transformací, oproti které dosahuje lepší ztrátové komprese. Předpokládejme, ţe původní data obsahují N poloţek z k dimenzí. Analýza hlavních komponent (PCA) hledá c k-rozměrných ortogonálních vektorů, které by nejlépe reprezentovaly původní data, c << N. Původní data jsou tedy promítnuta do mnohem menšího prostoru, tj. komprimována. PCA je tedy formou redukce dimenze. Nicméně oproti výběru podmnoţiny atributů, která sníţí počet původních atributů, PCA vytváří alternativní mnoţinu atributů, do které jsou původní data promítnuta. 3.1.4 Početní redukce dat Početní redukce dat slouţí ke sníţení počtu dat volbou alternativní formy reprezentace dat. Mnoţina dat je zastoupena malou mnoţinou instancí, která ovšem zachovává všechny potřebné informace. Podrobněji viz další kapitola 4. Existují dva základní přístupy pro početní redukci: Neadaptivní (selektivní). Adaptivní (generalizační). Neadaptivní přístup vybírá podmnoţinu instancí z původní mnoţiny, která ji nejlépe reprezentuje. Zaměřuje se na výběr instancí na úrovni rozhodovací hranice. V tomto přístupu nikdy nedochází k modifikaci instancí. 10 Předzpracování dat Naproti tomu adaptivní přístup generuje nové reprezentanty, kteří nahrazují původní mnoţinu. Odstraňuje tak hlavní nevýhodu neadaptivního přístupu, kdy není moţné ţádnou instanci posunout na výhodnější pozici. 3.1.5 Diskretizace dat a generovaných koncepčních hierarchií Techniky diskretizace dat slouţí k redukci hodnot atributů rozdělením jejich rozsahu do intervalů. Jména intervalů pak mohou nahradit původní hodnoty. Mnoho diskretizačních metod můţe být rekurzivně aplikováno a vytvořit hierarchický několikaúrovňový rozklad, tj. koncepční hierarchii. Koncepční hierarchie pro číselný atribut zapříčiní jeho diskretizaci. Nahrazují nízkoúrovňové koncepty, jako např. číselné hodnoty atributu věk, vyššími koncepty, jako teenager, dospělý, důchodce. Ačkoli se tímto ztratí detaily, generalizovaná data jsou smysluplnější a snadněji interpretovatelná a dále potřebují měně prostoru k uloţení. Proces dobývání znalostí bude potřebovat méně vstupně/výstupních operací a bude efektivnější. Příklad koncepční hierarchie atributu cena, je ilustrován na obrázku viz Obrázek 5. Pro daný atribut existuje více koncepčních hierarchií podle potřeby. Obrázek 5: Koncepční hierarchie atributu cena (převzato z [4]) Některé metody tvorby koncepčních hierarchií pro číselná a diskrétní data: 1. 2. 3. 4. Metoda přihrádek: podobně jako u čištění můţe slouţit i k diskretizaci. Např. nahrazení hodnot uvnitř přihrádky průměrem nebo mediánem. Můţe být aplikováno rekurzivně a vytvořit koncepční hierarchii. Histogramy: rozdělení dat do intervalů je vlastně formou diskretizace. Aplikace histogramu na jednotlivé intervaly vytvoří koncepční hierarchii. Shlukování: kaţdá skupina při shlukování tvoří uzel koncepční hierarchie, kaţdý uzel je na stejné úrovni. Kaţdá skupina pak můţe být dále rozdělena na podskupiny a vytvořit niţší úrovně koncepční hierarchie. Specifikace pro diskrétní data: systém nebo expert můţe určit pořadí atributů a tím určit koncepční hierarchii. Např. pro atribut místo můţeme určit závislost 11 Početní redukce dat ulice < město < kraj < země. Pro rozsáhlejší atributy lze hierarchii vypozorovat na základě početních zastoupení pro jednotlivé hodnoty atributů (zemí je méně neţ ulic, proto bude v hierarchii výše). Toto ovšem vyţaduje kontrolu, neboť' v určitých případech můţe selhat, např. dnů v týdnu je méně neţ měsíců v roce, ale v hierarchii by měl být den níţ. 4. Početní redukce dat Jak jsem jiţ zmínila v předchozí kapitole, tato diplomová práce se zabývá fází předzpracovávání dat v procesu dolování dat. Přičemţ se ve fázi předzpracovávání dat zaměřuje na redukci dat, kdy vyuţívá strategii početní redukce dat. Narůstající mnoţství dat vede u metod dolování dat k problémům. Proces učení pak trvá příliš dlouho a větší mnoţství instancí v trénovací mnoţině není zárukou kvalitnějšího modelu. Navíc za některých okolností můţe příliš mnoho instancí v trénovací mnoţině zapříčinit selhání učícího algoritmu. Problém s délkou učícího procesu je obzvláště dramatický v případě pouţití některého z algoritmů zaloţeného na vzdálenostech, jako je např. Pravidlo nejbliţšího souseda (Nearest Neighbour rule, dále jen NN) [Cover & Hart 1967; Dasarathy 1991]. Základní NN algoritmus při klasifikaci jednoho testovacího vzorku musí projít všechny instance v trénovací mnoţině. NN klasifikátor tudíţ ukládá všechny instance trénovací mnoţiny i s rušivými instancemi, které mohou degradovat přesnost klasifikace. K vyřešení tohoto problému pouţívají tradiční metody právě početní redukci dat, tedy odstranění některých instancí z trénovací mnoţiny. Proces početní redukce dat se skládá ze dvou po sobě jdoucích kroků – editování (editing) a kondenzace (condensing). [10] Počáteční krok editování se zaměřuje na odstranění rušivých instancí a instancí, které leţí na rozhodovací hranici. Odstraňuje tak všechny instance, které by mohly ohrozit přesnost klasifikace. Následující krok kondenzace vybírá podmnoţinu instancí z původní trénovací mnoţiny či generuje podmnoţinu nových reprezentantů tak, aby nedošlo k výrazné změně klasifikační přesnosti. Sniţuje paměťové poţadavky a čas potřebný na vytvoření modelu či klasifikaci trénovací mnoţiny. Z obrázku viz Obrázek 6 je zřejmé, ţe krok editování pracuje s původní trénovací mnoţinou TS a jeho výstupem je editovaná mnoţina (Edited Set ES). Editovaná mnoţina slouţí jako vstup pro krok kondenzace, jehoţ výstupem je kondenzovaná mnoţina (Condensed Set CS), která se pak vyuţívá v procesu klasifikace jako trénovací mnoţina. TS ES CS Editování Kondenzace Obrázek 6: Kroky procesu početní redukce dat 12 Početní redukce dat V této diplomové práci jsem zkoumala a následně implementovala dva základní editovací algoritmy Wilson (1972) [12] a Tomek (1976) [13]. Další informace o algoritmech pro editování si můţete přečíst v literatuře viz [11]. Algoritmy pro kondenzaci se dělí na dvě hlavní skupiny. Neadaptivní (selektivní) skupinu algoritmů, které se zaměřují na výběr podmnoţiny originálních instancí z trénovací mnoţiny. Např.: Hart (1968) [14], Gates (1972) [15], Tomek (1976) [13], Aha (1991) [16], Dasarathy (1994) [17], Wilson & Martinez (1997) [18]. Adaptivní skupinu algoritmů, které generují podmnoţinu nových reprezentantů. Např.: Chang (1974) [19], Chen & Jozwik (1996) [20], Sánchez (2004) [21]. V této diplomové práci se zaměřuji na oba způsoby redukce dat. Neadaptivní algoritmy zkoumané v mojí studii a následně implementované jsou Condensed Nearest Neighbours (CNN – Hart), Reduce Nearest Neighbours (RNN – Gates), IB3 – (Aha), DROP3 – (Wilson & Martinez). Adaptivní algoritmy zkoumané v mojí studii a následně implementované jsou Prototypes (Chang), Chen’s algorithm (Chen & Jozwik), RSP1 (Sánchez), RSP3 (Sánchez). Zaměření algoritmů početní redukce dat 4.1 Kaţdý algoritmus početní redukce dat se snaţí nalézt nejlepší strategii redukce. V této kapitole popisuji nejdůleţitější body, na které se redukční algoritmy zaměřují. Jedná se o reprezentaci dat, směr prohledávání, volba nejvhodnějších pozic instancí a také kritéria pro porovnání odlišných redukčních strategií. [18] 4.1.1 Reprezentace dat Jedním z důleţitých rozhodnutí v návrhu algoritmů pro početní redukci dat je volba, zda zachovat podmnoţinu originálních instancí nebo instance modifikovat pouţitím nové reprezentace. Některé algoritmy [Salzberg (1991), Wettschereck & Dietterich (1995)] pouţívají hyperkvádr (hyperrectangles) k reprezentaci kolekcí instancí. Dále mohou být instance zastoupeny pravidly [Domingos (1995)], nebo prototypy, které jsou pouţity k reprezentaci shluků instancí [Chang (1974)]. Instance se tak můţe vyskytnout v místě, kde se nenachází ţádná instance v původní originální mnoţině. Na druhé straně velké mnoţství algoritmů početní redukce dat usiluje o ponechání podmnoţiny originálních instancí. Jedním problémem s pouţitím originálních instancí je fakt, ţe instance není moţné přemístit na přesnou pozici, abychom mohli zajistit vyšší přesnost klasifikace. Za to prototypy můţeme uměle konstruovat tak, aby mohly být umístěny přesně tam, kde jsou potřebné. Podobně to platí i pro pravidla a hyperkvádry. 4.1.2 Směr prohledávání Hledání podmnoţiny instancí z trénovací mnoţiny je moţné třemi způsoby: 13 Početní redukce dat Inkrementální prohledávání. Dekrementální prohledávání. Dávkové prohledávání. Inkrementální prohledávání Algoritmy s inkrementálním prohledáváním začínají s prázdnou podmnoţinou redukovaných trénovacích dat (S) a postupně do ní přidávají instance z originální trénovací mnoţiny (TS), které splňují všechna potřebná kritéria. U těchto algoritmů můţe být prvotní uspořádání instancí velmi důleţité, poněvadţ první instance mají podstatně odlišnou pravděpodobnost pro přidání do podmnoţiny S, neţ ty, které jsou přidány později. Proto se většinou k instancím v originální trénovací mnoţině přistupuje náhodně. Některé inkrementální algoritmy si ve finální redukované mnoţině neponechávají instance vybrané v prvotním průchodu. Hlavní výhodou inkrementálních algoritmů je, ţe jsou rychlejší a pouţívají méně paměti během průchodu neţ neinkrementální algoritmy. Nevýhodou je citlivost inkrementálních algoritmů na uspořádání prezentace instancí trénovací mnoţiny a také rozhodování s malým počtem informací. Dekrementální prohledávání Algoritmy s dekrementálním prohledáváním začínají s kompletní původní trénovací mnoţinou S = TS a poté se rozhodují, které instance je potřeba z mnoţiny S odstranit. Opět platí, ţe uspořádání prezentace instancí v mnoţině S je důleţité, ale ne tak, jako u inkrementálních algoritmů. Všechny trénovací instance jsou algoritmu přístupné jiţ od začátku, a tak se algoritmus můţe rozhodnout, kterou instanci bude v daném kroku nejlepší odstranit. Nevýhodou dekrementálního prohledávání je vyšší výpočetní sloţitost neţ u inkrementálního prohledávání. Dávkové vyhledávání Dalším způsobem jak aplikovat redukční schéma na trénovací mnoţinu je dávkové vyhledávání. V tomto procesu se u kaţdé instance rozhoduje, zda splňuje kritéria k odstranění a pokud ano, tak je označena pro pozdější odebrání. Aţ po kontrole všech instancí se odstraní všechny instance, které jsou označeny. Tento postup však můţe způsobit vymizení celého shluku, pokud poblíţ nejsou instance odlišné třídy. Stejně jako dekrementální prohledávání má dávkové vyhledávání vyšší výpočetní sloţitost neţ inkrementální vyhledávání. 14 Početní redukce dat 4.1.3 Hraniční pozice vs. centrální pozice Dalším kritériem, podle kterého můţeme algoritmy početní redukce dat rozlišovat, jsou pozice instancí, které zanechávají. Mohou to být instance na hraničních pozicích, centrálních pozicích či jiných pozicích. Některé algoritmy se řídí základní intuicí, ţe „vnitřní“ instance neovlivňují rozhodovací hranici tak, jako hraniční instance a proto je moţné je odstranit s relativně malým vlivem na přesnost klasifikace. Další algoritmy se naopak zaměřují na odstranění hraničních instancí. Soustředí se na rušivé instance nebo instance, jejichţ sousedé patří do jiné třídy. Odstraňují tak hraniční instance a vyhlazují tím rozhodovací hranici. Proto tyto algoritmy neodstraňují „vnitřní“ instance, které slouţí k určení rozhodovací hranice. Protoţe vybírání vhodných hraničních bodů k určení rozhodovací hranice je velmi náročné, některé algoritmy se snaţí získat instance na centrálních pozicích. Centrální instance jsou instance, které jsou schopny klasifikovat správně všechny blízké sousední instance. Tento postup můţe dramaticky ovlivnit rozhodovací hranice. Jednoduše řečeno, rozhodovací hranice je umístěna mezi dvěma nejbliţšími instancemi různých tříd. Proto je potřeba centrální instance vybírat pečlivě a zajistit tak správnou klasifikaci instancí v nejbliţším okolí. 4.1.4 Hodnotící strategie K porovnání algoritmů početní redukce dat se nejčastěji pouţívá následujících čtyř kritérií: Redukce paměti. Zvýšení rychlosti klasifikace. Přesnost klasifikace. Zrychlení učícího procesu. Některé z těchto kritérií pro porovnání redukčních algoritmů vyuţívám také ve své experimentální části viz kapitola 8. Redukce paměti Jedním z hlavních cílů početní redukce dat je sníţení paměťových poţadavků. Je důleţité si uvědomit, ţe pouţití jiné reprezentace dat (např.: hyperkvádry, pravidla) můţe i při sníţení počtu instancí poţadavek na paměť navýšit. Zvýšení rychlosti klasifikace Dalším hlavním cílem početní redukce dat je zrychlení klasifikačního procesu. Redukce počtu uloţených instancí přináší odpovídající redukci času potřebného pro hledání potřebných instancí a klasifikování vstupního vektoru. Opět je potřeba prověřit, zda při komplexní reprezentaci dat není potřeba více porovnávání, či zda porovnávání netrvá příliš dlouho. 15 Testované klasifikátory Přesnost klasifikace Úspěšné algoritmy musí být ve většině případů schopné značně redukovat velikost trénovací mnoţiny, ovšem bez významného sníţení přesnosti klasifikace. V některých případech můţe být dokonce přesnost klasifikace redukcí instancí zvýšena, pokud jsou odstraněny rušivé instance a je vyhlazena rozhodovací hranice. Zrychlení učícího procesu Urychlení učícího procesu není tolik důleţité v procesu klasifikace, protoţe učící proces je pro danou instanci vykonán jen jednou. Avšak pokud učící fáze trvá příliš dlouho, můţe se stát nepraktický pro skutečné aplikace. 5. Testované klasifikátory Stěţejním úkolem této diplomové práce je implementace redukčních algoritmů pro neuronovou síť GAME. Ovšem pro řádné porovnání a vyhodnocení redukčních algoritmů jsem se rozhodla implementovat klasifikátor k – nejbliţších sousedů (k – Nearest Neighbours, dále jen k – NN), který je pro tyto účely vhodnější. Navíc je často pouţíván v literatuře o početní redukci dat, a tak jeho pouţitím získám moţnost srovnání výsledků mých redukčních algoritmů s ostatními pracemi. Jak jsem jiţ zmínila, tento klasifikátor ukládá všechny instance trénovací mnoţiny a navíc při testování jedné instance musí vypočítat vzdálenost ke všem trénovacím instancím. Tudíţ má vysokou paměťovou i výpočetní sloţitost, které je potřeba sníţit. 5.1 Pravidlo nejbližšího souseda Jedním ze způsobů, jak klasifikovat vzor do odpovídající třídy, je pravidlo nejbliţšího souseda (Nearest neighbor rule, dále jen NN). Jedná se o velmi přímočarou metodu. Ve většině případů poskytuje celkem uspokojivé výsledky, které poslouţí k srovnání redukčních algoritmů. [6] Při klasifikaci neznámého vzoru x se vypočítá jeho vzdálenost od všech reprezentantů ze všech tříd. Vzor x je pak zařazen do třídy, která odpovídá nejbliţšímu reprezentantovi (resp. je nejčastěji zastoupena mezi nejbliţšími reprezentanty). Vhodná metrika můţe výsledek klasifikace výrazně zlepšit. Nejobvyklejší je pouţití Euklidovské metriky. Mezi nejznámější metriky patří Euklidovská vzdálenost. Pro dva n-dimenzionální příznakové vektory x = (x1,…, xn) a y = (y1,…,yn) je Euklidovská vzdálenost definována vztahem: 𝑥−𝑦 = 𝑥1 − 𝑦1 2 + … + 𝑥𝑛 − 𝑦𝑛 2 Na základě této metriky je nalezen nejbliţší reprezentant 𝑦𝑖 𝑌𝑖 pro kterého platí: 16 Testované klasifikátory 𝑥 − 𝑦𝑖 ≤ 𝑥 − 𝑦 pro všechna y Y a neznámý vzor x je klasifikován do třídy i. 5.1.1 Algoritmus k – NN Jde o metodu pro učení s učitelem, kdy se klasifikují prvky reprezentované vícedimenzionálními vektory do dvou nebo více tříd. Pro kaţdou třídu můţe být z trénovací mnoţiny vybráno i více reprezentantů. Jejich počet můţe záviset na velikosti celé trénovací mnoţiny, apriorní pravděpodobností dané třídy nebo procentuálním zastoupení vzorů z dané třídy v trénovací mnoţině. Typicky se volí stejný počet reprezentantů pro všechny třídy. Vybrány by měly být ty vzory, které danou třídu nejlépe charakterizují. Pokud je k = 1, jde o speciální zjednodušený případ, pravidlo nejbliţšího souseda. Pro klasifikaci neznámého vzoru x je nutné vypočítat jeho vzdálenost od všech reprezentantů v příznakovém prostoru. V této souvislosti se nejčastěji uplatňuje jiţ zmíněná Euklidovská metrika. Dále je potřeba najít k nejbliţších reprezentantů. Neznámý vzor x je klasifikován do té třídy, která je nejvíce zastoupena mezi k nejbliţšími reprezentanty. Podrobněji viz Pseudokód 1. Na obrázku viz Obrázek 7 je zobrazena klasifikace pomocí zjednodušeného případu, kdy k = 1, tzv. pravidlo nejbliţšího souseda. Na obrázku viz Obrázek 8 můţeme sledovat klasifikaci k – NN algoritmem s parametrem k = 3. ?= ?= X X Obrázek 7: Klasifikace 1 – NN Obrázek 8: Klasifikace 3 – NN Pseudokód 1: Algoritmus k – NN Význam použitých proměnných n[#class(množina TS)] - pole n o velikosti dle počtu tříd z původní trénovací množiny TS, které slouží k čítání zastoupení jednotlivých tříd k nejbližších sousedů k - počet nejbližších sousedů, dle kterých testovanou instanci klasifikujeme 17 Testované klasifikátory classes – seznam všech tříd které jsou zastoupeny v množině TS Popisy použitých datových struktur V množině TS pro každou instanci t: t.d - vzdálenost instance k testované instanci Význam použitých funkcí vstup() – vrací vstup definovaný uživatelem vzdalenost(instance x, instance y) – vrací euklidovskou vzdálenost instancí x, y ( n i=1(x i − yi ) 2 ) sort(množina X) – vrací seřazenou množinu X vzestupně podle x.d (vzdálenost k testované instanci) dalsiN(množina X) – vrací další nejbližší instanci k instanci x z množiny X class(instance x) – vrací třídu instance x #class(množina X) - vrací celkový počet tříd zastoupených v množině X maxclass(pole X[]) - vrací nejzastoupenější třídu z pole X (index políčka s nejvyšším obsahem). V případě, že je takových tříd více, vybere z nich náhodně // 1. // 2. // 3. // // 4. // 5. // // // 6. 7. Načte počet nejbližších sousedů k k = vstup() Vypočítá vzdálenosti všech reprezentantů y od neznámého vzoru x for all y from TS y.de = vzdalenost(x,y) Setřídí reprezentanty vzestupně podle vzdálenosti sort(TS) Inicializuje pole n o velikosti dle počtu tříd v trénovací množině TS n[#class(TS)] Postupně inkrementuje proměnnou k od 1 do k for k from 1..k { // Pro všechny třídy ze seznamu tříd // (všechny indexy pole n) for all c from classes { // vyzkouší zda se třída rovná třídě souseda if (c == class(dalsiN(TS)) { // a případně zvýší počet zástupců této třídy // mezi k nejbližšími sousedy n[c] = n[c] + 1 } } } Nalezne nejzastoupenější třídu mezi sousedy V případě, že je takových tříd více vybere z nich náhodně i = maxclass(n[]) return i 5.1.2 Slabé stránky k – NN Algoritmus k – NN ukládá všechny trénovací instance. Učí se velmi rychle, protoţe trénovací mnoţinu dat pouze čte a trénovací instance dále nezpracovává. Avšak ukládání všech trénovacích instancí znamená značné paměťové nároky. Navíc musí prohledávat všechny dostupné instance ke klasifikaci vstupního vektoru, a tak klasifikace trvá příliš dlouho. [7] 18 Testované klasifikátory Při ukládání všech instancí trénovací mnoţiny jsou uloţeny také rušivé nebo „zašuměné“ instance, které mohou sníţit přesnost klasifikace. Rušivé instance jsou instance, které byly při přípravě trénovací mnoţiny zařazeny do špatné třídy. Další skupinou rušivých instancí jsou odlehlé instance. Techniky jako jsou KD-stromy [Sproull (1991)] a projekce [Papadimitriou & Bentley (1980)] dokáţí redukovat čas potřebný k nalezení nejbliţších sousedů vstupního vektoru, ale nejsou schopné redukovat paměťové poţadavky nebo vyřešit problém ukládání rušivých instancí. 5.2 Neuronové sítě Neuronové sítě jsou výkonná metoda, která se pouţívá k modelování vztahu mezi vícerozměrnou vstupní proměnnou x a vícerozměrnou výstupní proměnnou y. Umělou neuronovou síť lze obecně povaţovat za nelineární regresní model, který lze vyjádřit síťovou strukturou. Neuronové sítě řeší problémy a úkoly nejen v technologické praxi, ale také ve výzkumu, marketingových analýzách, Data Mining, KDD a podobně. [8] 5.2.1 Inspirace Umělé neuronové sítě jsou inspirovány biologickým mozkem. Nové poznatky nám pomáhají při modelování přírodních systému. Neuronové sítě jsou pouţívány pro svou schopnost učit se na omezené mnoţině (vstupu a výstupu) a generalizovat, tedy dávat správné výsledky také u vstupů, u kterých neznáme výstupy. [9] Obrázek 9: Umělý neuron (převzato z [9]) Umělé neuronové sítě jsou inspirovány neuronovými sítěmi v přírodě. Základním stavebním kamenem umělé i biologické neuronové sítě je neuron. Umělý stejně jako biologický neuron má tři části: dendrity, soma a axon. Dendrity jsou vstupy a kaţdý neuron jich má několik. Dendrity poskytují neuronu vstupní signály, které jsou v těle neuronu (soma) sečteny a podle výsledného signálu a prahové funkce je vyslán signál na výstup neuronu (axon). Neuron má pouze jeden výstup (axon), který se dále větví a je napojen přes synapse na další neurony. Synapse se dělí na dva druhy. Excitační synapse zvyšují hodnotu signálu a inhibiční, které naopak sniţují hodnotu signálu. Míra, o kolik se hodnota signálu zvýší nebo sníţí, se liší u kaţdé synapse. 19 Testované klasifikátory 5.2.2 Umělá neuronová síť Neuronová síť vzniká ve fázi, které se říká trénovací. V této fázi máme k dispozici mnoţinu trénovacích dat, která se skládá z vektoru vstupních hodnot a výstupní hodnoty. Počet vstupů sítě odpovídá dimenzi vektoru z mnoţiny trénovacích dat. Tyto vektory jsou síti postupně předkládány. Podle odezvy sítě jsou upravovány parametry neuronové sítě tak, aby výstup sítě co nejvíce odpovídal očekávané hodnotě. Výhodou umělých neuronových sítí je jejich schopnost generalizovat. Po naučení je síť schopná reagovat i na vstupní vektory, které jí nebyly předloţeny v trénovací fázi. Vnitřní struktura sítě se dělí na vrstvy. První vstupní vrstva slouţí pouze k distribuci vstupních hodnot do další skryté vrstvy. Skrytých vrstev muţe být libovolný počet. Mezi jednotlivými vrstvami existuje propojení. Kaţdý neuron předchozí vrstvy je propojen s neurony následující vrstvy. To s jakou významností bude propojení přispívat do neuronu, je dáno váhou, která je nastavována v učící fázi. Za poslední skrytou vrstvou je vrstva výstupní, která reprezentuje výstup neuronové sítě. Obrázek 10: GMDH síť (převzato z [9]) 5.2.3 Group Method of Data Handling (GMDH) Neuronové sítě typu GMDH jsou sítě, které jsou vytvářeny indukcí. Na rozdíl od sítí, které pouţívají algoritmus Backpropagation, struktura sítě typu GMDH není předem známá a vzniká aţ ve fázi učení. Síť typu GMDH vychází z několika základních stavebních jednotek, 20 Testované klasifikátory které během fáze učení kombinuje a snaţí se vytvořit model nejlépe odpovídající trénovací mnoţině dat. Tvorba sítě začíná z minimální formy a staví se po vrstvách. Při tvorbě kaţdé vrstvy se nejprve vygenerují neurony. Vţdy se vygeneruje tolik neuronů, kolik je moţných kombinací výstupů z neuronů v předchozí vrstvě. Pro omezení počtu kombinací mohou mít neurony jen omezený počet vstupů (typicky 2). Všechny neurony realizují stejnou přenosovou funkci. Přenosová funkce je většinou polynom a jednotlivé neurony se liší vstupy a koeficienty polynomů. Po vygenerování nové vrstvy následuje optimalizace koeficientů tak, aby neuron dosahoval co nejmenší chyby na trénovací mnoţině. Poslední fáze tvorby vrstvy je výběr neuronů. Všechny vytvořené neurony jsou otestovány na validační mnoţině a neurony s nejmenší chybou jsou ponechány. Ostatní neurony jsou smazány. Takto vytvořená nová vrstva je „zmraţena“ a dále se jiţ nemění. Učící algoritmus pak pokračuje tvorbou nové vrstvy. Nové vrstvy se přidávají, dokud chyba nejlepšího neuronu přesahuje zadanou hranici. Dalším moţným kritériem na zastavení tvorby dalších vrstev je zastavení poklesu chyby nejlepšího neuronu. Výše popsaný postup se nazývá MIA (Multilayered Iterative Algorithm) GMDH. Další variantou je COMBI (Combinatorial) GMDH. Neurony této sítě obsahují různé typy polynomů a v rámci učení se zkouší různé typy polynomů. Další informace lze najít například v [24]. 5.3 Group of Adaptive Models Evolution (GAME) Metoda GAME vylepšuje neuronovou síť typu GMDH. Dokáţe generovat přesnější modely pro větší mnoţství dat. Hlavním přínosem metody GAME je její schopnost generovat skupiny samoadaptujících se modelů podle charakteru a komplexnosti zadaných dat. Induktivní model neuronové sítě roste do takové velikosti, aby byl schopen zadanou úlohu vyrešit s poţadovanou přesností. Model se skládá z jednotek (neuronů), které nejlépe modelují vnitřní vztahy v datech. Jednotky mohou realizovat velké mnoţství přenosových funkcí a učící algoritmus pak můţe vybírat ty jednotky, které nejlépe odpovídají datům. Působ tvorby sítě typu GAME je podobný jako u GMDH. Ale jak je vidět na obrázku TODO síť typu GAME má více stupňů volnosti neţ síť typu GMDH (jednotky s různým počtem vstupů, propojení mezi vrstvami v síti). S rostoucí dimenzí zadaných dat je nemoţné bez další heuristiky vyhledat v obrovském stavovém prostoru různých modelů správnou topologii. Metoda GAME v sobě zahrnuje genetický algoritmus, který vyvíjí optimální strukturu modelu. Dalšími vylepšeními jsou: • Několik typů jednotek (neuronů), které souteţí o přeţití v modelu. • Rostoucí sloţitost modelu. • Propojení mezi vrstvami. 21 Testované klasifikátory • Generování skupiny modelů, které zvyšují věrohodnost odezvy modelu. • Genetický algoritmus pro vytváření optimální topologie modelů. • Metoda niching, která umoţňuje zachování méně přesných, ale zajímavých neuronů. Obrázek 11: Srovnání MIA GMDH sítě se sítí GAME (převzato z [9]) Metoda GAME generuje na mnoţině učících dat modely s podobnou přesností. Modely jsou testovány na náhodných podmnoţinách mnoţiny učících dat. Modely se skládají z podobných typů jednotek (neuronů) a mají podobnou sloţitost. Je velice obtíţné zvolit jen jeden nejlepší model, protoţe modely jsou si velice podobné. Proto vzniká skupina (ensemble) modelů. 5.3.1 Nevýhody GAME Metoda GAME dosahuje dobrých výsledků a často překonává jiné klasifikační algoritmy. Má ale i slabé stránky. Největší nevýhoda je značná výpočetní náročnost tvorby sítě. Další nevýhodou je nedeterministická metoda tvorby GAME modelu. Díky náhodné inicializaci a genetickému algoritmu, kaţdý model dosahuje jiných výsledků. Pro ověření získaných výsledků je třeba vytvořit několik modelů, coţ dále zvyšuje čas potřebný k tvorbě modelu. V průběhu učení jednotlivých neuronů v síti, dochází k automatické redukci dat, pokud je trénovací mnoţina příliš velká. Pro kaţdý neuron se pak vytvoří nová redukovaná mnoţina náhodně vybraných instancí. Tyto vybrané instance jsou pak pouţity při učení daného 22 Testované klasifikátory neuronu. Protoţe jsou instance vybírány náhodně, je u velkých trénovacích mnoţin, značné riziko, ţe budou zvoleny nevhodné instance. Trénování na nevhodně zvolených instancích pak vede k zvětšování počtu vrstev v síti a vzrůstu její sloţitosti. Nevhodně zvolené instance mohou dokonce vést k neschopnosti konkrétního modelu se správně naučit. 5.3.2 Předzpracování dat v projektu FAKE GAME Neuronová síť GAME je implementována v projektu FAKE GAME. Součástí implementace neuronové sítě v projektu FAKE GAME je také modul věnující se předzpracování dat. Modul implementuje základní skupiny metod pro předzpracování dat. Kaţdá skupina obsahuje několik různých předzpracovacích metod. Celkem je v současnosti implementováno přes 40 předzpracovacích metod z následujících oblastí: Import z různých formátů včetně MS Office XLS. Export do různých formátů – např. Weka, MS Excel. Normalizace dat – například lineární, soft-max, z-score. Nahrazování chybějících hodnot – základní metody pro náhradu konstantou, střední hodnotou apod. Diskretizace. Jednoduché metody pro redukci dat. Shlukování. Mnoţení dat v minoritní třídě. Jednotlivé metody jsou implementovány ve formě pluginů, implementujících jednoduché rozhraní. V současné době je implementováno několik jednoduchých metod pro početní redukci dat. Dvě neadaptivní metody – nazvané „Random data reducer“ a „Leave-out neighbours“. První z metod náhodně vyřazuje instance z trénovací mnoţiny. Druhá najde počet instancí, které jsou blíţe neţ předem zadaná vzdálenost a ponechá jen instance, které mají největší počet sousedů, ostatní zahazuje. Dále dvě adaptivní metody početní redukce dat – „KD-Tree cell replacer“ a „KMeans data replacer“. První metoda nad daty vytvoří KD-strom a instance v kaţdé buňce KD-stromu nahradí jejich centroidem. Druhá metoda „KMeans data replacer“ vyuţívá K-Means algoritmu. V původních datech se najdou pozice předem zadaného počtu centroidů a tyto centroidy jsou pouţity jako nová trénovací mnoţina. 23 Algoritmy početní redukce dat Část III – Implementované algoritmy V této části jsou detailně popsány všechny implementované redukční metody a jejich následná integrace do projektu FAKE GAME. 6. Algoritmy početní redukce dat Početní redukce dat, která slouţí k odstranění některých instancí z trénovací mnoţiny, se skládá ze dvou po sobě jdoucích kroků – editování a kondenzace. Zatímco v kroku editování jsou odstraněny instance degradující klasifikaci, v kroku kondenzace jsou odstraněny instance, které jsou nadbytečné. Ve své práci se zaměřuji hlavně na kondenzační algoritmy, které zajišťují sníţení paměťových poţadavků a čas potřebný na vytvoření modelu či klasifikaci trénovací mnoţiny. Kondenzační algoritmy se dělí na dvě skupiny. Neadaptivní algoritmy, které vybírají podmnoţinu instancí z původní trénovací mnoţiny a adaptivní algoritmy, které generují podmnoţinu nových reprezentantů. V této kapitole popisuji všechny algoritmy, které jsem implementovala do GAME. Jedná se o 4 neadaptivní algoritmy (CNN, RNN, IB3, DROP3) a 4 adaptivní algoritmy (Prototype, Chen, RSP1, RSP3). Dále jsem implementovala vlastní algoritmus, který je neadaptivní a nazvala jsem ji MergeAllInstances. Pro správnou funkčnost některých kondenzačních algoritmů a pro úplnost procesu početní redukce dat jsem implementovala také dva základní editační algoritmy. 6.1 Editační algoritmy Editační algoritmy slouţí k předzpracování trénovací mnoţiny pro následnou kondenzační fázi. Zaměřují se na „vyčištění dat“, kdy odstraňují všechny rušivé instance (instance, které jsou s vysokou pravděpodobností jen šum v záznamu dat) a dále instance velmi blízko rozhodovací hranice, protoţe na této úrovni mohou způsobovat špatnou klasifikaci intancí. Primárním cílem editačních algoritmů je odstranění všech instancí, které by mohly ohrozit klasifikační přesnost. 6.1.1 Editované pravidlo nejbližšího souseda Wilson představil v roce 1972 první algoritmus pro editování, který pojmenoval Editované pravidlo nejbliţšího souseda (Edited Nearest Neighbor Rule, dále jen ENN). Jedná se o dávkový algoritmus, který odstraňuje instance aţ po prozkoumání všech instancí původní trénovací mnoţiny TS. [12] 24 Algoritmy početní redukce dat Wilson vyuţil faktu, ţe klasifikátor k – NN, kde k > 1, podává lepší výsledky neţ klasifikátor 1 – NN, protoţe dokáţe odfiltrovat rušivé instance. Algoritmus ENN vyuţívá klasifikátoru k – NN pro určení nejvíce zastoupené třídy k sousedů v TS mnoţině k dané instanci. Typicky se pouţívá k = 3. Postupně jednotlivé instance z TS mnoţiny klasifikuje k – NN s pouţitím trénovací mnoţiny TS bez testované instance, a pokud jejich třída neodpovídá majoritně zastoupené třídě k sousedů, je instance označena k odstranění. Po klasifikaci všech instancí, jsou instance označené k odstranění odebrány. Podrobněji viz Pseudokód 2. ENN algoritmus odstraňuje z trénovací mnoţiny všechny rušivé instance a instance leţící přímo na rozhodovací hranici. Na obrázcích viz Obrázek 12 a Obrázek 13 můţeme pozorovat zřejmý rozdíl redukce algoritmem ENN s parametrem k = 1 a parametrem k = 3. Označené instance budou odstraněny. Obrázek 12: ENN redukce s k = 1 Obrázek 13: ENN redukce s k = 3 Pseudokód 2: ENN algoritmus Popisy použitých proměnných TS – původní trénovací množina R – výsledná redukovaná množina instancí k – počet hledaných nejbližších sousedů Význam použitých funkcí kNN(instance t, množina X, int k) – nalezne k instanci t k nejbližších sousedů z množiny X. Pokud je většina z k nejbližších sousedů z množiny X ohodnocena stejnou třídou jako instance t vrací TRUE, jinak vrací FALSE. vstup() – vrací vstup definovaný uživatelem //Počáteční inicializace 1. k = vstup() R = Ø //Pro všechny instance t z původní trénovací množiny TS 2. for all t from TS { //dočasně odstraní instanci t z původní trénovací množiny TS TS = TS - t // a nalezne k instanci t k nejbližších sousedů z množiny TS. // pokud je většina z k nejbližších sousedů ohodnocena stejnou třídou // jako instance t if (kNN(t,TS,k) == TRUE) { 25 Algoritmy početní redukce dat // přidá instanci t do finální redukované množiny R = R + t } // instanci t vrátí zpět do původní trénovací množiny TS TS = TS + t //Vrátí výslednou redukovanou množinu 3. return R 6.1.2 Editovací schéma All k – NN V roce 1976 vymyslel I. Tomek rozšíření algoritmu ENN, které nazval Editovací schéma All k – NN. Primárním cílem tohoto algoritmu bylo rozšíření pouţitelnosti ENN algoritmu na libovolnou trénovací mnoţinu TS. Opět vyuţívá dávkové strategie, kdy odstraňuje instance aţ po prozkoumání všech instancí původní TS mnoţiny. [13] Algoritmus opět vyuţívá k – NN klasifikátoru. V tomto algoritmu se nepouţívá jen jeden k – NN klasifikátor, ale jejich skupina s počtem sousedů v rozmezí 1…k. Všechny instance z mnoţiny TS jsou klasifikovány skupinou klasifikátorů bez testované instance. Pokud třída instance neodpovídá v libovolné iteraci i majoritní třídě sousedů, je instance označena k odstranění. Po klasifikaci všech instancí, jsou instance označené k odstranění odebrány. Podrobněji viz Pseudokód 3. All k – NN algoritmus tak odstraňuje podstatně více rušivých instancí neţ ENN algoritmus, ale na druhé straně také více sniţuje klasifikační přesnost. Z obrázků viz Obrázek 14 a Obrázek 15 můţeme sledovat rozdíl mezi algoritmy ENN a All k – NN s nastaveným parametrem k = 3. Instance označené budou z původní trénovací mnoţiny odstraněny. Obrázek 14: ENN redukce s k = 3 Obrázek 15: All k – NN s k = 3 26 Algoritmy početní redukce dat Pseudokód 3: Algoritmus All k – NN Popisy použitých proměnných TS – původní trénovací množina R – výsledná redukovaná množina instancí k – počet hledaných nejbližších sousedů delete – příznak zda je možné instanci přidat do výsledné redukované množiny Význam použitých funkcí kNN(instance t,množina X, int k) – nalezne k instanci t k nejbližších sousedů z množiny X. Pokud je většina z k nejbližších sousedů z množiny X ohodnocena stejnou třídou jako instance t vrací TRUE, jinak vrací FALSE. vstup() – vrací vstup definovaný uživatelem //Počáteční inicializace 1. k = vstup() R = Ø delete = FALSE // Pro všechny instance t z původní trénovací množiny TS 2. for all t from TS { // dočasně odstraní instanci t z původní trénovací množiny TS TS = TS - t // Provede iteraci proměnné k od 1 až do k for all k from 1..k { // a nalezne k nejbližších sousedů k instanci t z množiny TS. // Pokud není většina z k nejbližších sousedů ohodnocena // stejnou třídou jako instance t if (kNN(t, TS, k) == FALSE) { //nastaví příznak, že instance nebude přidána do výsledné // redukované množiny R delete = TRUE } } // Pokud je instance t ohodnocena svými sousedy správně ve všech // iteracích k přidá ji do výsledné redukované množiny R if (delete == FALSE) { R = R + t } // instanci t vrátí zpět do původní trénovací množiny TS TS = TS + t // vynuluje příznak delete = FALSE } 3. //Vrací výslednou redukovanou množinu return R 6.2 Neadaptivní kondenzační algoritmy Hlavním úkolem kondenzačních algoritmů je získání značně redukované mnoţiny, ale bez významného sníţení klasifikační přesnosti. Neadaptivní kondenzační algoritmy tento úkol řeší selekcí některých instancí z původní trénovací mnoţiny. Instance vybírají velmi důmyslně tak, aby instance leţící v oblasti dané třídy byly opravdu klasifikovány touto třídou. Zásadou neadaptivních kondenzačních algoritmů je, ţe nikdy instance nemodifikují. [23][25] 27 Algoritmy početní redukce dat 6.2.1 Kondenzované pravidlo nejbližšího souseda Kondenzované pravidlo nejbliţšího souseda (Condensed Nearest Neighbor Rule, dále jen CNN) je prvním neadaptivním algoritmem pro početní redukci dat. Původně byl zamýšlený pouze pro klasifikátor 1 – NN. Vymyslel jej v roce 1968 P. E. Hart. Je zaloţen na myšlence, ţe čím více jsou instance od rozhodovací hranice vzdálené, tím méně jsou potřebné a ţe pokud je instance svým nejbliţším sousedem špatně ohodnocena, tak s vysokou pravděpodobností leţí poblíţ rozhodovací hranice. CNN je typickým představitelem inkrementálních algoritmů, tudíţ je závislý na uspořádání vstupní trénovací mnoţiny TS. [14] Algoritmus hledá podmnoţinu S trénovací mnoţiny TS tak, aby pro všechny instance TS byl nejbliţší soused v podmnoţině S klasifikován stejnou třídou. Tento způsob je konzistentní (všechny instance v mnoţině TS jsou podmnoţinou S ohodnoceny správně), ovšem nezaručuje minimálnost podmnoţiny S. Záleţí na uspořádání instancí vstupní TS mnoţiny. Při rozdílném uspořádání instancí vstupní TS mnoţiny je sice výsledná podmnoţina S stále konzistentní, ale můţe mít jiný počet instancí. Algoritmus začíná náhodným výběrem jedné instance v TS, kterou přesune do prázdné podmnoţiny S, viz Obrázek 16. Pak kaţdou instanci v TS mnoţině, která je špatně klasifikována podmnoţinou S, přesune do mnoţiny S viz Obrázek 17, čímţ zajistí, ţe bude klasifikována správně. Tento proces opakuje aţ do doby, kdy nejsou ţádné instance v TS špatně klasifikovány podmnoţinou S viz Obrázek 18. Podrobněji viz Pseudokód 4. Obrázek 16: CNN náhodný výběr instance 28 Algoritmy početní redukce dat 1. 3. 2. 4. 5. 6. 7. Obrázek 17: CNN klasifikační krok 1. 2. 3. Obrázek 18: CNN splněna klasifikační podmínka Tento algoritmus je obzvláště citlivý na rušivé instance, protoţe rušivé instance jsou obvykle jiné třídy neţ jejich sousedé a proto jsou uloţeny do výsledné podmnoţiny S. Díky tomu má tento algoritmus dva velké nedostatky. Prvním nedostatkem je, ţe paměťová sloţitost není dostatečně redukována, protoţe je ponechávána většina rušivých instancí a navíc musí být ponechávány nerušivé instance, které jsou poblíţ instancí rušivých. Druhým problémem je nízká přesnost klasifikace způsobená taktéţ rušivými instancemi. Zatímco nerušivé instance jsou redukovány, rušivé instance jsou většinou ponechány. Proto je vhodné vstupní TS nejprve editovat pouţitím některého z editačních algoritmů. Pseudokód 4: Algoritmus CNN Popisy použitých proměnných TS – původní trénovací množina R – výsledná redukovaná množina instancí změna – příznak, zda došlo v předchozím kroku ke změně Význam použitých funkcí 29 Algoritmy početní redukce dat 1NN(instance x,množina X) – klasifikuje instanci x z testovací množiny pomocí klasifikátoru 1-NN s použitím trénovací množiny X. V případě, že je instance x klasifikována správně, vrátí TRUE. Jinak vrátí FALSE. random(množina X)- vrátí náhodně vybranou instanci z množiny X // 1. // 2. // 3. // // 4. Počáteční inicializace R = Ø, změna = FALSE Náhodně vybere instanci x z původní trénovací množiny TS x = Random(TS) a vloží jej do prázdné množiny R R = R + x Pro všechny instance t v trénovací množině TS provede klasifikaci pomocí metody 1 - NN, kde jako trénovací množinu použije množinu R. for all t from TS { // Pokud instance není správně klasifikována, tak jí vloží do množiny R if (1NN(t, R) == 0){ R = R + t // a nastaví příznak, že došlo ke změně změna = TRUE } } // Pokud došlo v předchozím kroku ke změně R množiny znovu opakuje // předchozí krok 5. if (změna == TRUE) { změna = FALSE Pokračuj bodem 4 } // Vrací výslednou redukovanou množinu R 6. return R 6.2.2 Redukované pravidlo nejbližšího souseda Hlavním důvodem proč CNN algoritmus neponechává vţdy minimální počet instancí je, ţe v prvních krocích algoritmu jsou přidány instance, které se v pozdějších krocích, díky přidání dalších instancí, mohou stát redundantní. Řešení tohoto problému představil v roce 1972 G. W. Gates. Algoritmus, který rozšiřuje algoritmus CNN, pojmenoval Redukované pravidlo nejbliţšího souseda (Reduce Nearest Neighbor Rule, dále jen RNN). [15] RNN algoritmus nejprve získá zredukovanou mnoţinu TCNN pouţitím CNN algoritmu a následně tuto mnoţinu dekrementálně redukuje. Díky pouţití inkrementálního CNN algoritmu je ovšem závislý na uspořádání vstupní mnoţiny instancí. Algoritmus v první fázi zredukuje trénovací mnoţinu TS pouţitím CNN algoritmu a získanou zredukovanou mnoţinu TCNN si zkopíruje do finální redukované mnoţiny TRNN. Pak se kaţdou instanci z TRNN mnoţiny pokusí odebrat a pokud jsou všechny instance původní TS mnoţiny 1 – NN klasifikátorem s trénovací mnoţinou TRNN bez dané instance klasifikovány správně, pokračuje zpracováváním další instance z mnoţiny TRNN . V opačném případě ji vrátí zpět do TRNN mnoţiny. Podrobněji viz Pseudokód 5. Na obrázku viz Obrázek 19 a je naznačena původní trénovací mnoţina, která je zredukována nejprve CNN algoritmem viz Obrázek 19 b a následně je zobrazena redukovaná mnoţina aplikováním RNN algoritmu viz Obrázek 19 c. 30 Algoritmy početní redukce dat a b c Obrázek 19: Původní mnoţina, CNN podmnoţina a RNN podmnoţina Zajímavá je jistě otázka, zda získaná redukovaná mnoţina TRNN je minimální podmnoţinou TS mnoţiny. Je zřejmé, ţe TRNN mnoţina je podmnoţinou mnoţiny TCNN . Tudíţ pokud TCNN neobsahuje minimální podmnoţinu TS, nemůţe být obsaţena ani v mnoţině TRNN . To je způsobeno inkrementálností CNN algoritmu, díky níţ je výsledná redukovaná mnoţina závislá na uspořádání vstupní trénovací mnoţiny. Pokud však TCNN obsahuje minimální podmnoţinu TS, RNN algoritmus získá minimální konzistentní podmnoţinu mnoţiny TS. RNN algoritmus má v porovnání s CNN algoritmem vyšší výpočetní sloţitost, ale vţdy nám zajistí získání podmnoţiny mnoţiny TCNN a tak více sniţuje paměťové poţadavky a urychluje klasifikační proces či učící proces. Pseudokód 5: Algoritmus RNN Popisy použitých proměnných T – původní trénovací množina TCNN - zredukovaná původní trénovací množina T použitím CNN algoritmu (Hart) TRNN - výsledná redukovaná množina instancí klasifikace – pokud jsou všechny instance původní trénovací množiny klasifikovány správně, vrací TRUE, jinak vrací FALSE. Význam použitých funkcí 1NN(instance x,množina X) – klasifikuje instanci x z testovací množiny pomocí klasifikátoru 1 - NN s použitím trénovací množiny X. V případě, že je instance x klasifikována správně, vrací TRUE. Jinak vrací FALSE. hart(množina X) – vrací redukovanou množinu X použitím CNN (Hartova) algoritmu // Počáteční inicializace // Zredukuje původní trénovací množinu použitím CNN algoritmu (Hart). 1. TCNN = hart(T) // Zkopíruje zredukovanou množinu TCNN do množiny TRNN . 2. TRNN = TCNN // Pro všechny instance c z množiny TCNN 3. for all c from TCNN { // se pokusí instanci c odebrat. TRNN = TRNN – c 31 Algoritmy početní redukce dat // Nastaví příznak správnosti klasifikace na TRUE. klasifikace = TRUE // Pro všechny instance t z původní trénovací množiny T for all t from T{ // Testuje, zda je instance t klasifikována klasifikátorem // 1 - NN s použitím původní trénovací množiny TRNN (bez prvku c) // správně. Pokud není, nastaví příznak klasifikace na FALSE. if (1NN(t, TRNN ) == FALSE){ klasifikace = FALSE } } // // // if } Pokud nejsou všechny instance z původní trénovací množiny T klasifikovány správně množinou TRNN (bez prvku c), přidá instanci c zpět do množiny TRNN . (klasifikace == FALSE){ TRNN = TRNN + c } 4. // Množina TRNN obsahuje konzistentní podmnožinu množiny TCNN TRNN TCNN // Vrací výslednou redukovanou množinu TRNN return TRNN 6.2.3 Učící algoritmy založené na instancích V roce 1991 prezentoval D. W. Aha sérii učících algoritmů (IB1, IB2, IB3) zaloţených na instancích (Instance – Based learning algorithm, dále jen IBL). Tyto algoritmy byly navrţeny pro značnou redukci počtu trénovacích instancí bez ztráty přesnosti. [16] IB1 (Instance Based learning algorithm 1) je velmi jednoduchý algoritmus podobný 1 - NN klasifikátoru a pouţívaný jako základ pro ostatní IBL algoritmy. IB2 (Instance Based learning algorithm 2) je inkrementální algoritmus. Je velmi podobný CNN algoritmu, vybírá pouze instance, které nejsou správně klasifikovány. Narozdíl od CNN algoritmu provádí pouze jeden průchod přes všechny trénovací instance a tak nezaručuje, ţe získaná redukovaná mnoţina bude konzistentní s původní trénovací mnoţinou. Zanechává instance poblíţ rozhodovací hranice a eliminuje vnitřní instance, které jsou obklopeny instancemi stejné třídy. IB2 algoritmus má stejné nedostatky jako CNN algoritmus. Ukládá redundantní instance a je citlivý na rušivé instance. IB3 (Instance Based learning algorithm 3) je dalším inkrementálním algoritmem, který odstraňuje problém IB2 algoritmu, ukládání rušivých instancí. Zanechává pouze přijatelné špatně klasifikované instance. Vyuţívá strategie ,,počkej a uvidíš” k určení instancí, které jsou důleţité pro klasifikaci a k odstranění instancí, které jsou s vysokou pravděpodobností rušivé. Instance je povaţována za přijatelnou, pokud je její spodní hranice přesnosti statisticky podstatně vyšší (většinou pouţívána 90% úroveň spolehlivosti) neţ horní hranice odhadu početního zastoupení její třídy v původní trénovací mnoţině. Na druhé straně instance je odstraněna pokud je její spodní hranice přesnosti statisticky podstatne niţší (většinou 32 Algoritmy početní redukce dat pouţívána 70% úroveň nespolehlivosti) neţ spodní hranice odhadu početního zastoupení její třídy v původní trénovací mnoţině. Rovnice pro určení horní a dolní hranice pro danou úroveň spolehlivosti vypadá následovně: 𝑧2 𝜉 1−𝜉 𝑧2 𝜉 + 2𝑛 ∓ 𝑧 ( + ) 𝑛 4𝑛2 𝑧2 1+ 𝑛 kde 𝜉 je v případě určení hranic přesnosti instance správnost záznamu a v případě určení hranic odhadu početního zastoupení její třídy odhad zastoupení instancí této třídy v původní trénovací mnoţině. Proměnná z je úroveň spolehlivosti (většinou pro určení hranic přesnosti 0.9 a pro určení hranic odhadu početního zastoupení třídy instance 0.7), n je počet instancí dané třídy, které jiţ byly zpracovány. Podrobněji viz Pseudokód 6. Tímto postupem IB3 algoritmus redukuje více instancí neţ IB2 algoritmus a navíc zachovává vyšší klasifikační přesnost. Nevýhodou IB3 algoritmu je citlivost na počet irelevantních atributů pouţitých k popisu instancí. S narůstajícím počtem atributů rostou jeho paměťové nároky exponenciálně. Proto je vhodné před pouţitím algoritmu IB3 pouţít algoritmy na výběr reprezentativních atributů. Pseudokód 6: Algoritmus IB3 Popisy použitých proměnných TS – původní trénovací množina S – pomocná množina B – výsledná redukovaná množina platných instancí B S MH - horní mez spolehlivosti ML - dolní mez spolehlivosti n[#class(množina TS)] - pole n o velikosti dle počtu tříd z původní trénovací množiny TS, které slouží k čítání zastoupení instancí jednotlivých tříd v množině S p[#class(množina TS)] – pole p o velikosti dle počtu tříd v původní trénovací množině, které slouží k odhadu zastoupení jednotlivých tříd v původní trénovací množině n - postupně inkrementovaný počet instancí z původní trénovací množiny, které již byly zpracovány random - procentuální počet instancí, které je potřeba náhodně vybrat při počáteční inicializaci z původní trénovací množiny. Parametr je v rozmezí 0..1 randomlist - seznam náhodně vybraných instancí z původní trénovací množiny classes – seznam všech tříd které jsou zastoupeny v množině TS Popisy použitých datových struktur V množině S pro každou instanci s: s.a - správnost záznamu (pravděpodobnost správné klasifikace při výběru instance s) s.podobnost - podobnost instance s k testované instanci s.b - platnost záznamu (pokud je instance s přijatelná s.b = 1, jinak s.b = 0) s.u - počet updatů dané instance 33 Algoritmy početní redukce dat Význam použitých funkcí getRandomList(množina X, int p) - vrací seznam instancí, které byly dle zadaného procentuálního počtu p náhodně vybrány z množiny X maxPodobnost(množina B) – vrací instanci z množiny B, která má největší podobnost class(instance x) – vrací třídu instance x #class(množina X) - vrací celkový počet tříd zastoupených v množině X podobnost(instance x, instance y) – vrací záporně ohodnocenou euklidovu vzdálenost mezi instancemi x a y, přes všechny jejich atributy n 2 (− i=1 (x i − yi ) ) random(množina X)- vrací náhodně vybranou instanci z množiny X vstup() – vrací vstup definovaný uživatelem allClasses(množina X) – vrací seznam všech tříd, které jsou v množině X zastoupeny // Počáteční inicializace 1. S = Ø, B = Ø // Načte horní mez spolehlivosti MH a spodní mez spolehlivosti ML MH = vstup() ML = vstup() // Načte procentuální zastoupení množiny TS v množinách B a S random = vstup() // Vytvoří pole n a pole p o velikosti počtu tříd v původní trénovací množině TS n[#class(TS)] p[#class(TS)] classes = allclasses(TS) // Náhodně vybere vzorky z původní trénovací množiny TS 2. randomlist = getrandomlist(TS,random) // Pro všechny náhodně vybrané instance 3. for all s from randomlist { //Vložení náhodně vybraného vzorku s do množiny S S = S + s // Počáteční nastavení hodnot pro instanci s // Správnost instance s.a=1 // Platnost instance s.b=1 // Počet updatů instance s.u=1 // Přidání instance do množiny platných záznamů B = B + s // Procentuální zastoupení jednotlivých tříd prvků z trénovací množiny n[class(s)] = n[class(s)] + 1 // Postupně inkrementovaný počet prvků z původní trénovací množiny n = n + 1 // Odhad pravděpodobnosti zastoupení jednotlivých tříd v množině S dle postupného procházení množiny TS p[class(s)] = n[class(s)] / n } // Pro všechny instance t z původní trénovací množiny TS 4. for all t from TS // Pro všechny instance s z množiny S 4.1 for all s from S{ // vypočte funkci podobnosti s.podobnost = podobnost(s,t) } // Pokud množina platných záznamů B není prázdná, kde B={B|s.b = 1} 4.2 if (B != Ø) // nalezne nejpodobnější instanci ymax k instanci t z množiny B. ymax = maxpodobnost(B) } 34 Algoritmy početní redukce dat // Jinak vybere náhodnou instanci z množiny S. 4.3 else { ymax = random(S) } // Pokud třída(t) = třída(ymax) přeskočí následující krok 4.4 if (class(t) == class(ymax)) { Pokračuj bodem 4.6 } // Jinak přidá vzorek t do množiny S a do množiny B a nastaví // potřebné hodnoty 4.5 else { S = S + t B = B + t t.a = 1 t.b = 1 t.u = 1 } // Nastaví odhad pravděpodobnosti zastoupení jednotlivých tříd a // celkové počty 4.6 for all c from classes { if (c == class(t)) { p[c]=(n[c]+1)/(n+1) } else { p[c]=n[c]/(n+1) } n(class(t)) = n(class(t)) + 1 n = n + 1 } // Pro všechny instance y z množiny S, které jsou stejně // podobné k instanci t nebo podobnější než ymax proveď 4.7 for all y from S { if (y.podobnost >= ymax.podobnost){ // Pokud třída(y)=třída(t) if (class(y) == class(t)){ // aktualizuje hodnotu správnosti záznamu y.a = (y.a*y.u+1)/(y.u+1) //zvýšení } // Jinak když třída(y) ≠ třída(x) else { //aktualizuje hodnotu správnosti záznamu y.a = (y.a*y.u)/(y.u+1) //snížení } // Aktualizuje počet updatů dané instance y.u = y.u+1 // Statisticky určí platnost záznamu dané instance p = p[class(y)] a = y.a z = MH ξ = a n = y.u [LMHa,HMHa]= ξ+ ξ 1-ξ z2 z2 ∓ z ( + 2 2n n 4n z2 1+ n ) z = MH ξ = p n = n[class(y)] [LMLp,HMLp]= ξ+ ξ 1-ξ z2 z2 ∓ z ( + 2 2n n 4n z2 1+ ) n 35 Algoritmy početní redukce dat // Pokud LMHa > HMHp y.b=1 instance y je platná pro další zpracování if (LMHa > HMHp) { y.b = 1 B = B + y } //Jinak y.b = 0 instance y není platná else { y.b = 0 B = B – y } // Statisticky určí, které instance je třeba odstranit z = ML ξ = a n = y.u [LMLa,HMLa]= ξ+ ξ 1-ξ z2 z2 ∓ z ( + 2 ) 2n n 4n z2 1+ n z = ML ξ = p n = n[class(y)] LMLp,HMLp]= ξ+ ξ 1-ξ z2 z2 ∓ z ( + 2 2n n 4n z2 1+ n ) // Odstraní instance nesplňující spodní mez spolehlivosti if (HMLa < LMLp){ S = S - y B = B - y } } // Vrací redukovanou množinu B (všechny platné instance ) 5. return B 6.2.4 Dekrementální redukční optimalizační procedura V letech 1997 a 1998 představili D. Wilson a T. Martinez rodinu algoritmů (DROP1, DROP2, DROP3) nazvaných Dekrementální redukční optimalizační procedura (Decremental Reduction Optimization Procedure, dále jen DROP), které byly dříve představeny pod jmény RT1 – RT3. [18] Algoritmy vyuţívají pro kaţdou instanci dva pomocné seznamy. Seznam k nejbliţších sousedních instancí a seznam asociovaných instancí (instance, které danou instanci mají ve svém seznamu k nejbliţších sousedních instancí). Parametr k se většinou volí nízké liché celé číslo jako 1, 3 nebo 5. Jiţ z názvu je zřejmé, ţe se jedná o dekrementální algoritmy. Začínají s úplnou trénovací mnoţinou a postupně z ní odebírají instance. Instance je odstraněna, pokud je více či stejně asociovaných instancí klasifikováno správně bez této instance. DROP1 je nejjednodušším členem rodiny algoritmů, který odstraňuje instanci v případě splnění zmiňovaného pravidla. A po kaţdém odstranění aktualizuje seznamy asociovaných prvků a nejbliţších sousedů. Tento algoritmus odstraňuje rušivé instance, protoţe rušivé instance mají většinou asociované instance jiné třídy a tak jsou s vysokou pravděpodobností bez této instance klasifikovány správně. Ovšem s odstraňováním rušivých instancí mohou nastat komplikace. Rušivé instance mají téměř vţdy asociované instance rozdílné třídy a jsou v trénovací mnoţině minoritně zastoupeny. Avšak pokud jsou asociované instance rušivých 36 Algoritmy početní redukce dat instancí algoritmem odstraňovány, zastoupení rušivých instancí v trénovací mnoţině se můţe rapidně zvyšovat. Pokud by většina sousedů rušivé instance byla odstraněna dříve neţ samotná rušivá instance, je moţné, ţe instance nebude odstraněna, protoţe do jejího ohodnocení budou zasahovat instance velmi vzdálené, které mohou být stejné třídy jako rušivá instance. DROP2 algoritmus řeší problém algoritmu DROP1 s odstraňováním rušivých instancí. Pouţívá stejný postup jako algoritmus DROP1, ale instanci, která je určena k odstranění neodstraňuje sousedním instancím z jejich seznamu asociovaných instancí. Kaţdá instance tak můţe mít v seznamu asociovaných instancí instance, které jsou jiţ odstraněny, ale které mohou pomoci ke správnému odstranění rušivých instancí. Další změnou oproti DROP1 algoritmu je počáteční uspořádání instancí podle vzdálenosti k nejbliţšímu protivníkovi (nejbliţší soused k instanci, který je ohodnocen jinou třídy neţ instance). Kdy jsou instance více vzdálené od rozhodovací hranice odstraňovány přednostně, coţ zvyšuje šance na ponechání intancí poblíţ rozhodovací hranice. Problémem řazení instancí v algoritmu DROP2 je, ţe rušivé instance mohou být taktéţ poblíţ rozhodovací hranice. To můţe drasticky změnit uspořádání redukovaných instancí. Poté mohou být poblíţ rozhodovací hranice odstraněny nesprávné instance. DROP3 je hybridní algoritmus, který kombinuje editační algoritmus ENN s algoritmem DROP2. Nejprve ENN algoritmus odstraní rušivé instance a instance poblíţ rozhodovací hranice čímţ jemně „vyhladí“ rozhodovací hranici. Tím je vyřešen problém algoritmu DROP2, kdy mohou rušivé instance blízko rozhodovací hranice značně ovlivnit prvotní uspořádání instancí pro předpokládanou redukci. Pak opět instance sestupně seřadí podle vzdálenosti k nejbliţší instanci jiné třídy a aplikuje stejný postup jako algoritmus DROP2. Podrobněji viz Pseudokód 7. Pseudokód 7: Algoritmus DROP3 Popisy použitých proměnných TS – původní trénovací množina TW – odfiltrovaná množina (bez ustřelených hodnot) TS použitím Wilsonova algoritmu TWS – seřazená množina TW vzestupně podle vzdálenosti k nejbližšímu protivníkovi with - počet asociovaných instancí k instanci i, správně ohodnocených s instancí i, k+1 nejbližšími sousedy without - počet asociovaných instancí k instanci i, správně ohodnocených bez instance i, k nejbližšími sousedy novy - pomocná instance Popisy použitých datových struktur V množině TS pro každou instanci t: t.seznamN[] - seznam sousedních prvků (k+1 nejbližších instancí) t.seznamA[] - seznam asociovaných prvků (prvků, které mají instanci t v seznamu sousedních prvků (t ∈ a.seznamN) t.de - Eulerova vzdálenost k nejbližšímu protivníkovi (nejbližší instanci k instanci t, která je jiné třídy než instance t) 37 Algoritmy početní redukce dat Význam použitých funkcí wilson(množina M) – odfiltruje ustřelené hodnoty z množiny M použitím Wilsonova algoritmu najdiSousedy(instance x, množina X, int počet) – nalezne dle zadaného počtu seznam nejbližších sousedů k instanci x z množiny X vstup() – vrací vstup definovaný uživatelem najdiProtivnika(instance x, množina X) – nalezne nejbližšího souseda k instanci x v množině X, který je jiné třídy než instance x vzdalenost(instance x, instance y) – vrací euklidovskou vzdálenost instancí n 2 x, y ( i=1(x i − yi ) ) sort(množina X) – vrací seřazenou množinu X vzestupně podle de (vzdálenost k nejbližšímu protivníkovi) dalsiN(instance x, množina X, seznam N) – nalezne další nejbližší instanci k instanci x z množiny X, která ještě není v seznamu N klasifikace(instance t, seznamN) – pokud většina instancí ze seznamu seznamN má stejnou třídu jako instance t vrací TRUE. Jinak vrací FALSE. // 1. // 2. // 3. // 4. // 5. Načte počet nejbližších sousedů k k = vstup() Odfiltruje ustřelené hodnoty použitím Wilsonova algoritmu v TS množině TW = wilson(TS) Pro všechny instance t v množině TW for all t from TW { // najde k instanci t k+1 nejbližších sousedů z množiny TW a // uloží je do seznamuN t.seznamN = najdiSousedy(t, TW, k+1) // Pro všechny prvky ze seznamuS for all n from t.seznamN { // nastaví příznak, že t je jeho asociovaný prvek n.seznamA = n.seznamA + t } // Nalezne nejbližšího soupeře (instance s jinou třídou) z množiny // TW a urči k němu vzdálenost t.de = vzdalenost(t, najdiProtivnika(t,TW)) } Podle vzdálenosti k soupeřovi seřadí instance v množině TW sestupně TWS = sort(TW) Pro každou instanci t v množině TWS for all t from TWS { // inicializuje proměnné with a without with = 0 without = 0 // Pro všechny asociované instance a k instanci t for all a from t.seznamA { // určí počet asociovaných instancí k instanci t, které jsou // pomocí k+1NN (zahrnují t) klasifikovány správně if (klasifikace(t, a.seznamN) == TRUE) { with = with+1 } // určí počet asociovaných instancí k instanci t, které jsou // pomocí kNN klasifikovány správně, když neobsahují mezi // sousedy instanci t if (klasifikace(t, a.seznamN - t) == TRUE) { without = without+1 } } // Pokud je více či stejně asociovaných instancí bez instance t // klasifikováno správně if (without >= with) { // odstraní instanci t z množiny TWS TWS = TWS - t // Pro všechny asociované instance a k instanci t ze seznamuA 38 Algoritmy početní redukce dat for all a from t.seznamA { // odstraní instanci t ze seznamu nejbližších sousedů a.seznamN = a.seznamN - t // a nalezne nového nejbližšího souseda k instanci a z množiny TWS novy = dalsiN(a, TWS, a.seznamN) // přidá jej do seznamuN a.seznamN = a.seznamN + nový // Novému nalezenému sousedovi nastaví příznak, že je jeho asoc. // prvek novy.seznamA = seznamA + a } // Pro všechny sousední instance n k instanci t } } // Vrací redukovanou množinu TWS 6. return TWS 6.3 Adaptivní kondenzační algoritmy V předchozí kapitole jsem přestavila všechny implementované neadaptivní kondenzační algoritmy. Druhá skupina kondenzačních algoritmů se nazývá adaptivní. Jedná se o algoritmy, které vytvářejí redukovanou mnoţinu generováním nových prototypů, které nahrazují původní instance. Největší výhoda této techniky je moţnost umísťovat generované prototypy na pozice, kde jsou nejvíce potřebné. 6.3.1 Prototypy V roce 1974 představil C. L. Chang jeden z prvních adaptivních kondenzačních algoritmů pro početní redukci dat, který nazval Prototypy (Prototypes). Jedná se o dekrementální algoritmus, který se snaţí spojovat všechny dvojice nejbliţších instancí stejné třídy do jednoho prototypu, který je umístěn mezi nimi. Instance jsou spojeny, pokud jejich spojení nesniţuje klasifikaci původní trénovací mnoţiny. [19] Algoritmus začíná s úplnou trénovací mnoţinou viz Obrázek 20 b, kde všechny instance nazývá prototypy. Na obrázku viz Obrázek 20 a je znázorněna původní trénovací mnoţina TS, která se v dalších krocích pouţívá jako testovací mnoţina. Na počátku tedy 1-NN klasifikátor klasifikuje správně všechny instance trénovací mnoţiny. Dále algoritmus vyhledá prototypy, které jsou nejbliţší a navíc mají stejnou třídy, coţ jsou na viz Obrázek 20 b prototypy A a B a pokusí se je spojit. (vytvoří nový prototyp, který vznikne zprůměrováním všech atributů obou prototypů). Vznikne tak prototyp H viz Obrázek 20 c. I s novým prototypem H je TS mnoţina klasifikována správně. Podobně se dále spojí prototypy H a C a vznikne nový prototyp I viz Obrázek 20 e. Spojí se prototypy F a G a vznikne prototyp J viz Obrázek 20 e. A finálně se spojí prototypy D a E a vznikne nový prototyp K viz Obrázek 20 f. Avšak kdybychom pokračovali spojením prototypů I a J, některé instance z TS mnoţiny by byly klasifikovány špatně. Proto proces spojování končí a na obrázku f je výsledná redukovaná mnoţina. Podrobněji viz Pseudokód 8. 39 Algoritmy početní redukce dat a) A B C D E F G C D E F G I D E F G I D E b) H c) d) J e) I K J f) Obrázek 20: Algoritmus Prototypy Tato metoda dosahuje dobrých výsledků, i kdyţ je velmi citlivá na jeden či více irelevantních atributů pouţitých k popisu instancí. Proto je vhodné pouţívat algoritmy pro redukci irelevantních atributů. Dále je algoritmus výpočetně hodně náročný, protoţe je v kaţdé iteraci potřeba vypočítat dvě sousední nejbliţší instance. Bez vhodné optimalizace je pro reálná data s počtem instancí vyšším neţ 10000 nepouţitelný. Pseudokód 8: Algoritmus Prototypy Popisy použitý proměnných TS – původní trénovací množina A – množina do které se přesunují „redukované“ body z množiny B, na konci obsahuje finální redukovanou množinu prvků B – na začátku úplná trénovací množina, v dalších cyklech kopie A množiny C – seznam všech tříd, které mohou nabývat instance z množiny TS MERGE - počet spojených instancí p* v jednom cyklu p, q – pomocné testované instance Popisy použitých datových struktur V množině T pro každou instanci t: t.Nt nejbližší soused z množin A a B t.bt vzdálenost instance t v TS k nejbližší instanci z množin A a B, která má jinou třídu než instance t t.wt vzdálenost instance t v TS k nejbližší instanci z množin A a B, která má stejnou třídu jako instance t t.wt' dočasná zkušební vzdálenost wt t.bt' dočasná zkušební vzdálenost bt V množině A pro každou instanci a: a.Na nejbližší soused k instance a z množiny B a.Dab Euklidova vzdálenost instance a k jejímu nejbližšímu sousedovi z množiny B a.Na 40 Algoritmy početní redukce dat Význam použitých funkcí najdiSouseda(instance x, množina X) – nalezne nejbližšího souseda k instanci x z množiny X najdiSouseda(instance x,množina X,třída c) – nalezne nejbližšího souseda k instanci x, z množiny X, který je třídy c class(bod a) – vrací třídu bodu a random(množina X)- vrací náhodně vybranou instanci z množiny X allClasses(množina X) – vrací seznam všech tříd, které jsou v množině X zastoupeny najdiProtivnika(instance x, množina X) – nalezne nejbližšího souseda k instanci x v množině X, který je jiné třídy než instance x minDab(množina X) – nalezne v množině X instanci s nejnižší vzdáleností k nejbližšímu soused z množiny B x.Dab merge(x, y) - vrací novou instanci, kde pro všechny atributy instance x a instance y vypočítá průměrnou hodnotu. Třída instance je rovna třídě instancí class(x) = class(y) vzdalenost(instance x, instance y) – vrací euklidovskou vzdálenost instancí n 2 x, y ( i=1(x i − yi ) ) //Prvotní inicializace 1. A = Ø B = Ø C = allClasses(TS) // Pro všechny body t v původní trénovací množině TS 2. for all t from TS { // nastaví jako nejbližšího souseda Nt sebe samého t.Nt = t // nastaví vzdálenost wt k nejbližšímu sousedovi Nt na 0 t.wt = 0 // nalezne nejbližšího soupeře (prvek s jinou třídou) z množiny TS // a určí k němu vzdálenost t.bt = vzdalenost(t, najdiProtivnika(t,TS)) } // Zkopíruje instance původní trénovací množiny TS do množiny B, T->B 3. B = T // Náhodně vybere instanci b z množiny B 4. b = random(B) // Přesune instanci b z množiny B do množiny A 5. A = A + b B = B - b // Inicializuje čítač spojených instancí 6. MERGE = 0 // Pokud je množina B prázdná 7. if (B == Ø) //a pokud je počet spojených instancí roven 0 if (MERGE == 0) Pokračuj bodem 12 // došlo-li alespoň k jednomu spojení instancí else { // Přesune instance z množiny A do množiny B A->B B = A A = Ø Pokračuj bodem 4 } 8. //Pro všechny instance a z množiny A for all a from A { // nalezne nejbližšího souseda Na z množiny B a.Na = najdiSouseda(a,B) // uloží si vzdálenost Dab k nejbližšímu sousedu Na a.Dab = vzdalenost(a, Na) } 41 Algoritmy početní redukce dat // Nalezne v množině A instanci p s nejmenší Dab 9. p = minDab(A) // Uloží si nejbližšího souseda Na k instanci p z množiny B do bodu q 10. q = p.Na // Pokud jsou instance p a q stejné třídy 11. if (class(p) == class(q)) { //spojí tyto dvě instance – aritmetický průměr všech atributů //a vytvoří novou instanci p* p* = merge(p,q) //třída instance p* je stejná jako třída prvků p a q class(*p) = class(p) = class(q) //Pro všechny instance t z původní trénovací množiny TS for all t from TS { //nastaví dočasné zkušební vzdálenosti wt' a bt' t.wt' = wt t.bt' = bt //pokud má instance t stejnou třídu jako nový vytvořený p* if (class(t) = class(p*)) { // a pokud ani p ani q nejsou jeho nejbližším sousedem Nt if (t.Nt != p and t.Nt != q){ //ověří zda u instance t nedojde ke změně wt if (vzdalenost(t,p*) < t.wt){ t.wt' = vzdalenost(t, p*) } } // pokud p nebo q jsou nejbližším sousedem k instanci t else { // určí novou wt', najde nejbližšího souseda se //stejnou třídou z množin A a B, vyjma instancí p a q, //kdy do hledání zahrne i instanci p* t.wt'=vzdalenost(najdiSouseda(t,A-p+B-q+p*, class(p*))) } } // pokud má instance t jinou třídu než vytvořená instance p* else { //a pokud ani p ani q nejsou nejbližším sousedem Nt if (t.Nt != p and t.Nt != q){ //ověří zda u instance t nedojde ke změně bt if (vzdalenost(t, p*) < t.bt) { t.bt' = vzdalenost(t, p*) } } //pokud p nebo q jsou nejbližším sousedem k bodu t else { // určí novou bt', najde nejbližšího souseda s rozdílnou // třídou z množin A a B, vyjma instancí p a q, a zahrň do // hledání i instanci p* t.bt' = t.bt' = vzdalenost(t, najdiProtivnika(t, A-p+B-q+p*)) } // Ověří, zda nám spojená instance neohrozí klasifikaci } if (t.wt < t.bt and t.wt' >= t.bt') { // přesune instanci q z množiny B do množiny A A = A + q B = B – q Pokračuj bodem 7 } } // Instance p a q je možné spojit, novou instanci p* přidá do množiny A // a odstraní prvky p i q A = A - p + p* B = B – q 42 Algoritmy početní redukce dat // zvýší čítač spojených prvků MERGE = MERGE + 1 // Pro všechny instance t z původní trénovací množiny TS for all t from TS { // nastaví nové vzdálenosti a nového nebližšího souseda t.wt = t.wt' t.bt = t.bt' t.Nt = najdiSouseda(t,A+B) } Pokračuj bodem 7 } // Pokud dvě nejbližší instance nejsou stejné třídy else { // Přesune prvek q z množiny B do množiny A A = A + q B = B - q Pokračuj bodem 7 } // Vrací výslednou redukovanou množinu R 12. return A 6.3.2 Chenův algoritmus Všechny zmiňované algoritmy pro početní redukci dat neumoţňovaly kontrolu velikosti výsledné redukované mnoţiny. Velikost výsledné redukované mnoţiny můţe být zajímavá pro situace, kdy hlavním cílem není pouze redukce výpočetní sloţitosti, ale také vysoká rychlost klasifikátoru. V roce 1996 představili C. H. Chen a A. Józwik adaptivní kondenzační algoritmus nazvaný Chenův algoritmus, který umoţňuje nastavení poţadované velikosti výsledné redukované mnoţiny. [20] V tomto algoritmu Chen představuje myšlenku průměru trénovací mnoţiny. Průměr trénovací mnoţiny TS je vzdálenost mezi dvěma nejvzdálenějšími instancemi. Základní strategií je postupné rozdělování původní TS mnoţiny do podmnoţin, kdy se k rozdělení vybírá podmnoţina s největším průměrem. Tento postup se opakuje, dokud počet podmnoţin není roven poţadované velikosti redukované mnoţiny. Poté je kaţdá výsledná podmnoţina nahrazena novým prototypem. Nový reprezentant je umístěn jako centroid všech instancí v dané podmnoţině a je klasifikován třídou, která je v podmnoţině nejvíce zastoupena. Podrobněji viz Pseudokód 9. Rozdělování podmnoţiny s největším průměrem je postaveno na myšlence, ţe podmnoţina s největším průměrem pravděpodobně obsahuje nejvíce instancí a tudíţ můţeme dosáhnout největší redukce. 43 Algoritmy početní redukce dat 1. C[1] C[2] a) C[3] 2. C[1] C[2] b) C[3] C[1] 3. C[4] C[2] c) C[3] C[5] C[3] C[5] 4. C[1] C[4] C[2] d) C[1] C[6] 5. C[4] C[2] e) Chen RSP1 RSP3 Obrázek 21: Chenův algoritmus, RSP1 algoritmus a RSP3 algoritmus Na obrázku viz Obrázek 21 je znázorněn základní princip Chenova algoritmu. Ukázka je zaloţena na trénovací mnoţině s devíti instancemi rozdělenými do dvou tříd v jednorozměrném prostoru. Budeme poţadovat redukovanou mnoţinu o velikosti 6 instancí. V prvním kroku je potřeba vyhledat dvě nejvzdálenější instance (na obrázku jsou zvýrazněny). Dále je potřeba mnoţinu rozdělit dle pravidel: D1 = { p ∈Є D, d(p, p1) ≤ d(p, p2) } D2 = { p ∈ D, d(p, p2) < d(p, p1) } 44 Algoritmy početní redukce dat Hranice rozdělení je naznačena čárkovanou čarou označenou číslem 1. V dalším kroku se v obou získaných podmnoţinách opět určuje průměr a podmnoţina s větším průměrem se dále rozděluje. Hranice rozdělení je opět vyznačena čárkovanou čarou, ale označena 2. Takto se postupuje dále, dokud počet podmnoţin není roven 6. V posledním kroku je ze všech instancí jednotlivých podmnoţin vypočítán centroid klasifikovaný nejpočetněji zastoupenou třídou v dané podmnoţině. Hlavní výhoda Chenova algoritmu oproti ostatním algoritmům je zřejmá. Díky moţnému nastavení velikosti redukované mnoţiny umoţňuje získat adekvátní vyváţení mezi výpočetními potřebami a poţadovanou klasifikací. Problémem Chenova algoritmu je citlivost na nevyváţená data, kde instance jedné třídy jsou méně zastoupeny v TS mnoţině. V této situaci mohou být instance minoritní třídy při redukci odstraněny díky způsobu určování nových reprezentantů. Pseudokód 9: Chenův algoritmus Popisy použitých proměnných TS – původní trénovací množina R – výsledná redukovaná množina D, D1, D2 – pomocné množiny instancí I1, I2, I - pomocné množiny množin nd – požadovaný počet instancí z původní trénovací množiny nc – aktuální počet podmnožin trénovací množiny C[] – pole podmnožin trénovací množiny i – číslo podmnožiny, kterou rozdělujeme p1,p2 – nejvzdálenější body v dané množině instance - pomocná instance Popisy použitých funkcí vstup() – vrací vstup definovaný uživatelem nejvzdalenejsiBody(množina X) – v množině X nalezne 2 nejvzdálenější instance p1, p2 viceTrid(množina X) – pokud nejsou v množině X instance pouze jediné třídy vrací TRUE, jinak vrací FALSE nejvetsiPrumer(množina[] X, množina I) – ze všech množin v poli množin X, které jsou také v množině množin I vybere množinu, která má největší vzdálenost mezi 2 nejvzdálenějšími instancemi a vrací index na tuto množinu v poli množin X centroid(množina X) – vytvoří novou instanci, kde pro všechny instance množiny X a všechny jejich atributy vypočítá průměrnou hodnotu. Třída instance je rovna třídě, která je v množině X nejvíce zastoupená a v případě rovnosti se rozhodne náhodně. vzdalenost(instance x, instance y) – vrací euklidovskou vzdálenost instancí n 2 x, y ( i=1(x i − yi ) ) //FIX ME vzdalenost() i se vzorcem // Prvotní inicializace // Načte požadovanou velikost výsledné redukované množiny 1. nd = vstup() // Nastaví aktuální počet podmnožin trénovací množiny, které zastupují // výsledné instance nc = 1 // Nastaví číslo podmnožiny, kterou budeme rozdělovat i = 1 // Nastaví pomocné množiny D1 = Ø 45 Algoritmy početní redukce dat 2. // 3. // // // // // // // 4. // 5. // // 6. // // 7. // // 8. // // // // 9. D2 = Ø I1 = Ø I2 = Ø // Zkopíruje kompletní trénovací množinu do pole podmnožin trénovací // množiny C[i] = TS // Zkopíruje kompletní trénovací množinu do pomocné množiny D D = TS Nalezne dvě nejvzdálenější instance p1 a p2 v množině D [p1,p2] = nejvzdalenejsiBody(D) Rozdělí množinu D na dvě podmnožiny D1 a D2 dle pravidel: D1 = {pЄD, d(p,p1) <= d(p,p2)} D2 = {pЄD, d(p,p2) < d(p,p1)} kdy v podmnožině D1 jsou všechny instance p z množiny D, které jsou blíže k instanci p1 než k instanci p2 nebo mají stejnou vzdálenost k instanci p1 jako mají k instanci p2. V podmnožině D2 jsou všechny ostatní instance for all p from D { if (vzdalenost(p, p1) <= vzdalenost(p,p2)) { D1 = D1 + p } else { D2 = D2 + p } } Inkrementuje celkový počet podmnožin trénovací množiny nc = nc + 1 Rozdělení podmnožiny D Přepíše původní podmnožinu D podmnožinou D1 C[i] = D1 // Vytvoří v poli podmnožin novou podmnožinu a uloží do ní podmnožinu D2 C[nc] = D2 Do množiny I1 uloží všechny podmnožiny C z pole C[x]), které obsahují instance alespoň dvou různých tříd for all C from C[] { if (vicetrid(C) == TRUE) { I1 = I1 + C } // Množina I2 obsahuje všechny ostatní podmnožiny z pole C[x] else { I2 = I2 + C } Pokud množina I1 podmnožin C není prázdná pokračuje v dalších krocích právě s ní if (I1 != Ø) { I = I1 } // Pokud množina I1 podmnožin C je prázdná pokračuje v dalších krocích s //množinou I2 podmnožin C else { I = I2 } Najdi takové j, že platí vzdalenost(Q1(j), Q2(j)) = maxvzdalenost(Q1(i), Q2(i)) pro i Є I Jedná se o nalezení indexu j podmnožiny C[j], která má největší průměr ze všech množin, které se nachází v množině množin I j = nejvetsiPrumer(C[],I) // Do množiny D se kterou bude případně dále pokračovat, uloží nalezenou // podmnožinu s největším průměrem D = C[j] // V množině D nalezne dvě nejvzdálenější instance pro případné další //zpracovávání [p1,p2] = nejvzdalenejsiBody(D) 46 Algoritmy početní redukce dat // Pro možnost přepsání nalezené podmnožiny C(j) v případně dalších // krocích i = j // Vynuluje pomocné množiny I1 = Ø I2 = Ø D1 = Ø D2 = Ø // Proces opakuje, dokud není počet získaných podmnožin roven zadanému // počtu instancí nd 10. if (nc < nd) { Pokračuj bodem 4 } else { Pokračuj bodem 11 } //Pro všechny získané podmnmožiny C z pole podmnožin C[x] 11. for all C from C[] { //vypočítá novou instanci - centroid ze všech instancí v podmnožině C instance = centroid(C) //a tuto novou instanci přidá do výsledné redukované množiny R R = R + instance } 12. // Vrací výslednou redukovanou množinu R return R 6.3.3 Redukce dělením prostoru V roce 2004 představil J. S. Sánchez rodinu algoritmů nazvaných Redukce dělením prostoru (Reduction by Space Partition), které vychází z Chenova algoritmu. Pouţívají také průměr trénovací mnoţiny TS a odstraňují hlavní nedostatek Chenova algoritmu, citlivost na nevyváţená data. [21] RSP1 je prvním algoritmem představený Sánchezem a soustředí se hlavně na vylepšení citlivosti na nevyváţená data Chenova algoritmu. Počáteční kroky jsou stejné jako u Chenova algoritmu, mění aţ poslední krok nahrazování získaných podmnoţin novým prototypem. Rozděluje tedy původní trénovací mnoţinu na podmnoţiny, dokud není počet podmnoţin roven poţadovanému počtu instancí v redukované mnoţině. Rozděluje vţdy podmnoţinu, která má největší průměr. Ve finálním kroku ovšem nenahrazuje celou podmnoţinu jedním novým prototypem, ale tolika prototypy, kolik je v podmnoţině zastoupeno tříd. Pro všechny instance jedné třídy v podmnoţině vypočítá centroid zvlášť. Tímto způsobem získá c nových prototypů pro kaţdou podmnoţinu, kde c je počet různých tříd v podmnoţině. Na obrázku viz Obrázek 21 je názorně zobrazen rozdíl v posledním kroku Chenova algoritmu a RSP1 algoritmu. Podrobněji viz Pseudokód 10. Je zřejmé, ţe u této redukční techniky není moţné přesně určit velikost redukované mnoţiny. Na druhé straně jsme schopni určit interval, ve kterém se můţe velikost redukované mnoţiny S pohybovat: b ≤ S ≤ b*m 47 Algoritmy početní redukce dat Kde b je zadaný počet potřebné velikosti redukované mnoţiny a m je počet tříd v TS mnoţině. Je důleţité poznamenat, ţe vytvořením centroidu pro kaţdou třídu zvlášť není rozhodovací hranice zachovávána tak dobře jako u Chenova algoritmu. Na druhé straně tato heuristika zaručuje, ţe ve výsledné redukované mnoţině budou zastoupeny všechny třídy. Druhý algoritmus představený Sánchezem je algoritmus RSP2. Zatímco předchozí algoritmus rozděloval podmnoţinu s největším průměrem, kde předpokládal, ţe dosáhne největší redukce, RSP2 algoritmus rozděluje podmnoţinu s největším stupněm překrývání. Vychází z teorie, ţe instance stejné třídy by měly být co nejblíţe a instance ostatních tříd by měly být od nich co nejvíce vzdáleny. Proto je vhodnější rozdělit podmnoţinu s nejvyšším stupněm překrývání kvůli instancím rozdílných tříd. Stupeň překrývání je poměr průměrné vzdálenosti mezi instancemi patřících do různých tříd a průměrem vzdálenosti mezi instancemi, které jsou stejné třídy. Stejně jako algoritmus RSP1 pro všechny instance jedné třídy v podmnoţině vypočítá centroid zvlášť. Třetím algoritmem je RSP3. Algoritmus RSP3 rozděluje TS mnoţinu aţ do doby, dokud nejsou všechny podmnoţiny homogenní. Pak opět pro jednotlivé podmnoţiny vypočítá ze všech instancí centroid. homogenní podmnoţina, je podmnoţina, kde jsou všechny instance ohodnoceny stejnou třídou. Snaţí se tak získat podmnoţiny, které odpovídají shlukům instancí stejné třídy. V tomto algoritmu tedy není moţné určovat finální velikost redukované mnoţiny. Na obrázku viz Obrázek 21 můţeme vidět rozdělení TS mnoţiny na homogenní podmnoţiny. Podrobněji viz Pseudokód 11. RSP3 můţe vyuţívat jak rozdělovací kritérium dle největšího průměru, tak rozdělení podle nejvyššího stupně překrývání. Způsob rozdělování není důleţitý, neboť všechny heterogenní podmnoţiny jsou ve finále rozděleny. Počet nových prototypů generovaných touto metodou bude zřejmě podstatně vyšší, neţ u předchozích dvou metod. Obzvláště, pokud jsou v původní TS mnoţině rušivé instance. Proto je dobré nejprve na vstupní TS mnoţinu aplikovat některý z editačních algoritmů. Pseudokód 10: Algoritmus RSP1 Popisy použitých proměnných TS – původní trénovací množina R – výsledná redukovaná množina D, D1, D2 – pomocné množiny instancí I1, I2, I - pomocné množiny množin nd – požadovaný počet instancí z původní trénovací množiny nc – aktuální počet podmnožin trénovací množiny C[] – pole podmnožin trénovací množiny i – číslo podmnožiny, kterou rozdělujeme p1,p2 – nejvzdálenější instance v dané množině instance - pomocná instance Popisy použitých funkcí vstup() – vrací vstup definovaný uživatelem 48 Algoritmy početní redukce dat nejvzdalenejsiInst(množina X) – v množině X nalezne 2 nejvzdálenější instance p1, p2 viceTrid(množina X) – pokud nejsou v množině X instance pouze jediné třídy vrací TRUE, jinak vrací FALSE nejvetsiPrumer(množina[] X, množina I) – ze všech množin v poli množin X, které jsou také v množině množin I vybere množinu, která má největší vzdálenost mezi 2 nejvzdálenějšími instancemi a vrací index na tuto množinu v poli množin X vzdalenost(instance x, instance y) – vrací euklidovskou vzdálenost instancí n 2 x, y ( i=1(x i − yi ) ) centroidProVsechnyTridy(C) - vrací pole nově vytvořených instancí. V podmnožině C pro všechny třídy v ní zastoupené vypočítá průměrnou hodnotu pro všechy prvky této třídy. // Prvotní inicializace // Načte požadovanou velikost výsledné redukované množiny 1. nd = vstup() // Nastaví aktuální počet podmnožin trénovací množiny, které zastupují výsledné instance nc = 1 // Nastaví číslo podmnožiny, kterou budeme rozdělovat i = 1 // Nastaví pomocné množiny D1 = Ø D2 = Ø I1 = Ø I2 = Ø // Zkopíruje kompletní trénovací množinu do pole podmnožin trénovací množiny 2. C[i] = TS // Zkopíruje kompletní trénovací množinu do pomocné množiny D D = TS // Nalezne dvě nejvzdálenější instance p1 a p2 v množině D 3. [p1,p2] = nejvzdalenejsiInst(D) // Rozdělí množinu D na dvě podmnožiny D1 a D2 dle pravidel: // D1 = {pЄD, d(p,p1) <= d(p,p2)} // D2 = {pЄD, d(p,p2) < d(p,p1)} // kdy v podmnožině D1 jsou všechny instance p z množiny D, které jsou blíže k instanci p1 než k instanci p2 nebo mají stejnou // vzdálenost k instanci p1 jako mají k instanci p2. V podmnožině D2 jsou všechny ostatní instance 4. for all p from D { if (vzdalenost(p, p1) <= vzdalenost(p, p2)) { D1 = D1 + p } else { D2 = D2 + p } } // Inkrementuje celkový počet podmnožin trénovací množiny 5. nc = nc + 1 // Rozdělení podmnožiny D // Přepíše původní podmnožinu D podmnožinou D1 6. C[i] = D1 // Vytvoří v poli podmnožin novou podmnožinu a uloží do ní podmnožinu D2 C[nc] = D2 // Do množiny I1 uloží všechny podmnožiny C z pole C[x]), které obsahují instance alespoň dvou různých tříd 7. for all C from C[] { if (viceTrid(C) == TRUE) { I1 = I1 + C } 49 Algoritmy početní redukce dat // Množina I2 obsahuje všechny ostatní podmnožiny z pole C[x] else { I2 = I2 + C } // Pokud množina I1 podmnožin C není prázdná pokračuje v dalších krocích právě s ní 8. if (I1 != Ø) { I = I1 } // Pokud množina I1 podmnožin C je prázdná pokračuje v dalších krocích s množinou I2 podmnožin C else { I = I2 } // Najdi takové j, že platí vzdalenost(Q1(j), Q2(j)) = maxvzdalenost(Q1(i), Q2(i)) pro i Є I // Jedná se o nalezení indexu j podmnožiny C[j], která má největší průměr ze všech množin, které se nachází v množině množin I 9. j = nejvetsiPrumer(C[],I) // Do množiny D se kterou bude případně dále pokračovat, uloží nalezenou podmnožinu s největším průměrem D = C[j] // V množině D nalezne dvě nejvzdálenější instance pro případné další zpracovávání [p1,p2]= nejvzdalenejsiInst(D) // Pro možnost přepsání nalezené podmnožiny C(j) v případně dalších krocích i = j // Vynuluje pomocné množiny I1 = Ø I2 = Ø D1 = Ø D2 = Ø //Proces opakuje, dokud není počet získaných podmnožin roven zadanému počtu instancí nd 10. if (nc < nd) { Pokračuj bodem 4 } else { Pokračuj bodem 11 } // Pro všechny získané podmnožiny C z pole podmnožin C[x] 11. for all C from C[] { // uloží do pole instancí centroidy vypočítané pro každou třídu // zastoupenou v podmnožině C zvlášť instance[] = centroidProVsechnyTridy(C) // přidáme nově nalezené instance do redukované množiny R R = R + instance[] } 12. // Vrací výslednou redukovanou množinu R return R Pseudokód 11: Algoritmus RSP3 Algoritmus RSP3 Popisy použitých proměnných TS – původní trénovací množina R – výsledná redukovaná množina 50 Algoritmy početní redukce dat D, D1, D2 – pomocné množiny instancí I1 - pomocná množina podmnožin nd – požadovaný počet instancí z původní trénovací množiny nc – aktuální počet podmnožin trénovací množiny C[] – pole podmnožin trénovací množiny p1,p2 – nejvzdálenější body v dané množině instance - pomocná instance j - číslo podmnožiny, kterou rozdělujeme Popisy použitých funkcí vstup() – vrací vstup definovaný uživatelem nejvzdalenejsiInst (množina X) – v množině X nalezne 2 nejvzdálenější instance p1, p2 vicetrid(množina X) – pokud nejsou v množině X instance pouze jediné třídy vrací TRUE, jinak vrací FALSE nejvetsiPrumer(množina[] X, množina I) – ze všech množin v poli množin X, které jsou také v množině množin I vybere množinu, která má největší vzdálenost mezi 2 nejvzdálenějšími instancemi a vrací index na tuto množinu v poli množin X centroid(množina X) – vytvoří novou instanci, kde pro všechny instance množiny X a všechny jejich atributy vypočítá průměrnou hodnotu. Třída instance je rovna třídě, která je v množině X nejvíce zastoupená a v případě rovnosti se rozhodne náhodně. centroidProVsechnyTridy(C) - vrací pole nově vytvořených instancí. V podmnožině C pro všechny třídy v ní zastoupené vypočítá průměrnou hodnotu pro všechny prvky této třídy. vzdalenost(instance x, instance y) – vrací euklidovskou vzdálenost instancí n 2 x, y ( i=1(x i − yi ) ) // Prvotní inicializace // Nastaví aktuální počet podmnožin trénovací množiny, které zastupují výsledné instance 1. nc = 1 // Nastaví pomocné množiny D1 = Ø D2 = Ø // Číslo j = 1 // Zkopíruje kompletní trénovací množinu do pole podmnožin trénovací množiny 2. C[j] = TS // Zkopíruje kompletní trénovací množinu do pomocné množiny D D = TS // Do množiny I1 uloží všechny podmnožiny C z pole C[x]), které obsahují instance alespoň dvou různých tříd 3. for all C from C[] { if (vicetrid(C) == TRUE) { I1 = I1 + C } } // Dokud množina I1 není prázdná 4. while (I1 != Ø) { // Najdi takové j, že platí: // vzdálenost(Q1(j), Q2(j)) = maxvzdalenost(Q1(i), Q2(i)) pro i Є I1 // Jedná se o nalezení indexu j podmnožiny C[j], která má největší // průměr ze všech množin, které se nachází v množině množin I1 j = nejvetsiPrumer(C[],I1) // Do množiny D se kterou bude případně dále pokračovat, uloží // nalezenou podmnožinu s největším průměrem D = C[j] // V množině D nalezne dvě nejvzdálenější instance pro případné další // zpracovávání [p1,p2] = nejvzdalenejsiInst(D) 51 Algoritmy početní redukce dat // Rozdělí množinu D na dvě podmnožiny D1 a D2 dle pravidel: // D1 = {pЄD, d(p,p1) <= d(p,p2)} // D2 = {pЄD, d(p,p2) < d(p,p1)} // kdy v podmnožině D1 jsou všechny instance p z množiny D, které jsou // blíže k instanci p1 než k instanci p2 nebo mají stejnou // vzdálenost k instanci p1 jako mají k instanci p2. V podmnožině D2 //jsou všechny ostatní instance for all p from D { if (vzdalenost(p,p1) <= vzdalenost(p,p2)) { D1 = D1 + p } else { D2 = D2 + p } } // Inkrementuje celkový počet podmnožin trénovací množiny nc = nc + 1 // Rozdělení podmnožiny D // Přepíše původní podmnožinu D podmnožinou D1 C[j] = D1 // Vytvoří v poli podmnožin novou podmnožinu // a uloží do ní podmnožinu D2 C[nc] = D2 // Do množiny I1 uloží všechny podmnožiny C z pole C[x]), které // obsahují instance alespoň dvou různých tříd I1 = Ø for all C from C[] { if (vicetrid(C) == TRUE) { I1 = I1 + C } } // Vynuluje pomocné množiny D1 = Ø D2 = Ø } // Pro všechny získané podmnmožiny C z pole podmnožin C[x] 5. for all C from C[] { // uloží do pole instancí centroidy vypočítané pro každou třídu // zastoupenou v podmnožině C zvlášť instance[] = centroidProVsechnyTridy(C) R = R + instance[] } // Vrací výslednou redukovanou množinu R 6. return R 6.4 Vlastní experimentální redukce 6.4.1 MergeAllInstances Při zkoumání jednotlivých algoritmů a počátečním testování přesnosti klasifikace 1 – NN klasifikátoru a neuronové sítě GAME jsem se rozhodla vytvořit vlastní experimentální algoritmus. Tento algoritmus jsem pojmenovala MergeAllInstances. Algoritmus je postaven na všech zkoumaných neadaptivních algoritmech, tj.: CNN, RNN, IB3 a DROP3. 52 Algoritmy početní redukce dat Algoritmus vychází z faktu, ţe zmiňované algoritmy rapidně sniţují velikost původní trénovací mnoţiny, coţ se bohuţel odráţí na přesnosti obou klasifikátorů. Navíc se kaţdý z algoritmů zaměřuje na redukci instancí leţících poblíţ rozhodovací hranice, či vnitřních instancí specifickým způsobem. Proto jsem se rozhodla všechny instance z redukovaných mnoţin získaných jednotlivými algoritmy spojit do jedné výsledné redukované mnoţiny. Podrobněji viz Pseudokód 12. Pečlivého čtenáře zřejmě napadne myšlenka, proč společně s algoritmem CNN pouţívám i algoritmus RNN. Kdyţ RNN algoritmus získává podmnoţinu mnoţiny instancí CNN algoritmu. RNN algoritmus jsem přidala do svého algoritmu, protoţe díky náhodnému výběru instance v počáteční fázi CNN algoritmu můţe RNN získat jinou výslednou redukovanou mnoţinu instancí. Pseudokód 12: Algoritmus MergeAllInstances Algoritmus MergeAllInstances Popisy použitých proměnných TS - původní trénovací množina množinaR - výsledná redukovaná množina instancí seznamR - pomocný seznam redukovaných instancí k1, k2, k3, mh, ml - pomocné proměnné, které slouží jako vstupní parametry k jednotlivým redukčním algoritmům Význam použitých funkcí vstup() – vrací vstup definovaný uživatelem hartReduce(int k, množina X) - vrací seznam redukovaných instancí množiny TS pomocí CNN redukčního algoritmu rnnReduce(int k, množina X) - vrací seznam redukovaných instancí množiny TS pomocí RNN redukčního algoritmu drop3Reduce(int k, množina X) - vrací seznam redukovaných instancí množiny TS pomocí DROP3 redukčního algoritmu ib3Reduce(double mh, double ml, double randomPart, množina X) - vrací seznam redukovaných instancí množiny TS pomocí IB3 redukčního algoritmu // Počáteční inicializace 1. množinaR = Ø k1 = vstup() k2 = vstup() k3 = vstup() mh = vstup() ml = vstup() randomPart() // Trénovací množinu TS zredukuje použitím CNN algorimu 2. seznamR = hartReduce(k1, TS) // Získaný seznam redukovaných instancí přidá // do množiny všech redukovaných instancí 3. přidej(množinaR, seznamR) // Trénovací množinu TS zredukuje použitím RNN algorimu 4. seznamR = rnnReduce(k2, TS) // Získaný seznam redukovaných instancí x přidá // do množiny všech redukovaných instancí // Pokud se již instance x v množině nachází nepřidá ji 5. přidej(množinaR, seznamR) // Trénovací množinu TS zredukuje použitím DROP3 algoritmu 6. seznamR = drop3Reduce(k3, TS) // Získaný seznam redukovaných instancí x přidá 53 Implementace // do množiny všech redukovaných instancí // Pokud se již instance x v množině nachází nepřidá ji 7. přidej(množinaR, seznamR) // Trénovací množinu TS zredukuje použitím IB3 algoritmu 8. seznamR = ib3Reduce(mh, ml, randomPart, TS) // Získaný seznam redukovaných instancí x přidá // do množiny všech redukovaných instancí // Pokud se již instance x v množině nachází nepřidá ji 9. přidej(množinaR, seznamR) // Vrací získanou redukovanou množinu 10. return množinaR 7. Implementace V rámci této práce byl implementován klasifikátor k – NN. Dále byly do modulu pro předzpracování dat projektu FAKE GAME implementovány 2 editační metody (ENN, All k – NN) a kondenzační metody (CNN, ENN, DROP3, IB3, Prototypy, Chen, RSP1, RSP3). 7.1 Klasifikátor k - NN Protoţe většina autorů literatury početní redukce dat testuje kvalitu kondenzačních algoritmů prostřednictvím klasifikátoru 1 – NN, rozhodla jsem se, ţe tento klasifikátor také pouţiji. I kdyţ ke klasifikaci pouţívám pouze zjednodušený případ klasifikátoru 1 – NN, rozhodla jsem se implementovat obecný klasifikátor k – NN, neboť jej vyuţívají také některé implementované algoritmy (ENN, All k – NN) k vlastní činnosti. Speciální případ klasifikátoru 1 – NN jsem optimalizovala, aby proces klasifikace neobsahoval nadbytečné kroky. V případě, ţe se jedná o speciální případ, kdy k = 1, je proces řazení instancí dle euklidovské vzdálenosti vynechán. Nejbliţší soused ke všem instancím je hledán jiţ v kroku výpočtu vzdálenosti vůči ostatním instancím. Zdrojový kód implementovaného algoritmu k – NN je uloţen na přiloţeném CD viz příloha E Obsah přiloţeného CD. 7.2 Integrace algoritmů do systému FAKE GAME Součástí prostředí FAKE GAME je modul Preprocessing dialog viz Obrázek 22. Pomocí tohoto modulu můţe uţivatel importovat i exportovat data a aplikovat na ně metody pro předzpracování dat. Dialog pro předzpracování dat obsahuje dosud implementované metody, jako je například podpora pro normalizaci dat, diskretizaci a clusterování dat. Dále je součástí např. Random Data Reducer (náhodné odebrání některých instancí) či Noise Adder (náhodný generátor instancí – datového šumu) a některé další. 54 Implementace Obrázek 22: FAKE GAME Preprocessing dialog Načtená data jsou uloţena v datovém úloţišti, nad kterým jednotlivé algoritmy pracují. Uţivatel pak můţe vybrat, který algoritmus spustí a nad jakou částí dat. Jednotlivé algoritmy lze spouštět opakovaně a libovolně je kombinovat. Algoritmy lze před vlastním spuštěním konfigurovat a je tak moţné upravit chování algoritmu viz Obrázek 23. Výsledná zpracovaná a upravená data lze exportovat do různých formátů (CSV, XLS, Weka) pro pouţití v jiných aplikacích. Obrázek 23: Konfigurace IB3 algoritmu 55 Implementace Kaţdá nová metoda musí implementovat Java rozhraní Preprocessor, které obsahuje deklarace základních metod jako je init(PreprocessingStorage storage) – inicializace reference přístupu k datovému úloţišti, run() – vlastní běh algoritmu. Základní třída BasePreprocessor, která zmíněné rozhraní implementuje, viz Obrázek 24, obsahuje název a stručný popis algoritmu zobrazovaný v dialogu. Taktéţ zajišťuje přístup k nastavené konfiguraci pomocí instance k některému z potomků třídy BasePreprocessorConfig. Potomek třídy BasePreprocessorConfig, na obrázku viz Obrázek 24 pro algoritmus Chang se jedná o třídu ChangReduceConfig, deklaruje jména a datové typy (integer, double) konfiguračních parametrů, včetně jejich moţných rozsahů. Obrázek 24: Class diagram modulu algoritmus Prototypy Pro účely implementace algoritmů popsaných v této práci jsem vytvořila potomka třídy BasePreprocessor, kterého jsem nazvala CondensingReduceProprocessor. Tento potomek slouţí k sjednocení přístupu k datovému úloţišti prostředí FAKE GAME. Před voláním redukčního algoritmu převede všechny instance z datového úloţiště na jednu kolekci NDInstance, jenţ je hlavním vstupním parametrem kaţdého z implementovaných algoritmů. Po provedení algoritmu vrací upravenou kolekci NDInstance zpět do datového úloţiště. Konkrétní algoritmus implementuje potomek třídy CondensingReducePreprocessor, na obrázku viz Obrázek 24 například ChangReduce, který v metodě run obsahuje volání vlastní funkce redukčního algoritmu. Z důvodu větší přehlednosti zdrojového kódu jsem funkční kód kaţdého algoritmu (postavený na pseudokódech v kapitole 6) umístila do speciální třídy pojmenované dle názvu algoritmu a umístila jej do vlastní Java package (např. Chang. ChangAlgorithm). 56 Implementace Třída NDInstance představuje právě jednu instanci dat. Obsahuje vektor dat a klasifikační třídu, do které data patří. Třída implementuje algoritmy často vyuţívanou metodu výpočtu Euklidovské vzdálenosti vůči jiné NDInstance a jednoduchou metodu pro porovnání dvou tříd NDInstance. Některé z algoritmů (např. Chang, IB3, DROP3) rozšiřují NDInstance vlastními potomky (ChangInstance, IBInstance, DROP3Instance) o další metody pro práci s instancemi. Jedná se např. o nalezení nejbliţšího oponenta v kolekci jiných instancí nebo operaci sjednocení instancí, kdy se vytvoří aritmetický průměr všech atributů a vytvoří nová instance a mnohé další. Aby bylo moţné naimplementovaný algoritmus zobrazit ve stromu nabízených metod Preprocessing dialogu, bylo nutné v konfiguračním souboru units.cfg přidat názvy potomků rozhraní Preprocesor a tím uţivateli aplikace zaregistrovat novou metodu. Všechny nově vytvořené algoritmy jsou v Preprocessing dialogu umístěny v podstromu Data reduction. Spuštění algoritmu nad daty se provede jejich vybráním a stisknutím tlačítka Run. Zdrojové kódy implementovaných algoritmů jsou k dispozici k nahlédnutí na přiloţeném CD viz příloha E Obsah přiloţeného CD či v aktuální verzi projektu FAKE GAME viz [27]. 57 Testování implementovaných algoritmů Část IV – Testování Tato část je věnována testování všech implementovaných algoritmů a zhodnocení jejich klasifikační, redukční i statistické kvality. 8. Testování implementovaných algoritmů Kvalitu implementovaných redukčních algoritmů testuji na uměle vytvořených datech (Zuby, Dvě E, Whirpool, Šachovnice) a na vybraných reálných problémech (Ecoli, Mandarinky, Glass, Ionosphere, EKG). Na uměle vytvořených datech Dvě E popisuji změny rozhodovací hranice trénovací mnoţiny dat po aplikaci jednotlivých kondenzačních algoritmů. Nejprve testuji vliv implementovaných editačních algoritmů na funkčnost algoritmů kondenzačních na uměle vytvořených datech. Jednotlivé algoritmy porovnávám podle dosaţené klasifikační přesnosti, redukčního stupně a času potřebného k vytvoření modelu. Hodnotím vlastní experimentální algoritmus. V poslední řadě testuji změny statistických vlastnosti dat po aplikaci redukčních algoritmů. K testování pouţívám klasifikátoru 1 – NN a neuronové sítě GAME. 8.1 Popis testovaných dat 8.1.1 Umělá data K vytvoření umělých dat jsem vyuţila nástroj vytvořený v Matlabu, který jsem získala od svého vedoucího diplomové práce. Pomocí něj jsem vytvořila 5 různých umělých dat. Instance v těchto datech jsou dvojrozměrné a jsou klasifikovány jednou ze dvou tříd. Pro rozlišení je budu označovat A (instance fialové) a B (instance zelené). Zuby – tyto data jsem vytvořila, protoţe je pouţívá řada autorů kondenzačních algoritmů. Je tedy moţné porovnat mé výsledky s výsledky jiných autorů. Data obsahují celkem 450 instancí a kaţdá třída je v ní zastoupena se stejnou pravděpodobností, tudíţ 225 instancí třídy A a 225 instancí třídy B. Data jsou zobrazena na obrázku viz Obrázek 25. 58 Testování implementovaných algoritmů Obrázek 25: Uměle vytvořená data Zuby Dvě E – tato data jsou obměnou předchozích dat Zuby ovšem se sloţitější rozhodovací hranicí. Pouţila jsem je právě z důvodu sloţitější rozhodovací hranice a z toho vyplývajících větších nároků na klasifikační algoritmus a správně utvořenou trénovací mnoţinu. Data jsou zobrazena na obrázku viz Obrázek 26. Obrázek 26: Uměle vytvořená data Dvě E Whirpool – data jsou velmi zjednodušenou verzí známé databáze spirála. Databáze spirála je pouţívána jako kvalitní testovací úloha. Proto jsem se rozhodla tuto úlohu zjednodušit a vyzkoušet na ní zdatnost algoritmů pro početní redukci dat. Data mají celkem 244 instancí a kaţdá třída je v nich zastoupená se stejnou pravděpodobností, tudíţ 122 instancí třídy A a 122 instancí třídy B. Databáze je zobrazena na obrázku viz Obrázek 27. 59 Testování implementovaných algoritmů Obrázek 27: Uměle vytvořená data Whirpool Šachovnice – data Šachovnice jsem vytvořila, abych ověřila schopnost algoritmů redukovat data s velmi sloţitou rozhodovací hranicí. Databáze má celkem 856 instancí a kaţdá třída je v ní zastoupena se stejnou pravděpodobností, tudíţ 428 instancí třídy A a 428 instancí třídy B. Data jsou zobrazena na obrázku viz Obrázek 28. Obrázek 28: Uměle vytvořená data Šachovnice 8.1.2 Reálné databáze Ecoli – dataset reprezentuje soubor proteinů. Jednotlivé molekuly jsou popsány celkem 8 atributy. Atributy popisují vlastnosti proteinu. Cílem je určit, ze které části buňky proteiny pocházejí (např. buněčná stěna, cytoplasma, vnitřní membrány,...). Ionosphere – data pochází z radarové stanice Goose Bay. Stanice měří radarové odrazy z atmosféry pomocí 32 sloţek. Cílem měření je zachytit volné elektrony v ionosféře. Výsledkem klasifikace jsou dvě třídy odrazů. První třída odrazů (pojmenované Good) jsou odrazy od volných elektronů. Druhá třída (pojmenovaná "Bad") se neodrazila a proletěla do vesmíru. 60 Testování implementovaných algoritmů Glass – data popisující různé typy skla. 7 vstupními atributů obsahuje zastoupení prvků ve skle (Magnesium, Křemík, Barium,...). Cílem je určit jakého původu je sklo (Okenní sklo, autosklo, nádoby,...) EKG – data reprezentují EKG záznamy srdečních stahů. EKG záznam je rozdělen na jednotlivé stahy a stahy jsou popsány 6 parametry pouţívanými v medicíně (např. vzdálenosti a amplitudy jednotlivých vln). Cílem je klasifikace stahů na normální (zdravé) a ventrikulární (indikující onemocnění srdce). Mandarinky – tato data pochází z Hort Research z Nového Zélandu a popisují mnoţství vody zkonzumované mandarinkovým stromem. 9 vstupních proměnných popisuje parametry prostředí, jako například teplota, vlhkost, mnoţství slunečního svitu. Výstupem je, jiţ zmíněné, mnoţství vody zkonzumované mandarinkovým stromem. Protoţe se původně jedná o regresní problém, výstupní hodnoty jsem diskretizovala do 5 tříd. Data Ecoli, Ionosphere a Glass jsem získala z veřejné internetové databáze UCI Machine Learning Repository. Data EKG a Mandarinky jsem získala od vedoucího a oponenta mé práce. 8.2 Metodika experimentů V této části popíši metodiku, kterou budu pouţívat při získávání výsledků. Nejprve originální data rozdělím na trénovací a testovací část. Do trénovací mnoţiny náhodně zvolím 75% instancí z originálních dat a zbylých 25% pouţiji pro testování. Trénovací mnoţinu budu upravovat implementovanými redukčními algoritmy a poté ji budu pouţívat k tvorbě jednotlivých modelů. Naopak testovací mnoţinu jiţ nebudu upravovat a budu pouţívat pokaţdé stejnou, abych získala srovnatelné výsledky. Všechny výsledky, z k – NN klasifikátoru i ze sítě GAME, tedy budou získány na testovacích datech. Při tvorbě neuronové sítě GAME hraje značnou roli náhoda. Proto jsem se rozhodla, postavit 20 modelů pro kaţdou třídu a takto zajistit, konzistenci výsledků sítě GAME. V dalších částech měřím čas potřebný k vytvoření sítě. Tento čas se měří jen z doby tvorby sítě, čili neměřím dobu strávenou nahráváním dat ani čas potřebný k vyhodnocení testovací mnoţiny. Měřím čas spotřebovaný procesem, neměl by tudíţ být ovlivněn během jiných procesů. Protoţe tvorba sítě GAME netrvá vţdy stejně, rozhodla jsem se uvádět průměrný čas potřebný k tvorbě jednoho modelu. Časy byly měřeny na jednom počítači s procesorem Core Duo na 2,13 GHz. 61 Testování implementovaných algoritmů Pro výpočet klasifikační úspěšnosti neuronové sítě GAME budu pouţívat standardní postup implementovaný v této síti. Při vyhodnocení instance se vypočítají výstupní hodnoty všech vytvořených modelů. Model s největší výstupní hodnotou je zvolen vítězem. Instance je zařazena do třídy, kterou reprezentuje vítězný model. Klasifikační úspěšnost na testovací mnoţině pak získám oklasifikováním všech instancí v této mnoţině. 8.3 Redukce umělých dat Pro předvedení funkčnosti jednotlivých algoritmů na uměle vytvořených datech jsem zvolila data Zuby viz kapitola 8.1.1. Obdobná data pouţívá většina autorů [14] [19]. K vizualizaci změny rozhodovací hranice na datech Zuby, jsem upravila applet [26], který k vykreslení rozhodovací hranice mezi instancemi dvou tříd pouţívá metody Gabrielův graf. Funkčnost redukčních algoritmů na ostatních uvedených umělých datech, jsou zobrazeny v příloze B Výsledky redukce umělých dat Testovací a trénovací data jsem vyrobila rozdělením dat prezentovaných v předchozí kapitole. Do trénovací mnoţiny jsem náhodně vybrala 75% dat z původních dat. Zbylých 25% dat jsem pouţila pro testovací mnoţinu. Všechny výsledky prezentované v dalších částech mé práce jsou získány z testovací mnoţiny. 8.3.1 Neadaptivní kondenzační algoritmy CNN algoritmus CNN algoritmus se zaměřuje na ukládání instancí leţících blízko rozhodovací hranice. Instance, které jsou příliš vzdálené od rozhodovací hranice, neukládá. Jinými slovy, zahazuje instance, které jsou správně klasifikovány svými sousedy. To je dobře vidět na obrázku viz Obrázek 29. Instance kolem rozhodovací hranice jsou ponechány a dobře hranici vyznačují, zatím co téměř všechny ostatní instance jsou smazány. Algoritmus CNN má jeden parametr a to počet nejbliţších sousedů, kteří se pouţijí při zjišťování, zda instance bude správně klasifikována. Tento parametr jsem nastavila na 1. 62 Testování implementovaných algoritmů Obrázek 29: Algoritmus CNN na uměle vytvořených datech Zuby RNN Algoritmus Odstraňuje problém redundantních instancí CNN algoritmu, kdy instance, které jednou přidáme, jiţ není moţné odebrat. Podmnoţinu získanou CNN algoritmem ještě jednou redukuje, ale tak aby redukovaná mnoţina zůstala konzistentní. Zachovává tedy také instance poblíţ rozhodovací hranice a instance, které jsou od ní hodně vzdálené, neukládá. To je opět dobře vidět na obrázku viz Obrázek 30. Navíc, jak je také dobře vidět na obrázku viz Obrázek 30, ţe RNN algoritmus na rozdíl od CNN algoritmu, odstranil některé instance u rozhodovací hranice, vedle nichţ poblíţ leţela sousední instance stejné třídy. Tím je rozhodovací hranice méně přesná. Na druhé straně RNN algoritmus odstranil všechny odlehlé instance. RNN algoritmus má opět jeden parametr. A to počet nejbliţších sousedů, kteří budou pouţiti v první fázi algoritmu. Tento počet je opět nastaven na 1. Obrázek 30: Algoritmus CNN a RNN na uměle vytvořených datech Zuby IB3 Algoritmus Vychází z IB2 algoritmu, který se velmi podobá CNN algoritmu, ale není konzistentní. Rušivé instance rozpoznává pomocí statistického vzorce, dle nastavených mezí spolehlivosti. Redukovaná data na obrázku viz Obrázek 31 jsou získána s pouţitím doporučených mezí spolehlivosti 70% a 90% a nastavením prvotního náhodného výběru dat z mnoţiny na 20% 63 Testování implementovaných algoritmů původních instancí. Jak je vidět, instance A třídy jsou zastoupeny více a tyto instance kopírují původní rozhodovací hranici. Instance třídy B jsou zastoupeny méně a jsou rozloţeny dál od rozhodovací hranice. Tato nevyváţenost je způsobena nedeterministickým výběrem instancí z původní trénovací mnoţiny na počátku algoritmu. Jak jsem jiţ zmínila – tato metoda má 3 parametry. Dva jsou meze spolehlivosti, které jsem v implementaci nazvala “Majority low” a “Majority high”. Tyto meze jsem nechala nastavené na 0,7 a 0,9. Poslední parametr je prvotní náhodný výběr, v mé implementaci nazvaný “Random part”, který jsem nastavila na 0,2. Obrázek 31: Algoritmus IB3 na umělých datech Zuby DROP3 DROP3 algoritmus, jako jediný z testovaných algoritmů, implicitně vyuţívá editačního algoritmu ENN. Díky němu DROP3 redukuje trénovací mnoţinu, ze které jsou odfiltrovány rušivé instance a instance velmi blízko rozhodovací hranice. DROP3 odstraňuje všechny instance, jejichţ odebrání neohrozí klasifikaci většiny okolních instancí. Navíc se nejprve zaměřuje na odstranění instancí, které jsou vzdálenější od rozhodovací hranice, čímţ zvyšuje šance na ponechání instancím poblíţ rozhodovací hranice. Všechny tyto vlastnosti jsou ilustrovány na obrázku viz Obrázek 32. Velké mnoţství instancí poblíţ rozhodovací hranice je ponecháno a naopak všechny instance vzdálenější od rozhodovací hranice jsou odstraněny. Díky pouţití editovacího ENN algoritmu instance leţící v těsné blízkosti rozhodovací hranice jsou odstraněny a rozhodovací hranice je tak pěkně vyhlazená. DROP3 má opět jeden parametr, počet nejbliţších sousedů kteří se mají pouţít při rozhodování o zachování instance. Pro tento parametr jsem zvolila hodnotu 3. 64 Testování implementovaných algoritmů Obrázek 32: Algoritmus DROP3 na umělých datech Zuby 8.3.2 Adaptivní kondenzační algoritmy Prototypy Algoritmus Prototypy se nezaměřuje pouze na zachovávání instancí poblíţ rozhodovací hranice, ale snaţí se taktéţ zachovat strategicky výhodné instance vnitřní, jak je vidět na obrázku viz Obrázek 33: Algoritmus Prototypy na umělých datech Zuby. Redukovaná mnoţina ovšem jiţ není podmnoţinou mnoţiny trénovací, ale je tvořena novými prototypy. Prototypy vznikají spojením dvojice nejbliţších instancí, které jsou stejné třídy tak, ţe jsou umístěny ve středu jejich vzdálenosti. Díky tomu jiţ rozhodovací hranice není pevně vymezená instancemi, jako tomu bylo u předešlých neadaptivních algoritmů. Algoritmus Prototypy nemá ţádné nastavitelné parametry. Obrázek 33: Algoritmus Prototypy na umělých datech Zuby Chen Chenův algoritmus se snaţí v kaţdém kroku redukovat oblast, kde můţe dosáhnout největší redukce. Vyuţívá přitom myšlenky, ţe nejvíce instancí je v oblasti, která je největší. I tento algoritmus také věnuje pozornost zachovávání strategicky výhodných vnitřních instancí. 65 Testování implementovaných algoritmů Noví reprezentanti vznikají jako centroidy všech instancí v dané podmnoţině a jsou klasifikovány třídou, která je v podmnoţině nejvíce zastoupena. Díky tomu je rozhodovací hranice podstatně změněna viz Obrázek 34. Všechny zmiňované algoritmy pro početní redukci dat neumoţňovaly kontrolu velikosti výsledné redukované mnoţiny. Ovšem Chenův algoritmus tuto moţnost nabízí. Proto je při kaţdém testování potřeba nastavit poţadovanou velikost výsledné redukované mnoţiny. U jednotlivých dat vyznačuji, jakou velikost jsem zvolila. Velikost jsem zkoušela nastavovat a vybírala takovou, abych dosáhla vyšší klasifikační přesnosti neţ je u plné trénovací mnoţiny. Na datech Zuby jsem nastavila velikost redukované mnoţiny na 60. Obrázek 34: Chenův algoritmus na umělých datech Zuby RSP1 Algoritmus RSP1 vychází z Chenova algoritmu, kdy vylepšuje jeho nedostatek, citlivost na nevyváţená data. Tato vlastnost se ale v testovaných datech nevyskytuje. Liší se pouze v poslední fázi Chenova algoritmu. Nezanechává pouze jednoho nového reprezentanta pro celou podmnoţinu, ale vytváří centroidy pro instance všech tříd zastoupených v podmnoţině zvlášť. Na obrázku viz Obrázek 35 je dobře vidět, ţe díky vytvoření centroidu pro kaţdou třídu zvlášť je sice zachováno více instancí u rozhodovací hranice, ale rozhodovací hranice je více nepřesná, neţ u Chenova algoritmu. RSP1 algoritmus nabízí moţnost zadání přibliţné velikosti výsledné redukované mnoţiny. U jednotlivých dat vyznačuji, jakou velikost jsem zvolila. Velikost jsem vybírala stejnou jako u Chenova algoritmu. Na databázi Zuby jsem tedy opět nastavila velikost redukované mnoţiny na 60. 66 Testování implementovaných algoritmů Obrázek 35: Algoritmus RSP1 na umělých datech Zuby RSP3 Algoritmus RSP3 rozděluje mnoţinu trénovacích dat na oblasti obsahující instance stejné třídy. Není jiţ tedy moţné nastavovat poţadovanou velikost výsledné redukované mnoţiny. Stejně jako RSP1 algoritmus v poslední fázi, ze získaných oblastí vypočítá pro instance všech tříd centroid zvlášť. Z ilustrace viz Obrázek 36 s redukovanou mnoţinou pouţitím RSP1 algoritmu (uprostřed) a redukovanou mnoţinou pouţitím RSP3 algoritmu je zřejmé, ţe oba algoritmy zanechávají nejvíce instancí u rozhodovací hranice. To je způsobeno vytvářením centroidu pro kaţdou třídu zvlášť. Dále je vidět, ţe algoritmus RSP3 se kvůli poţadavku homogenity všech oblastí, nedokáţe dobře vyrovnat s instancemi leţícími velmi blízko rozhodovací hranice. Poblíţ rozhodovací hranice tak zachovává i redundantní instance. Algoritmus RSP3 nemá ţádné nastavitelné parametry. Obrázek 36: Algoritmus RSP1 a RSP3 na umělých datech Zuby I kdyţ se ve své diplomové práci zaměřuji na krok kondenzace v celkovém procesu početní redukce dat, rozhodla jsem se implementovat 2 editační algoritmy. Editační algoritmy 67 Testování implementovaných algoritmů slouţí pro předzpracovávání dat pro algoritmy kondenzační. Odstraňují šumové instance a instance leţící velmi blízko rozhodovací hranice. Implementovala jsem algoritmy ENN a All k – NN. Oba tyto algoritmy jsou zaloţeny na podobném principu, pouţití klasifikátoru k – NN. All k – NN algoritmus vychází z algoritmu ENN a byl vytvořen k získání kvalitnější editované mnoţiny, neţ poskytuje ENN algoritmus. I kdyţ All k – NN algoritmus odstraňuje více rušivých instancí neţ ENN algoritmus, bohuţel sniţuje také klasifikační přesnost. Proto zjišťuji, jak editovaná mnoţina získaná pouţitím ENN algoritmu a All k – NN algoritmu ovlivňuje jednotlivé kondenzační algoritmy. Vliv implementovaných editačních algoritmů na funkčnost kondenzačních algoritmů testuji klasifikátorem 1 – NN a neuronovou sítí GAME na vytvořených umělých datech (data Zuby, Dvě E, Šachovnice a Whirpool). Parametr k jsem u obou algoritmů po krátkém testování a dle doporučení z literatury věnující pozornost editačním algoritmům [11] nastavila na 3. Do testování vlivu editačních algoritmů na přesnost klasifikace algoritmů kondenzačních nezahrnuji algoritmus DROP3, protoţe implicitně jiţ pouţívá ENN algoritmus. Výsledky 1 – NN klasifikace U klasifikátoru 1 – NN testuji přesnost klasifikace (v tabulce viz Tabulka 1 sloupce Acc[%]) a zaznamenala jsem také redukční stupeň velikosti trénovacích dat (v tabulce viz Tabulka 1 sloupce Size[%]). Testovala jsem vliv editačních algoritmů na klasifikaci úplné – neredukované trénovací mnoţiny. Kondenzační algoritmy jsem zkoušela na needitovaných trénovacích datech (v tabulce viz Tabulka 1 řádky noise) a na editovaných datech s pouţitím ENN a All k – NN algoritmu viz Tabulka 1. Výsledky testování vlivu editačních algoritmů na klasifikaci testovací mnoţiny (Full) potvrzují zmíněný vztah ENN algoritmu a algoritmu All k – NN. Dále ukazují, ţe obě editované mnoţiny mohou mít stejné výsledky. Na datech Šachovnice sice algoritmus All k – NN redukuje o 72% více dat neţ algoritmus ENN, ale na druhé straně ENN algoritmus dosahuje lepší klasifikační přesnosti, která je dokonce lepší neţ u pouţití původní trénovací mnoţiny. Podobně je tomu i u dat Zuby, kde sice ENN algoritmus dosahuje lepší přesnosti neţ All k – NN algoritmus, ale tato přesnost není vyšší neţ u pouţití plné trénovací mnoţiny. Nejlepších výsledků dosáhl All k-NN algoritmus na datech Whirpool, kdy zachovává stejnou klasifikační přesnost jako plná trénovací mnoţina i editovaná mnoţina pouţitím ENN algoritmu, ale trénovací mnoţinu redukuje o 4,6%. Výsledky na datech Dvě E jsou pro oba algoritmy stejné. 68 Testování implementovaných algoritmů Tabulka 1: Vliv editačních algoritmů na klasifikaci 1 – NN Zuby Algoritmus / Data Full CNN RNN IB3 RSP1 RSP3 Size [%] Noise 92,5 0,0 ENN 91,8 5,3 All-kNN 89,8 Noise Acc [%] 100,0 Šachovnice Size [%] Acc [%] Size [%] Whirpool Acc [%] Size [%] 0,0 96,0 0,00 98,8 0,0 100,0 1,2 96,3 5,0 98,8 4,5 7,7 100,0 1,2 96,0 8,6 98,8 4,6 92,5 86,4 100,0 86,5 91,7 82,1 95,3 84,7 ENN 90,5 92,0 97,7 87,4 92,4 86,7 100,0 89,7 All-kNN 92,5 93,1 96,6 86,8 92,4 88,1 97,6 91,7 Noise 94,5 87,8 98,8 87,1 92,0 86,0 97,6 88,4 ENN 89,1 93,3 98,8 90,0 57,3 89,8 97,6 91, All-kNN 93,2 94,0 98,8 89,0 55,0 91,1 97,6 93,0 Noise 79,0 89,3 95,5 83,6 87,0 83,9 94,1 86,8 ENN 88,5 80,7 87,6 81,9 90,2 76,9 95,3 81,4 All-kNN 90,5 81,3 94,3 82,3 92,0 79,0 98,8 78,6 Noise 93,9 86,4 95,5 85,5 92,7 83,0 95,3 84,7 91,2 88,0 97,7 86,5 93,1 84,8 95,3 86,8 All-kNN 91,8 91,1 98,8 87,4 93,1 86,7 96,5 88,8 Noise 93,2 86,7 93,2 83,9 89,1 83,6 94,1 83,5 ENN 93,9 86,9 94,3 84,2 44,9 83,7 96,5 83,9 All-kNN 93,2 86,9 94,3 84,2 50,5 83,7 96,5 83,9 Noise 92,5 84,9 100,0 77,4 90,2 80,8 94,1 81,8 ENN 93,9 86,9 100,00 78,46 47,19 83,78 93,0 83,9 All-kNN 93,2 86,9 100,00 78,46 47,19 83,78 94,1 83,9 Noise 93,2 83,5 100,00 76,21 90,61 80,28 93,0 81,0 ENN 93,9 87,1 100,00 77,49 47,19 84,36 93,0 86,8 All-kNN 93,2 88,4 100,00 77,49 46,07 86,70 94,1 87,2 Prototypy ENN Chen Acc [%] Dvě E CNN algoritmus dosahuje na datech Zuby a Šachovnice nejlepších výsledků se vstupní mnoţinou editovanou pouţitím All k – NN algoritmu, kdy má oproti ostatním vstupním mnoţinám nejvyšší přesnost a redukční stupeň. Na datech Dvě E nejvyšší přesnosti klasifikace dosahuje algoritmus CNN pouţitím plné trénovací mnoţiny. Algoritmus si v porovnání s ostatními algoritmy vedl nejlépe s daty Whirpool, kdy jako jediný s editovanou vstupní mnoţinou algoritmem ENN získal 100% klasifikaci. Ovšem vyšší redukce dat na datech Whirpool dosáhl s pouţitím All k – NN algoritmu, kde má taky přesnost klasifikace velmi dobrou, vyšší neţ u pouţití plné trénovací mnoţiny. U RNN algoritmu jiţ nejsou získané výsledky s pouţitím editačních algoritmů tak dobré, jako tomu bylo u CNN algoritmu. Na datech Zuby dosahuje sice o 1,25% niţší přesnosti s pouţitím předzpracování All k – NN algoritmu neţ s původní trénovací mnoţinou, ale na druhou stranu o 7,8 % lepší redukci. U dat Dvě E a Whirpool je zachována stejná 69 Testování implementovaných algoritmů klasifikační přesnost u všech vstupních mnoţin. Nejvyššího redukčního stupně na datech Dvě E dosahuje RNN algoritmus s editovanou mnoţinou pouţitím ENN algoritmu. A u dat Whirpool dosahuje nejvyššího redukčního stupně s editačním algoritmem All k – NN. Nejhůře dopadlo pouţití editačních algoritmů na datech Šachovnice. Editované vstupní mnoţiny sníţily úspěšnost klasifikace z původních 92% na cca 56%. IB3 algoritmus s pouţitím editovaných vstupní dat All k – NN algoritmem na datech Zuby, Šachovnice a Whirpool dosahuje sice vyšší klasifikační přesnosti neţ při pouţitím úplné trénovací mnoţiny, ale dosahuje poměrně nízké redukce dat. Na datech Dvě E dosahuje algoritmus IB3 lepší klasifikační přesnosti s pouţitím původní trénovací mnoţiny. S editovanou vstupní mnoţinou získanou pouţitím ENN algoritmu má IB3 algoritmus dobré výsledky na datech Whirpool, klasifikační přesnost má sice niţší neţ s pouţitím vstupních dat editovaných All k – NN algoritmem, ale má vyšší redukční rate. Prototypy algoritmus dosahuje na všech datech nejlepších výsledků v přesnosti klasifikace i v dosaţeném redukčním stupni s pouţitím editované mnoţiny pomocí All k – NN algoritmu. Chenův algoritmus na datech Zuby má nejvyšší klasifikační přesnost i redukční rate s pouţitím předzpracovaných dat ENN algoritmem. Na datech Dvě E a Whirpool dosahuje s oběma editovanými mnoţinami stejných výsledků, které jsou lepší neţ výsledky s pouţitím úplné trénovací mnoţiny. Se sloţitou rozhodovací hranicí dat Šachovnice si Chenův algoritmus při pouţití editované trénovací mnoţiny nedokázal poradit. Jeho klasifikační přesnost se sníţila na cca 48%, coţ je nedostatečné. RSP1 algoritmus má na datech Zuby nejlepší výsledky s pouţitím ENN editované mnoţiny. Na datech Whirpool má zase nejlepší výsledky s pouţitím All k – NN editované mnoţiny. Stejné klasifikační přesnosti a redukčního stupně, které jsou lepší neţ při pouţití úplné trénovací mnoţiny, dosahuje na datech Dvě E s pouţitím obou editovacích algoritmů. Taktéţ dosahuje velmi špatných výsledků na datech Šachovnice při pouţití editované mnoţiny. RSP3 algoritmus na datech Zuby dosahuje nejvyšší přesnosti s pouţitím editovaných dat ENN algoritmem, ale lepší redukční rate má s editovanými daty All k – NN algoritmem. Stejně jako RSP1 na datech Dvě E mají editované mnoţiny totoţnou klasifikační přesnost a redukční stupeň, které jsou lepší neţ při pouţití úplné trénovací mnoţiny. Na datech Whirpool vychází nejlépe pouţití editačního algoritmu All k – NN. S daty Šachovnice si bohuţel s editovanou vstupní mnoţinou taktéţ nedokázal poradit. Výsledky neuronové sítě GAME U sítě GAME testuji přesnost klasifikace (v tabulce viz Tabulka 2 sloupce Acc[%]) a také čas potřebný k vytvoření modelu s danými daty měřený v milisekundách (v tabulce x sloupce Time[ms]). 70 Testování implementovaných algoritmů Testovala jsem opět vliv editačních algoritmů na klasifikaci úplné trénovací mnoţiny. Kondenzační algoritmy jsem zkoušela na needitovaných trénovacích datech (v tabulce viz Tabulka 2 řádky noise) a na editovaných datech s pouţitím ENN a All k – NN algoritmu viz Tabulka 2. Tabulka 2: Vliv editačních algoritmů na neuronovou síť GAME Zuby Algoritmus / Data Full CNN RNN IB3 Time [ms] Acc [%] Time [ms] Acc [%] Time [ms] 91,8 43520 74,1 26147 81,2 90728 84,1 26150 91,2 36435 77,5 25636 86,6 88720 94,2 22798 All k-NN 90,5 38536 78,6 22356 82,3 82231 96,5 23720 Noise 56,7 6433 94,4 4970 50,9 6167 82,5 5346 ENN 67,5 4761 85,4 3514 49,5 5254 82,6 2896 All-kNN 73,6 2588 89,9 3617 50,1 5621 81,4 1963 Noise 49,3 7624 97,7 3829 55,9 5636 74,4 3377 ENN 85,8 3100 94,3 3753 51,6 5384 76,7 1821 All-kNN 68,2 2353 98,8 3613 58,1 5159 74,4 1375 Noise 72,9 3524 69,6 6366 74,4 19548 89,5 3053 ENN 82,4 8226 69,6 7101 76,1 36239 95,5 5768 All-kNN 82,4 8511 75,2 5805 71,4 34686 84,9 5647 Noise 78,3 5695 95,5 4907 72,5 11207 91,8 4214 87,8 5932 92,1 5764 61,7 7072 91,9 3944 83,7 4265 83,1 4413 63,1 7978 90,7 2793 77 6206 84,2 5431 64,3 14379 76,7 5173 ENN 87,1 6031 82 4918 70 14038 89,5 4610 All-kNN 84,4 5946 79,7 5314 71,5 11459 87,2 3955 Noise 84,5 7199 92,1 8833 73,6 19357 83,7 6146 ENN 85,1 6284 86,5 7556 66 15430 93 4826 All-kNN 83,7 6123 98,8 8929 71,1 14108 91,8 4631 Noise 81,7 8715 97,7 8808 62,8 26803 75,6 5577 ENN 84,4 7463 93,2 7935 61,7 10109 87,2 3997 All-kNN 85,8 6123 95,5 8780 68,2 9161 86 3226 Noise RSP3 Acc [%] Whirpool ENN All-kNN RSP1 Time [ms] Šachovnice Noise Prototypy ENN Chen Acc [%] Dvě E Výsledky testování vlivu editačních algoritmů na klasifikaci testovací mnoţiny (Full) neuronové sítě GAME opět potvrzují zmíněný vztah ENN algoritmu a algoritmu All k – NN. Téměř na všech datech je vidět, ţe algoritmus All k – NN sice redukuje trénovací mnoţinu dat více neţ algoritmus ENN, čímţ je čas potřebný na vytvoření modelu kratší, ale má niţší klasifikaci neţ algoritmus ENN. Přesnost s pouţitím ENN algoritmu je u většiny dat dokonce lepší neţ u pouţití původní trénovací mnoţiny. Pouze na datech Dvě E algoritmus All k-NN dosahuje nejen nejlepšího času pro vytvoření modelu, ale také nejvyšší klasifikační přesnosti. U CNN algoritmu je na datech Zuby je jasně vidět jeho problém při pouţití needitované vstupní mnoţiny. Při pouţití editovaných dat algoritmem All k – NN klasifikační přesnost 71 Testování implementovaných algoritmů vzrostla o 17,1% a navíc je síť vybudována cca 2,5 krát rychleji. Na datech Dvě E vychází nejvyšší klasifikační přesnost s pouţitím editované mnoţiny All k – NN algoritmem, ale nejlepší čas pro vytvoření sítě dosahuje CNN algoritmus s editovanou mnoţinou ENN algoritmem. Data Šachovnice není schopen algoritmus CNN zredukovat ani s jednou vstupní mnoţinou tak, aby se neuronová síť GAME byla schopná dobře naučit. Na datech Whirpool má CNN algoritmus největší úspěch s editovanou mnoţinou pomocí ENN algoritmu. RNN algoritmus podobně jako CNN algoritmus na datech Zuby ukazuje svoji slabou stránku. Neschopnost správné redukce některých dat, ze kterých nejsou odebrány rušivé a hraniční instance. Na datech Whirpool dosahuje neuronová síť GAME vyšší přesnosti s pouţitím editovaných dat ENN algoritmem, ale rychleji se učí s editovanými daty All k – NN algoritmem, se kterými dosahuje stejné klasifikační přesnosti jako s pouţitím úplné trénovací mnoţiny. Data Šachovnice není algoritmus RNN také schopen přiměřeně zredukovat, coţ vychází jiţ z faktu, ţe RNN algoritmus získává pouze podmnoţinu instancí získaných CNN algoritmem. Data Dvě E algoritmus CNN jednoznačně redukuje nejlépe s pouţitím editovaných dat All k – NN algoritmem. IB3 algoritmus dosahuje na datech Zuby, Šachovnice a Whirpool nejpřesnější klasifikace s pouţitím editovaných dat algoritmem ENN, ale čas potřebný na vytvoření modelu je podstatně niţší při pouţití úplné trénovací mnoţiny. Na datech Dvě je nejúspěšnější s editovanou vstupní mnoţinou pouţitím All k – NN algoritmu. Algoritmus Prototypy je neuronovou sítí GAME klasifikován na datech Zuby a Whirpool nejlépe s pouţitím editované mnoţiny ENN algoritmem, ale nejkratší doby pro vytváření modelu dosahuje na těchto datech s editovanou mnoţinou All k – NN algoritmem. Na datech Šachovnice má nejvyšší klasifikační přesnost při pouţití původních trénovacích dat, ale nejrychleji je model sítě vytvořen s pouţitím editovaných dat All k – NN algoritmem. U dat Dvě E dopadl nejlépe s pouţitím původní trénovací mnoţiny, i kdyţ byl rychlejší s mnoţinou editovanou algoritmem All k – NN. Chenův algoritmus na datech Zuby a Whirpool má nejlepší klasifikaci pro vstupní editovanou mnoţinu ENN algoritmem, ale nejrychleji je síť postavena s pouţitím editované mnoţiny All k – NN algoritmem. U dat Dvě E je redukovaná mnoţina Chenovým algoritmem nejlépe klasifikována pouţitím úplné trénovací mnoţiny a nejrychleji je model vytvořen s pouţitím editované mnoţiny algoritmem ENN. Redukovaná data Šachovnice jsou nejlépe ohodnocena s předzpracováním editačním algoritmem All k – NN. RSP1 algoritmus na datech Zuby a Whirpool má nejpřesnější klasifikaci s pouţitím editované mnoţiny ENN algoritmem, ale nejrychleji je model vystaven s pouţitím editované mnoţiny algoritmem All k – NN. U dat Dvě E má největší klasifikační přesnost s pouţitím editovaných dat All k – NN algoritmem, ale nejrychlejší je s pouţitím editovaných dat ENN algoritmem. Na datech Šachovnice je RSP1 algoritmus nejúspěšnější při pouţití editované trénovací mnoţiny All k – NN algoritmem, kdy přesnost je sice o 2,5% niţší neţ u pouţití úplných trénovacích dat, ale doba vytvoření modelu je o 23% kratší. 72 Testování implementovaných algoritmů Zredukovaná data Zuby a Šachovnice algoritmem RSP3 jsou nepřesněji klasifikována s pouţitím editované vstupní mnoţiny All k – NN algoritmem, kdy je také model sítě postaven nejrychleji. Na Dvě E datech dosahuje algoritmus RSP3 nejvyšší klasifikace s pouţitím původní trénovací mnoţiny, ale nejrychleji je model vybudován s pouţitím editované mnoţiny ENN algoritmem. Výběr editačních algoritmů Z výsledků získaných pouţitím 1 – NN klasifikátoru a neuronové sítě GAME vychází, ţe pro všechny zkoumané algoritmy je ve většině případů výrazně lepší pouţít editovanou vstupní trénovací mnoţinu. Z porovnání vlivu editačních algoritmů na kvalitu kondenzačních algoritmů na všech vytvořených umělých datech jsem se rozhodla pro jednotlivé algoritmy zvolit nejvhodnější editační algoritmus. Algoritmy CNN, RNN, Prototypy a RSP3 budu dále testovat a porovnávat jejich výsledky na umělých a reálných datech s pouţitím trénovací mnoţiny předzpracované algoritmem All k – NN. Ostatní algoritmy IB3, Chen a RSP1 budu dále testovat a porovnávat jejich výsledky na umělých a reálných datech s pouţitím trénovací mnoţiny předzpracované algoritmem ENN. 8.3.3 Srovnání algoritmů 1 – NN klasifikátor Pro porovnání všech kondenzačních implementovaných algoritmů vycházím z následující tabulky viz Tabulka 3, ve které jsou výsledky implementovaných algoritmů se vstupní editovanou mnoţinou zvolenou v předchozí kapitole (sloupec Editace). Opět jsem u klasifikátoru 1 – NN porovnávala vlastnosti přesnost klasifikace (sloupec Acc[%]) a redukční stupeň (sloupec Size[%]) u jednotlivých, uměle vytvořených, trénovacích mnoţin, kdy jako první uvádím výsledky úplné trénovací mnoţiny (Full data). Tabulka 3: Porovnání algoritmů na umělých datech, 1 – NN klasifikátor Data Algoritmy Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 Zuby Editace Dvě E Šachovnice Whirpool Acc [%] 92,6 Size [%] 0,0 Acc [%] 100,0 Size [%] 0,0 Acc [%] 96,0 Size [%] 0,0 Acc [%] 98,8 Size [%] 0,0 AllKNN 92,6 93,1 96,6 86,8 92,4 88,1 97,7 91,8 AllKNN 93,2 94,0 98,9 89,1 55,1 91,1 97,7 93,0 ENN 88,5 80,7 87,6 82,0 90,3 76,9 95,3 81,5 ENN 98,0 75,8 97,7 62,3 97,0 61,8 99,2 73,3 AllKNN 91,9 91,1 98,9 87,5 93,1 86,7 96,5 88,9 ENN 93,9 86,9 94,4 84,2 44,9 83,8 96,5 84,0 ENN 93,9 86,9 100,0 84,2 47,2 83,8 93,0 84,0 AllKNN 93,2 88,5 100,0 77,5 46,1 86,7 94,2 87,2 --- 73 Testování implementovaných algoritmů U algoritmů Chen a RSP1 jsem pro jednotlivá data nastavila následující velikost výsledné mnoţiny: Zuby Dvě E Šachovnice Whirpool 60 50 140 40 Z naměřených výsledků viz Tabulka 3 je vidět, ţe na datech Zuby byl jednoznačně nejúspěšnější algoritmus DROP3. Klasifikační přesnost 1 – NN klasifikátoru je s pouţitím jeho redukované mnoţiny o 5,4% vyšší neţ přesnost s pouţitím původní neredukované mnoţiny, jejíţ velikost je ale o 75,8 % větší neţ velikost zredukované mnoţiny DROP3 algoritmem. Dalšími algoritmy, které dosáhly vysoké přesnosti, jsou algoritmy Chen a RSP1. Jejich přesnost je zajištěna nastavením počtu instancí výsledné redukované mnoţiny a je na datech Zuby totoţná. Algoritmy RSP3 a RNN dosahují taktéţ vyšší klasifikační přesnosti neţ při pouţití původní trénovací mnoţiny, přičemţ RNN algoritmus ponechává nejmenší redukovanou mnoţinu, pouze 6% instancí původní trénovací mnoţiny. Stejné klasifikační přesnosti jako je přesnost s neredukovanou trénovací mnoţinou dosáhl CNN algoritmus, který ji redukuje o 93,1%. Niţší přesnost mají redukované mnoţiny pouţitím algoritmu IB3 o 4,1% a algoritmu Prototypy o 0,7%. S daty Dvě E si nejlépe vedl algoritmus RSP1 s nastaveným redukčním stupněm na 84,2%. Dosáhl 100% klasifikační přesnosti, které je dosaţeno i s pouţitím původní trénovací mnoţiny. Algoritmus RSP3 také zachovává 100% klasifikační přesnost, ale jeho redukční rate je 77,5 %. Slušné klasifikační přesnosti 98,9% dosáhly algoritmy RNN a Prototypy, kdy RNN algoritmus opět ponechává ze všech algoritmů nejmenší redukovanou mnoţinu, pouze 10,9% instancí původní redukované mnoţiny. Nejniţší klasifikační přesnost má na datech Dvě E redukovaná mnoţina pouţitím algoritmu IB3, která je 87,6%. Se sloţitou rozhodovací hranicí dat Šachovnice jiţ měly některé redukční algoritmy značné problémy. Nejvyšší klasifikační přesnosti dosáhl algoritmus DROP3 a je o 1% vyšší neţ klasifikační přesnost s pouţitím původní trénovací mnoţiny. DROP3 algoritmus ovšem trénovací data redukuje ze všech algoritmů nejméně – o 61,8%. S daty si rozumně poradily i algoritmy CNN, IB3 a Prototypy. I kdyţ je jejich klasifikační přesnost niţší neţ při pouţití úplné trénovací mnoţiny, pohybuje se stále nad hranicí 90%. Algoritmus RNN a algoritmy zaloţené na rozdělování mnoţiny na oblasti RSP1, RSP3 a Chen bohuţel sníţily klasifikační přesnost 1 – NN klasifikátoru k pouhým 50%. Na datech Whirpool si překvapivě vedly všechny redukční metody dobře, i kdyţ vyšší klasifikační přesnosti, neţ je přesnost neredukovaných dat 98,8% dosáhnul pouze algoritmus IB3, který tuto přesnost zvýšil na 99,2%. Algoritmy CNN a RNN měly stejnou klasifikační přesnosti 97,7%, kdy algoritmus RNN zredukoval původní mnoţinu o 1,2 % více neţ algoritmus CNN. Nejniţší přesnosti 93% dosáhnul algoritmus RSP1 s nastaveným redukčním stupněm na 84%. 74 Testování implementovaných algoritmů Nejlepších výsledků v přesnosti klasifikace 1 – NN klasifikátoru na umělých datech dosáhl neadaptivní algoritmus DROP3. Sice na datech Dvě E sníţil klasifikační přesnost s úplnou trénovací mnoţinou o 2,3%, ale u ostatních dat vţdy klasifikační přesnost zvýšil. Jeho redukční rate se pohybuje okolo 70%. Vynikajících výsledků také dosáhly na datech, která nemají příliš komplikovanou rozhodovací hranici, regulovatelné adaptivní algoritmy Chen a RSP1 a adaptivní algoritmus RSP3. Metodu CNN je výhodné pouţít na libovolnou uměle vytvořenou trénovací mnoţinu, klasifikační přesnost příliš nesniţuje a její redukční stupeň se pohybuje okolo 90%. Metoda RNN získává lepší klasifikační přesnosti a vyššího redukčního stupně neţ metoda CNN, ale s daty se sloţitou rozhodovací hranicí si poradit nedokázala. Adaptivní algoritmus Prototypy dokázal na všech datech zachovat vyšší klasifikační přesnost neţ 91%, ale nikdy nedosáhl stejné, ani vyšší klasifikační přesnosti, jaká byla získána s pouţitím neredukované trénovací mnoţiny. Poslední metoda IB3 podávala na většině dat nejhorší výsledky, ale i na datech Šachovnice její klasifikační přesnost nebyla niţší neţ 87,6%. Neuronová síť GAME Pro porovnání všech implementovaných algoritmů vycházím z následující tabulky viz Tabulka 4, ve které jsou výsledky implementovaných algoritmů na vytvořených umělých datech se vstupní editovanou mnoţinou zvolenou v předchozí kapitole (sloupec Editace). U Neuronové sítě GAME jsem porovnávala vlastnosti přesnost klasifikace (sloupec Acc[%]) a čas potřebný na vytvoření modelu (sloupec Time[%]), kdy jako první uvádím výsledky s pouţitím úplné trénovací mnoţiny (Full data). Tabulka 4: Porovnání algoritmů na umělých datech, neuronová síť GAME Data Zuby Dvě E Acc [%] 91,8 Time [ms] 43520 AllKNN 73,6 AllKNN Šachovnice 74,1 Time [ms] 26147 81,2 Time [ms] 90728 2588 89,9 3617 50,1 68,2 2353 98,8 3753 ENN 82,4 8226 69,6 ENN 82,4 15216 AllKNN 83,7 ENN Whirpool 84,1 Time [ms] 26150 5621 81,4 1963 58,1 5159 74,4 1375 7101 76,1 36239 95,5 5768 98,9 12285 69,3 23333 96,5 6855 4265 83,1 4413 63,1 7978 90,7 2793 87,1 6031 82 4918 70 14038 89,5 4610 ENN 85,1 6284 86,5 7556 66 15430 93 4826 AllKNN 85,8 6123 95,5 8780 68,2 9161 86 3226 Algoritmy Editace Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 --- Acc [%] Acc [%] Acc [%] U algoritmů Chen a RSP1 jsem pro jednotlivá data nastavila stejnou velikost výsledné mnoţiny, jako jsem nastavila u testování klasifikátoru 1 – NN viz výše. V tabulce viz Tabulka 4 na datech Zuby můţeme sledovat, ţe redukční metody jsou při klasifikaci neuronovou sítí GAME méně úspěšné neţ u klasifikace 1 – NN klasifikátorem. Nejvyšší klasifikační přesnosti dosahuje GAME s pouţitím původní trénovací mnoţiny, 75 Testování implementovaných algoritmů ovšem vybudování modelu sítě trvá nejdéle. Z redukčních algoritmů nejvyšší klasifikační přesnosti dosahuje Chenův algoritmus, a jeho klasifikace je o 4,7% niţší neţ je přesnost klasifikace s pouţitím úplné trénovací mnoţiny, ale model sítě je s redukovanou mnoţinou vytvořen 7 krát rychleji. Klasifikace vyšší neţ 85% dosáhla GAME s pouţitím algoritmů, které jsou postaveny na stejném principu jako Chen, tudíţ algoritmů RSP1 a RSP2. Algoritmy DROP3, Prototypy a IB3 mají klasifikační přesnost nad 80%. Nejhůře dopadly algoritmy CNN a RNN, kdy CNN algoritmus dosahuje 73,6% úspěšnosti a RNN algoritmus pouze 68,2%. Na druhé straně na datech Dvě E redukční metody při klasifikaci neuronovou sítí GAME měly lepší výsledky, neţ při klasifikaci 1 – NN klasifikátorem. Aţ na algoritmus IB3 byly všechny pouţité redukční metody ohodnoceny GAME sítí lépe, neţ při pouţití úplné trénovací mnoţiny. Nejlépe uspěl algoritmus DROP3, který klasifikační přesnost oproti klasifikaci s původní neredukovanou trénovací mnoţinou zvýšil o 24%, přičemţ sníţil dobu potřebnou pro vybudování modelu sítě o 53%. Klasifikační přesnosti o 0,1% niţší dosáhl algoritmus RNN, u kterého navíc výstavba modelu sítě trvala jen 14,35% času, který potřebovala síť GAME s pouţitím úplné trénovací mnoţiny. Vysoké klasifikační přesnosti (95,5%) dosáhl algoritmus RSP3, který také trojnásobně zrychlil proces učení. CNN algoritmus byl ohodnocen téměř 90% úspěšností. Algoritmy Prototypy, Chen a RSP1 udrţují klasifikační mez nad 80%. Nejhůře dopadl jiţ zmiňovaný algoritmus IB3, který dosáhl pouhé 69,6% přesnosti. I v hodnocení neuronové sítě GAME se projevily značné problémy některých redukčních algoritmů se sloţitou rozhodovací hranicí dat Šachovnice. Opět ani jeden z pouţitých algoritmů nezvyšuje klasifikační přesnost sítě GAME s pouţitím neredukovaných dat. Nejhorší klasifikační přesnost na těchto datech má algoritmus CNN, pouze 50,1%. Překvapivě nejlepšího výsledku dosáhl algoritmus IB3 jehoţ úspěšnost je o 5,1% niţší neţ při pouţití úplné trénovací mnoţiny, ale model sítě je postaven 2,5 krát rychleji. Klasifikační přesnosti ostatních algoritmů se pohybují od 60 – 70%. Na datech Whirpool je opět většina redukčních algoritmů velmi úspěšná. Pouze algoritmy CNN a RNN dosahují niţší přesnosti neţ je získána pouţitím úplné trénovací mnoţiny. Jejich klasifikační přesnost ovšem není niţší neţ 74,4%. GAME nejpřesněji klasifikuje opět s pouţitím redukované mnoţiny algoritmem DROP3, kdy je přesnost rovna 96,5%. Dobu učení zrychluje 3,8 krát. O 1% niţší klasifikace dosahuje algoritmus IB3, kdy je proces budování sítě 4,5 krát rychlejší neţ při pouţití úplné redukované mnoţiny. Přesnosti vyšší neţ 90% dosahuje také algoritmus RSP1. Algoritmus Chen je úspěšnější o 5,4% neţ při pouţití plné trénovací mnoţiny a algoritmus RSP3 má lepší klasifikaci o 1,9%. Nejlepších výsledků v přesnosti klasifikace neuronové sítě GAME na umělých datech dosáhl algoritmus DROP3. Nebyl sice tolik úspěšný jako při klasifikaci 1 – NN klasifikátorem, ale na datech Dvě E a Whirpool dosáhl nejvyšší klasifikační přesnosti. Dále byl úspěšný algoritmus IB3, který na datech Zuby a Whirpool dosahoval vysoké přesnosti a na datech Šachy se sloţitou rozhodovací hranicí byl nejpřesnější. Dobré klasifikační přesnosti 76 Testování implementovaných algoritmů dosáhly také všechny neadaptivní algoritmy Prototypy, Chen, RSP1 a RSP3. Za to adaptivní algoritmy CNN a RNN nedosahovaly dobrých výsledků na ţádných umělých datech kromě dat Dvě E. 8.4 Redukce reálných dat K ověření pouţitelnosti implementovaných algoritmů na reálných datech jsem zvolila dataset proteinů Ecoli, který má ze všech reálných mnoţin nejvíce tříd (8), data k měření radarových odrazů Ionosphere, která se vyznačují vysokým počtem atributů, EKG záznamy srdečních stahů, data Mandarinky popisující mnoţství vody zkonzumované mandarinkovým stromem a data Glass, která slouţí k popisu typů skel. Podrobnější popis pouţitých reálných dat naleznete v kapitole 8.1.2. Testovací a trénovací data jsem získala stejným způsobem jako v případě reálných dat. Do trénovací mnoţiny jsem náhodně vybrala 75% dat z původních dat. Zbylých 25% dat jsem pouţila pro testovací mnoţinu. 8.4.1 Srovnání algoritmů 1 – NN klasifikátor Pro porovnání všech implementovaných algoritmů vycházím z následující tabulky viz Tabulka 5, ve které jsou výsledky implementovaných algoritmů na reálných datech se vstupní editovanou mnoţinou zvolenou v předchozí kapitole (sloupec Editace). Opět jsem u klasifikátoru 1 – NN porovnávala vlastnosti přesnost klasifikace (sloupec Acc[%]) a redukční stupeň (sloupec Size[%]) jednotlivých trénovacích mnoţin, kdy jako první uvádím výsledky úplné trénovací mnoţiny (Full data). Tabulka 5: Porovnání algoritmů na reálných datech, 1 – NN klasifikátor Data Algoritmy Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 Ecoli EKG Glass Ionosphere Mandarinky --- Acc [%] 84,0 Size [%] 0,0 Acc [%] 96,7 Size [%] 0,0 Acc [%] 72,1 Size [%] 0,0 Acc [%] 82,9 Size [%] 0,0 Acc [%] 89,8 Size [%] 0,0 AllKNN 84,0 90,8 96,2 97,3 72,1 89,5 79,2 94,0 56,2 91,9 AllKNN 84,0 93,8 96,1 98,0 72,1 89,5 75,6 96,6 64,3 93,0 ENN 84,0 88,1 95,9 83,5 75,4 82,3 84,1 82, 67,0 80,8 ENN 84,0 84,6 94,9 94,9 77,0 74,5 82,9 89,9 63,0 83,8 AllKNN 81,3 90,4 99,7 91,5 65,5 86,2 81,7 87,7 63,8 92,5 ENN 89,3 77,0 96,2 88,9 73,7 60,7 86,5 79,5 68,5 64,9 ENN 89,3 77,0 96,2 88,9 72,1 60,7 86,5 79,5 68,5 64,9 AllKNN 88,0 88,5 96,1 96,1 73,7 81,0 85,3 86,2 62,8 91,0 Editace 77 Testování implementovaných algoritmů U algoritmů Chen a výsledné mnoţiny: Ecoli EKG Glass Ionosphere Mandarinky RSP1 jsem pro jednotlivá reálná data nastavila následující velikost 60 550 60 55 1100 S daty Ecoli si nejlépe poradily adaptivní algoritmy. Algoritmy RSP1 a Chen dosáhly nejvyšší klasifikační přesnosti, která je o 5,3% vyšší neţ při klasifikaci s pouţitím úplné trénovací mnoţiny, díky nastavení poměrně nízkého redukčního stupně. Algoritmus RSP3, který taktéţ rozděluje data na oblasti jako algoritmy RSP1 a Chen, také nezůstal po zadu a dosahuje klasifikační přesnosti jen o 1,3 % niţší, ale jeho redukční stupeň je 88%. Poslední adaptivní algoritmus Prototypy má sice nejniţší klasifikační přesnost ze všech implementovaných algoritmů, ale její sníţení není příliš markantní. Všechny neadaptivní algoritmy dosáhly stejné klasifikační přesnosti, která je rovna klasifikační přesnosti dosaţené s pouţitím původní trénovací mnoţiny. Jejich redukční rate se pohybuje od 84,6% do 93,8% velikosti původní trénovací mnoţiny. U dat Ecoli byl nejúspěšnější algoritmus Prototypy, jehoţ klasifikační přesnost byla o 3% vyšší neţ při klasifikování s úplnou trénovací mnoţinou. Redukované mnoţiny metodami Chen, RSP1 a CNN dosáhly stejné klasifikační přesnosti, která je o 0,5% niţší neţ při pouţití neredukovaných dat. CNN algoritmus navíc původní mnoţinu zredukoval o 97,3%. Klasifikační úspěšnost o 0,1% horší mají algoritmy RNN a RSP3, kdy RNN algoritmus zredukoval původní data ze všech nejvíce. Jeho redukční stupeň je 98% původní velikosti. Nejméně úspěšné byly algoritmy DROP3 a IB3, ale jejich klasifikační přesnost neklesla pod 94,9%. Na datech Glass selhal pouze algoritmus Prototypy, který dosáhl klasifikace o 6,6% niţší neţ při pouţití úplné trénovací mnoţiny. Nejvyšší klasifikační přesnost má algoritmus DROP3, který přesnost s pouţitím neredukované trénovací mnoţiny zlepšuje o 4,9%. Dobré klasifikační přesnosti dosáhl také algoritmus IB3. Jeho přesnost je o 3,3% vyšší neţ přesnost s původní mnoţinou dat. Algoritmy Chen a RSP3 taktéţ vylepšuji klasifikační přesnost s úplnou trénovací mnoţinou a to o 1,6%. Algoritmy RSP1, CNN a RNN zachovávají stejnou klasifikační přesnost jaké je dosaţeno s pouţitím neredukovaných dat, kdy algoritmus RNN a CNN redukují původní mnoţinu nejvíce, zanechávají pouze 9,5%. S vysokým počtem atributů u dat Ionosphere, si nejlépe poradily algoritmy Chen a RSP1. Je to opět díky nastavenému nízkému redukčnímu stupni. Tyto algoritmy klasifikační úspěšnost s pouţitím původní mnoţiny vylepšují o 3,6%. Algoritmus RSP3 také vylepšuje klasifikační přesnost oproti neredukovaným datům a to o 2,8%. Úspěšný je také algoritmus IB3, který je v klasifikaci o 1,2% horší neţ algoritmus RSP3. Pouţitím redukované mnoţiny algoritmem DROP3 dosahuje klasifikátor 1 – NN stejné přesnosti jako s úplnou mnoţinou, 78 Testování implementovaných algoritmů přičemţ algoritmus DROP3 redukuje trénovací mnoţinu o 89,9%. Niţší klasifikační přesnosti dosahují algoritmy CNN, RNN a Prototypy, která ovšem neklesá pod 75,6%. Na datech Mandarinky nedosahuje ani jeden z implementovaných redukčních algoritmů uspokojivých výsledků. Nejlepší klasifikační přesnosti dosáhly algoritmy Chen a RSP1. Jejich přesnost je však o 21,3% niţší neţ při pouţití neredukované trénovací mnoţiny. O 1,5% horší klasifikační přesnosti neţ algoritmy Chen a RSP1 dosáhl algoritmus IB3, který původní mnoţinu redukuje o 80,8%. Algoritmy RSP3, DROP3 a RNN zachovávají klasifikační přesnost vyšší neţ 62,8%. Algoritmus CNN dosahuje pouhých 56,2% klasifikační přesnosti. Nejlepších výsledků na všech reálných datech bylo dosaţeno s pouţitím regulovatelných adaptivních algoritmů Chen a RSP1, které měly na všech datech dobrou klasifikační přesnost, i kdyţ na úkor redukčního stupně. Algoritmus RSP3, který sice není regulovatelný, ale je postaven na podobném principu jako algoritmy Chen a RSP1, také dosahoval na všech reálných datech vynikajících výsledků. Dále byl úspěšný algoritmus IB3, který pouze na datech EKG a Mandarinky nebyl 1 – NN klasifikátorem ohodnocen lépe, neţ při pouţití úplné trénovací mnoţiny. Algoritmus DROP3 dosahoval nepatrně niţší klasifikační přesnosti na datech Ecoli, EKG, Ionosphere a Mandarinky neţ algoritmus IB3. Na datech Glass byl ze všech algoritmů nejúspěšnější. Algoritmus Prototypy dosahoval dobrých výsledků na datech EKG, Ionosphere a Ecoli. Algoritmy CNN a RNN si dobře vedly s daty Ecoli, EKG a Glass, příliš mnoho atributů u dat Ionosphere nebyly schopny dostatečně zpracovat. Neuronová síť GAME Pro porovnání všech implementovaných algoritmů vycházím z následující tabulky viz Tabulka 6, ve které jsou výsledky implementovaných algoritmů na reálných datech se vstupní editovanou mnoţinou zvolenou v předchozí kapitole (sloupec Editace). U Neuronové sítě GAME jsem porovnávala vlastnosti přesnost klasifikace (sloupec Acc[%]) a čas potřebný na vytvoření modelu (sloupec Time[%]), kdy jako první uvádím výsledky s pouţitím úplné trénovací mnoţiny (Full data). Tabulka 6: Porovnání algoritmů na reálných datech, neuronová síť GAME Data Algoritmy Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 Ecoli EKG Glass Ionosphere Mandarinky --- Acc [%] 85,3 Time [ms] 59363 Acc [%] 93,7 Time [ms] 259051 Acc [%] 44,2 Time [ms] 46935 Acc [%] 90,2 Time [ms] 27481 Acc [%] 59,0 Time [ms] 419336 AllKNN 86,7 4881 93,7 16409 47,5 2687 46,3 1256 43,1 53191 AllKNN 82,6 3036 87,0 13188 37,7 2820 73,1 777 50,0 57125 ENN 66,7 5563 93,9 54482 39,3 6525 86,5 2341 61,3 100564 ENN 76,0 10360 88,3 31672 47,5 6061 84,1 966 48,7 103886 AllKNN 82,7 4618 93,3 29175 37,7 4310 64,6 2078 55,0 59740 ENN 88,0 12232 93,7 38590 52,5 14762 82,9 3105 61,4 147646 ENN 84,0 12217 93,9 36780 47,5 15673 86,5 3117 61,0 150102 AllKNN 81,3 5116 92,5 24124 19,6 12399 84,1 1971 54,0 70278 Editace 79 Testování implementovaných algoritmů U algoritmů Chen a RSP1 jsem pro jednotlivá data nastavila stejnou velikost výsledné mnoţiny, jako jsem nastavila u testování klasifikátoru 1 – NN na reálných datech viz výše. V tabulce viz Tabulka 6 u dat Ecoli je patrné ţe nejlepší klasifikační přesnosti dosáhl algoritmus Chen, díky niţšímu redukčnímu stupni. Zvyšuje klasifikační přesnost sítě Game o 2,7% oproti pouţití úplné trénovací mnoţiny. Lepšího výsledku ovšem dosáhl algoritmus CNN, který zvyšuje klasifikační přesnost proti neredukovaným datům o 1,4%, ale čas potřebný na výstavbu sítě sniţuje o 91,78%. Algoritmus RNN tento čas sniţuje ještě více, ale má také niţší klasifikační přesnost. Algoritmy RSP3, Chen, RSP1 a Prototypy mají niţší klasifikační přesnost neţ je dosaţena s pouţitím neredukované trénovací mnoţiny, ale je vyšší neţ 81,3%. Redukovaná mnoţina algoritmem DROP3 byla neuronovou sítí klasifikována se 76% úspěšností. Nejhůře dopadl algoritmus IB3, který má klasifikační přesnost 66,7%. Naproti tomu IB3 algoritmus na datech EKG dosahuje nejlepší klasifikační přesnosti, která je o 0,2% lepší neţ při pouţití neredukovaných dat a sniţuje čas potřebný na vybudování modelu sítě o 78,9%. Stejné klasifikační přesnosti dosáhl algoritmus RSP1, který čas potřebný na vybudování modelu sítě sniţuje o 85,8%. Stejné klasifikační přesnosti jako je při pouţití původní trénovací mnoţiny dosáhly algoritmy CNN a Chen. CNN algoritmus opět dosáhnul vysoké početní redukce dat, kdy zanechal pouhých 6,3% původních dat. Neuronová síť GAME s mnoţinou redukovanou algoritmem RSP3 byla o 1,8% méně úspěšná neţ při pouţití úplné trénovací mnoţiny. Algoritmy RNN a DROP3 mají niţší klasifikační přesnost, která ovšem není niţší neţ 87%. Data Glass jsou neuronovou sítí GAME klasifikována s nízkou přesností, která je s pouţitím úplné trénovací mnoţiny rovna 44,2%. Tato přesnost s pouţitím 1 – NN klasifikátoru byla podstatně vyšší a to 72,1%. Na datech Glass dosahuje opět nejlepší klasifikační přesnosti algoritmus Chen, který původní klasifikační přesnost zvyšuje o 11,3% a čas potřebný na vybudování sítě sniţuje o 68,6%. Algoritmy CNN, DROP3 a RSP1 dosahují stejné klasifikační přesnosti, která je o 3,3% vyšší neţ při pouţití úplné trénovací mnoţiny. IB3 algoritmus dosahuje klasifikační přesnosti o 4,9% niţší neţ neredukovaná data. Nízké klasifikační přesnosti dosahují algoritmy RNN a Prototypy. Nejhůře ovšem dopadl adaptivní algoritmus RSP3, jehoţ redukovaná mnoţina je správně ohodnocena pouze v 19,6% případů. Po redukci dat Ionosphere s vysokým počtem atributů neuronová síť nedosáhla ani s jednou redukovanou trénovací mnoţinou stejné nebo vyšší klasifikační přesnosti jako s pouţitím úplné trénovací mnoţiny. Nejvyšší klasifikační přesnosti dosáhly algoritmy RSP1 a IB3 a je o 3,7% horší neţ při pouţití původních dat. Na druhé straně tyto algoritmy opět rapidně zrychlují proces vytváření modelu sítě. Algoritmy DROP3 a RSP3 dosáhly o 2,4% niţší klasifikační přesnosti neţ algoritmy RSP1 a IB3. Klasifikační přesnosti 82,9% dosáhl Chenův algoritmus. Zajímavé jistě je, ţe RNN algoritmus dosáhnul klasifikační přesnosti 73,1% a algoritmus CNN, který dopadl ze všech implementovaných metod nejhůře, klasifikační přesnosti pouhých 46,3%. Můţe to být zapříčiněno náhodným výběrem instance 80 Testování implementovaných algoritmů u CNN algoritmu, kdy RNN algoritmus můţe zpracovávat jinou konzistentní mnoţinu. Algoritmus Prototypy taktéţ dosáhl nízké klasifikační přesnosti 64,6%. Na datech Mandarinky byly s pouţitím neuronové sítě GAME redukované mnoţiny ohodnoceny lépe neţ s pouţitím 1 – NN klasifikátoru. Velký podíl na tom nese fakt, ţe data Mandarinky jsou neuronovou sítí GAME klasifikována s nízkou přesností, která je s pouţitím úplné trénovací mnoţiny rovna pouhým 59%. Nejvyšší klasifikační přesnosti dosáhl algoritmus Chen. Jeho úspěšnost je o 2% vyšší neţ s pouţitím neredukovaných dat. Jen o 0,1% niţší úspěšnost má algoritmus IB3, který původní čas na vybudování sítě sniţuje o 76%. Posledním algoritmem, jehoţ redukovaná mnoţina má vyšší přesnost neţ mnoţina původní, je algoritmus RSP1. Algoritmy RSP3, Prototypy a RNN mají klasifikační přesnost vyšší neţ 50%. Algoritmy DROP3 a CNN dopadly nejhůře. Jejich klasifikační přesnost je vyšší neţ 43,4%. Nejlepších výsledků na všech reálných datech bylo při klasifikaci neuronovou sítí GAME dosaţeno s pouţitím regulovatelných adaptivních algoritmů Chen a RSP1 stejně jako u klasifikátoru 1 – NN. Tyto algoritmy měly na všech datech dobrou klasifikační přesnost, i kdyţ na úkor redukčního stupně. Algoritmus RSP3, zaloţený na podobném principu, dosahoval na datech Glass a Mandarinky velmi špatných výsledků. Na ostatních datech si vedl o něco hůře neţ algoritmy Chen a RSP1. Pouţití IB3 algoritmu nedopadlo dobře na datech Ecoli a Glass, ale algoritmus dosáhl nejvyšší klasifikace ze všech na datech EKG, Ionosphere a Mandarinky. Redukovaná mnoţina CNN algoritmem nebyla dobře klasifikována na datech Ionoshpere a Mandarinky. Opět se ukazuje, ţe je CNN algoritmus citlivý na velké mnoţství atributů. RNN algoritmus dosahuje horších výsledků neţ CNN algoritmus, jen na datech Ionosphere byla jeho redukovaná mnoţina dat znatelně lepší. Algoritmus DROP3 nedosahoval na většině dat převratných výsledků. Jen na datech Glass byla jeho redukovaná mnoţina klasifikována lépe neţ původní trénovací mnoţina. Redukovaná mnoţina algoritmem Prototypy nebyla klasifikována stejně či lépe neţ úplná trénovací mnoţina na ţádných datech, stejně jako redukovaná mnoţina algoritmem RNN. Neuronová síť GAME s alternativním nastavením Při učení jednotlivých neuronů v neuronové síti GAME se nemusí pouţívat celá trénovací mnoţina. Pokud je trénovací mnoţina příliš velká, z časových důvodů se pro trénování kaţdého neuronu znovu náhodně vybere předem daný počet instancí z trénovací mnoţiny a pouţijí se pro učení neuronu. Ve standardní konfiguraci, která byla pouţita v předchozích částech, je velikost trénovací mnoţiny pro jednotlivé neurony nastavena na 200 instancí. Toto nastavení bylo pouţito z časových důvodů. Pro ilustraci jsem ale provedla jeden experiment s neomezenou velikostí trénovací mnoţiny pro jednotlivé neurony, ostatní nastavení jsem nechala stejná. Pro tento experiment jsem si vybrala data s největším počtem instancí – EKG, kde budou rozdíly nejlépe vidět. 81 Testování implementovaných algoritmů Tabulka 7: Neuronová síť GAME s alternativním nastavením EKG Data Algoritmy Editace Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 --AllKNN AllKNN ENN ENN AllKNN ENN ENN AllKNN Počet instancí 5000 135 95 824 255 427 550 550 197 Alternativní Původní nastavení Změna času nastavení Acc Time Acc Time [%] [ms] [%] [ms] [%] 94,2 403124 93,7 259051 155,6 93,4 15437 93,7 16409 94 87 12081 87 13188 91,6 94 74882 93,9 54482 137,4 88,4 31596 88,3 31672 99,8 93,5 43560 93,3 29175 149,3 93,7 57026 93,7 38590 147,8 93,8 47085 93,9 36780 128 93,8 25954 92,5 24124 107,6 Z výsledků viz Tabulka 7 je vidět, ţe přesnosti modelů se téměř neliší. Čili změna velikosti trénovací mnoţiny pro jeden neuron se nijak neprojeví na přesnosti. Naproti tomu změna doby potřebné k vytvoření modelů je v některých případech značná. U kondenzačních metod RNN, CNN, DROP3 a RSP3 opět nejsou ţádné podstatné změny. Největší změna je vidět u kondenzační metody RNN, kde došlo ke zkrácení průměrného času potřebného k postavení sítě o 8,6%. U ostatních kondenzačních metod jsou změny ještě menší. Tyto změny jsou způsobeny náhodným procesem tvorby sítě a jsou na hranici statistické rozlišitelnosti. U trénovacích mnoţin redukovaných ostatními kondenzačními algoritmy jsou ale změny daleko výraznější. Nejmenší změna času je u algoritmu RSP1, kde došlo k nárůstu času potřebného k tvorbě sítě o 28%. U kondenzačního algoritmu IB3 se v novém nastavení čas prodlouţil o 37% původního času. Mnoţiny redukované kondenzačními algoritmy Chen a Prototypy potřebují k vytvoření sítě o polovinu delší čas, neţ v původním nastavení. Dle očekávání je největší nárůst u plné trénovací mnoţiny – konkrétně na 155,6% původního času. Důvodem pro tyto výsledky je fakt, ţe kondenzační algoritmy RNN, CNN, DROP3 a RSP3 produkují trénovací mnoţiny, které obsahují méně neţ 200 instancí (nebo o málo více) a nastavení maximální velikosti trénovací mnoţiny pro jeden neuron se neprojeví. Ostatní kondenzační algoritmy ponechávají v trénovací mnoţině více instancí. V původním nastavení se pak při učení jednotlivých neuronů automaticky vybere pouze část instancí a učení je pak rychlejší. V alternativním nastavení k automatickému výběru nedochází a učení pak trvá déle. Poněkud mě překvapuje, ţe učení s plnou trénovací mnoţinou se prodlouţilo jen o 55%, tedy stejně jako mnohem menší, kondenzované, mnoţiny. Pro tento fakt, ale nemám vysvětlení. 82 Testování implementovaných algoritmů 8.5 Testování úspěšnosti algoritmu MergeAllInstances Při testování úspěšnosti jednotlivých algoritmů klasifikátorem 1 – NN a nerunovou sítí GAME jsem se rozhodla navrhnout vlastní redukční algoritmus. Vyšla jsem z faktu, ţe implementované kondenzační algoritmy sice markantně redukují velikost trénovací mnoţiny, ale ne vţdy dokáţí zaručit stejnou či lepší klasifikační přesnost, které je dosaţeno s neredukovanými daty. Zkusila jsem tedy nad původní trénovací mnoţinou spustit všechny neadaptivní algoritmy (CNN, RNN, IB3 a DROP3), kdy si kaţdý z nich nejprve trénovací mnoţinu upraví zvoleným editačním algoritmem viz kapitola x, a získané redukované mnoţiny jednotlivých algoritmů spojit do jedné výsledné redukované mnoţiny. Tímto způsobem sice sniţuji redukční stupeň, ale očekávám zajištění vyšší klasifikační přesnosti na většině dat. U jednotlivých algoritmů jsem nastavila stejné parametry, jako jsem pouţila při jejich testování. Parametr počet nejbliţších sousedů u algoritmu CNN a RNN jsem nastavila na 1. U algoritmu IB3 jsem meze spolehlivosti nastavila na 0,7 a 0,9 a prvotní náhodný výběr na 0,2. Počet nejbliţších sousedů u algoritmu DROP3 jsem nastavila na 3. 8.5.1 MergeAllInstances Klasifikátor 1 – NN Pro porovnání výsledků vlastního algoritmu s výsledky všech implementovaných kondenzačních algoritmů vycházím z následující tabulky viz Tabulka 8. Algoritmy testuji na uměle vytvořených datech. Zvolené editační algoritmy jsou opět vypsány ve sloupci Editace. U klasifikátoru 1 – NN porovnám vlastnosti přesnost klasifikace (sloupec Acc[%]) a redukční stupeň (sloupec Size[%]) jednotlivých trénovacích mnoţin, kdy jako první uvádím výsledky úplné trénovací mnoţiny (Full data). Tabulka 8: Porovnání vlastního kondenzačního algoritmu, 1 – NN klasifikátor Data Zuby Dvě E Šachovnice Whirpool Acc [%] 92,6 Size [%] 0,0 Acc [%] 100,0 Size [%] 0,0 Acc [%] 96,0 Size [%] 0,0 Acc [%] 98,8 Size [%] 0,0 AllKNN 92,6 93,1 96,6 86,8 92,4 88,1 97,7 91,8 AllKNN 93,2 94,0 98,9 89,1 55,1 91,1 97,7 93,0 ENN 88,5 80,7 87,6 82,0 90,3 76,9 95,3 81,5 ENN 98,0 75,8 97,7 62,3 97,0 61,8 99,2 73,3 AllKNN 91,9 91,1 98,9 87,5 93,1 86,7 96,5 88,9 ENN 93,9 86,9 94,4 84,2 44,9 83,8 96,5 84,0 ENN 93,9 86,9 100,0 78,5 47,2 83,8 93,0 84,0 AllKNN 93,2 88,5 100,0 77,5 46,1 86,7 94,2 87,2 --- 97,8 72,5 99,7 53,2 96,8 59,8 99,2 65,0 Algoritmy Editace Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 MergeAll --- 83 Testování implementovaných algoritmů U algoritmů Chen a RSP1 jsem pro jednotlivá data nastavila následující velikost výsledné mnoţiny: Zuby 60 Dvě E 50 Šachovnice 140 Whirpool 40 Na datech Zuby algoritmus MergeAllInstances dosahuje velmi dobré klasifikační přesnosti, která je o 5,2% vyšší neţ při pouţití úplné trénovací mnoţiny. Více úspěšný je ovšem algoritmus DROP3, který má klasifikační přesnost o 0,2% vyšší. MergeAllInstances ponechává ze všech pouţitých redukčních algoritmů největší mnoţinu, redukuje o 75,5%. Na datech Dvě E byl algoritmus MergeAllInstances také úspěšný. Jeho klasifikační přesnost je 99,7% coţ je o 0,3% méně neţ při pouţití původní trénovací mnoţiny. Redukční stupeň má poměrně nízký pouze 53,2%. Podotýkám, ţe algoritmy RSP1 a RSP3 dosáhly klasifikační přesnosti 100% a navíc redukovaly přes 77,5% původních dat. Na druhé straně klasifikační přesnost MergeAllInstances jen na datech Dvě E vyšší neţ přesnost DROP3 algoritmu. Na datech Šachovnice má algoritmus MergeAllInstances také vyšší klasifikační přesnost neţ při pouţití úplných dat a to o 0,8%. Redukční rate má 59,8%. Redukovaná mnoţina algoritmem DROP3 je při klasifikaci 1 – NN algoritmem opět úspěšnější, ale pouze o 0,2%. Navíc redukuje o 2% více dat. Na datech Whirpool má algoritmus MergeAllInstances nejlepší úspěch. Dosahuje nejvyšší klasifikační přesnosti. Stejné klasifikační přesnosti dosáhl i algoritmus DROP3, který ale opět redukuje větší počet instancí a to o 8,3% více neţ algoritmus MergeAllInstances. Vlastní algoritmus MergeAllInstances sice nedosahuje na všech datech nejlepší klasifikační přesnosti, ale byl úspěšný na všech datech. Jen na datech Dvě E nedosáhl stejné či vyšší klasifikační přesnosti, která byla dosaţena s pouţitím úplné trénovací mnoţiny. Hlavní nevýhodou MergeAllInstances algoritmu oproti ostatním redukčním metodám je, ţe redukuje s nejniţším redukčním stupněm. Neuronová síť GAME Pro porovnání výsledků vlastního algoritmu s výsledky všech implementovaných kondenzačních algoritmů vycházím z následující tabulky viz Tabulka 9. U Neuronové sítě GAME jsem porovnávala vlastnosti přesnost klasifikace (sloupec Acc[%]) a čas potřebný na vytvoření modelu (sloupec Time[%]), kdy jako první uvádím výsledky s pouţitím úplné trénovací mnoţiny (Full data). 84 Testování implementovaných algoritmů Tabulka 9: Porovnání vlastního kondenzačního algoritmu, neuronová síť GAME Data Zuby Dvě E Acc [%] 91,8 Time [ms] 43520 AllKNN 73,6 AllKNN Šachovnice 74,1 Time [ms] 26147 81,2 Time [ms] 90728 2588 89,9 3617 50,1 68,2 2353 98,8 3753 ENN 82,4 8226 69,6 ENN 82,4 15216 AllKNN 83,7 ENN Whirpool 84,1 Time [ms] 26150 5621 81,4 1963 58,1 5159 74,4 1375 7101 76,1 36239 95,5 5768 98,9 12285 69,3 23333 96,5 6855 4265 83,1 4413 63,1 7978 90,7 2793 87,1 6031 82 4918 70,0 14038 89,5 4610 ENN 85,1 6284 86,5 7556 66,0 15430 93,0 4826 AllKNN 85,8 6123 95,5 8780 68,2 9161 86,0 3226 --- 83,8 14530 97,8 19396 73,6 24966 98,8 10425 Algoritmy Editace Full data CNN RNN IB3 DROP3 Prototypy Chen RSP1 RSP3 MergeAll --- Acc [%] Acc [%] Acc [%] U algoritmů Chen a RSP1 jsem pro jednotlivá data nastavila stejnou velikost výsledné mnoţiny, jako jsem nastavila u testování klasifikátoru 1 – NN na uměle vytvořených datech viz výše. Na datech Zuby algoritmus MergeAllInstances s pouţitím neuronové sítě GAME nedosahuje tak dobrých výsledků jako s klasifikátorem 1 – NN. Jeho klasifikační přesnost je niţší neţ klasifikační přesnost s pouţitím úplné trénovací mnoţiny. Ovšem zvyšuje nejvyšší klasifikační přesnost dosaţenou neadaptivními algoritmy o 1,4%. Adaptivní algoritmy Chen, RSP1 a RSP3 byly na datech Zuby úspěšnější. Čas na vybudování sítě je s pouţitím MergeAllInstances algoritmu třikrát rychlejší neţ s pouţitím úplných dat. U dat Dvě E dosahuje o 23,7% vyšší klasifikační přesnosti oproti pouţití původní mnoţiny. Vyšší klasifikační přesnosti dosáhly neadaptivní algoritmy DROP3 a RNN. S redukovanou trénovací mnoţinou MergeAllInstances algoritmem je proces učení urychlen pouze 1,4 krát. Za to redukovaná trénovací mnoţina algoritmem RNN urychluje učící proces Navíc algoritmus MergeAllInstances urychluje budování sítě 7 krát. Na datech Šachovnice se sloţitou rozhodovací hranicí dosáhl MergeAllInstances algoritmus výborného výsledku. Sice je jeho klasifikační přesnost o 7,6% niţší neţ s pouţitím úplné trénovací mnoţiny dat, ale je to druhá nejvyšší klasifikační přesnost dosaţená s pouţitím redukovaných dat. Nejvyšší klasifikační přesnosti dosáhl algoritmus IB3, jehoţ přesnost je o 2,5% vyšší neţ přesnost MergeAllInstances algoritmu. Neuronové síti GAME však trvalo vytvoření sítě delší dobu s redukovanou mnoţinou IB3 algoritmu neţ s redukovanou mnoţinou algoritmu MergeAllInstances. Na datech Whirpool dosáhl MergeAllInstances algoritmus nejvyšší klasifikační přesnosti, která je o 14,7% vyšší neţ při učení s neredukovanou trénovací mnoţinou. Čas na vybudování sítě zkracuje MergeAllInstances algoritmus 2,5 krát. Algoritmus IB3, který dosahuje klasifikační přesnosti o 3,3% niţší, zkracuje čas učícího procesu 4,5 krát. 85 Testování implementovaných algoritmů Z výsledků neuronové sítě na uměle vytvořených datech taktéţ vyplývá, ţe MergeAllInstances algoritmus sice na všech datech dosahuje dobré klasifikační přesnosti, ale oproti ostatním redukčním algoritmům je jeho redukovaná mnoţina větší a tudíţ tolik nezkracuje proces výstavby sítě. 8.6 Testování vlivu na rozdělení dat V této části popisuji vliv redukčních metod na statistické vlastnosti dat. K tomu jsem si vygenerovala speciální data se zadanými statistickými vlastnostmi. Pro jednoduchost jsem pouţila dvě třídy dvou dimenzionálních dat vygenerovaných s normálním rozdělením, viz Obrázek 37. Toto rozdělení jsem zvolila také proto, ţe mohu pouţít dobře známé statistické testy pro normální rozdělení. V datech musí být přítomny dvě třídy, protoţe redukční metody vyţadují přítomnost alespoň dvou různých tříd. Rozhodla jsem se testovat shodu střední hodnoty a rozptylu originálních a redukovaných dat. Nulová hypotéza tedy bude shoda středních hodnot. 𝐻0 : 𝜇𝑋 = 𝜇𝑌 Pro shodu střední hodnoty pouţívám test o shodě středních hodnot výběrů normálního rozdělení, bez známých rozptylů, neboť předpokládám, ţe redukční metody mohou změnit rozptyl. Tabulka 10 obsahuje p-hodnoty statistiky. Čím je tato hodnota menší, tím jsou střední hodnoty výběrů podobnější. Hladinu významnosti jsem zvolila 𝛼 = 5%. Protoţe počet stupňů volnosti je u všech testovaných dvojic zhruba stejný a relativně vysoký, zvolila jsem kvantyl odpovídající hodnotě statistiky s nekonečně mnoha stupni volnosti 𝑡0,975 (+∞) = 1,96. V tabulce viz Tabulka 10 jsou p-hodnoty jednotlivých testů. Tučně jsem označila metody, u kterých zamítám nulovou hypotézu a mohu konstatovat, ţe střední hodnoty se liší. Střední hodnoty se liší zejména v ose X. Obrázek 39 ilustruje na mnoţině redukované algoritmem CNN, důvody tohoto výsledku. Redukční algoritmy redukují instance daleko od rozhodovací hranice a tedy zejména instance, vzdálené po ose X, čímţ značně posouvají střední hodnotu směrem k rozhodovací hranici. Protoţe rozhodovací hranice je rovnoběţná s osou Y, jsou instance v této ose redukovány rovnoměrně a k ţádnému většímu posunu nedochází. Ještě bych chtěla upozornit na redukční algoritmus IB3, jehoţ výsledek je zobrazen na obrázku viz Obrázek 38 a který dobře zachovává statistické vlastnosti. V dolní části tabulky jsou uvedeny výsledky editačních algoritmů, které ale nejsou příliš překvapivé. Z dat vypouštějí zejména šumové instance, kterých ovšem v těchto datech není mnoho a proto nemohou střední hodnotu příliš ovlivnit. Výsledky pro test shody rozptylů jsem opět pouţila standardní test shody rozptylu výběrů z normálního rozdělení. Výsledky testování shody rozptylu ukazují stejné závěry a mají stejné příčiny jako výsledky testování střední hodnoty a bylo by zbytečné je zde uvádět. 86 Testování implementovaných algoritmů Tabulka 10: Porovnání statistických vlastností Osa X Osa Y Třída 1 Třída 2 Třída 1 Třída 2 CNN 6,2 -7,5 -1,1 -1,6 RNN 6,1 -6,2 -1,3 -0,7 IB3 -0,1 0,4 1,1 1,7 DROP3 5,4 -5,4 0,1 -0,8 Prototypy 5,6 -5,1 0,2 -0,2 Chen 0,5 -2,8 0,4 -0,7 RSP1 0,5 -2,7 0,4 -0,6 RSP3 6,5 -6,1 0,3 0,1 Editační algoritmy ENN -0,2 0,4 0 0,1 All KNN -0,1 0,5 0 0,1 Obrázek 37: Původní data s normálním rozdělením Obrázek 38: Data redukovaná algoritmem IB3 Obrázek 39: Data redukovaná algoritmem CNN 87 Testování implementovaných algoritmů 8.7 Shrnutí dosažených výsledků Před porovnáváním implementovaných algoritmů jsem na uměle vytvořených datech testovala vliv editačních algoritmů na klasifikační přesnost algoritmů kondenzačních. K testování klasifikace kondenzovaných mnoţin jsem pouţila 1 – NN klasifikátor, na kterém správnost kondenzačních algoritmů porovnává většina autorů, a neuronovou síť GAME, pro kterou jsem všechny zmiňované algoritmy implementovala. Zjistila jsem, ţe na většině uměle vytvořených dat vykazovaly všechny kondenzační algoritmy lepších výsledků s pouţitím editované trénovací mnoţiny, neţ s pouţitím původní trénovací mnoţiny. Pro kaţdý kondenzační algoritmus jsem zvolila editační algoritmus, se kterým dosahoval nejlepších výsledků. K porovnání vlivu implementovaných algoritmů na klasifikaci 1 – NN klasifikátoru a neuronové sítě GAME jsem pouţila uměle vytvořená data a data reálná. Všechny kondenzační algoritmy, mimo algoritmu DROP3, který ve vlastní implementaci pouţívá editační algoritmus ENN, testuji na editované mnoţině zvoleným editačním algoritmem. Implementované kondenzační algoritmy byly na uměle vytvořených datech lépe ohodnoceny klasifikátorem 1 – NN. Kdy na všech datech alespoň některý z kondenzačních algoritmů dosahoval stejné nebo vyšší klasifikační přesnosti neţ byla dosaţena s pouţitím neredukované mnoţiny. Klasifikační přesnosti stejné či vyšší neţ při pouţití neredukované trénovací mnoţiny na neuronové síti GAME nedosáhly na datech Zuby a Šachovnice ţádné kondenzační algoritmy. Na umělých datech dosáhnul u obou klasifikátorů největšího úspěchu algoritmus DROP3. Niţší klasifikační přesnost, neţ při pouţití původních dat, měl pouze na datech Dvě E a Whirpool. Přitom nejméně zredukoval 74,5% původních dat a tudíţ značně urychlil proces učení neuronové sítě GAME. Vynikajících výsledků dosáhly také u obou klasifikátorů adaptivní regulovatelné algoritmy Chen a RSP1 a adaptivní algoritmus RSP3. Jejichţ redukční rate je okolo 80% velikosti původní mnoţiny. Všechny tyto redukční metody měly značné problémy s daty Šachovnice, kdy jejich redukované mnoţiny nebyly pro klasifikátoru pouţitelné. Algoritmus IB3 taktéţ dosáhl podobných výsledků u obou klasifikátorů. Nízkou klasifikační přesnost měl na datech Zuby a Dvě E. Rozdílné výsledky na obou klasifikátorech měl algoritmus Prototypy. Zatímco u 1 – NN klasifikátoru jeho klasifikační přesnost neklesla pod 93,1%, na neuronové síti neuspěl na datech Dvě E a Šachovnice. Ke klasifikačnímu rozporu dochází také při pouţití algoritmů CNN a RNN. U klasifikátoru 1 – NN jsou mnoţiny redukované CNN a RNN algoritmem ohodnoceny na všech datech lépe neţ 91%. Neuronová síť s redukovanými mnoţinami algoritmy RNN a CNN dosáhla dobrých výsledků jen na datech Dvě E. Implementované kondenzační algoritmy měly na reálných datech podobnou úspěšnost při klasifikaci 1 – NN klasifikátorem a neuronovou sítí GAME. Klasifikátor 1 – NN měl největší potíţe s kondenzovanými mnoţinami na datech Mandarinky a neuronová sítě měla problémy s kondenzovanými mnoţinami na datech s vysokým počtem atributů Ionosphere. 88 Testování implementovaných algoritmů Na reálných datech měly největší úspěch regulovatelné algoritmy Chen a RSP1 a to u obou klasifikačních metod. Jistě na tom hraje roli správná volba redukčního stupně, který je u některých dat potřeba volit aţ o 20% niţší neţ dosahují ostatní kondenzační algoritmy. I v tomto případě je však vyšší neţ 60%. Algoritmus RSP3 dosahoval s pouţitím 1 – NN klasifikátoru také vysoké přesnosti na všech datech kromě dat Mandarinky. U neuronové sítě jeho klasifikační přesnost byla dobrá, ale měl špatné výsledky na datech Glass a Mandarinky. Algoritmus IB3 také nezůstal pozadu a jeho hodnocení 1 – NN klasifikátorem je vyjma dat Mandarinky také velmi slušné. Za to při klasifikaci neuronovou sítí GAME dosáhl velmi špatných výsledků na datech Ecoli a Glass. Algoritmus Prototypy má taktéţ na obou klasifikátorech dobré hodnocení. I kdyţ stejné nebo vyšší klasifikační přesnosti, neţ je získána s pouţitím úplné trénovací mnoţiny, dosáhl pouze u klasifikátoru 1 – NN na datech EKG. Výsledky algoritmu DROP3 jsou o proti pouţití kondenzačních algoritmů na uměle vytvořených datech podstatně horší. Výborné klasifikační přesnosti u obou klasifikátorů dosahuje pouze na datech Glass a Ionosphere. Na ostatních datech je jeho klasifikační přesnost v porovnání s ostatními algoritmy průměrná. CNN a RNN algoritmy měly při hodnocení oběma klasifikátory problémy s daty Ionosphere a Mandarinky, jinak dosahovaly vysoké klasifikační přesnosti. Algoritmus RNN měl téměř na všech datech vyšší redukční stupeň, ale jeho klasifikační přesnost byla niţší. Dále jsem testovala na umělých datech vlastní algoritmus MergeAllInstances. Tento algoritmus dosahoval sice na všech datech s pouţitím obou klasifikačních metod vysoké klasifikační přesnosti, ale oproti ostatním redukčním algoritmům je jeho redukovaná mnoţina větší a tudíţ tolik nezkracuje proces výstavby sítě. Experiment se statistickým vyhodnocením výsledků ukazuje, ţe většina redukčních metod nezachovává statistické vlastnosti. Důvodem je, ţe kondenzační metody většinou zanechávají instance blízko rozhodovací hranice. Tím potlačují instance leţící dál od rozhodovací hranice a mění tak statistické vlastnosti – například pro normální rozdělení střední hodnotu a rozptyl. 89 Zhodnocení Část V – Závěr Poslední část, která obsahuje zhodnocení výsledků této práce. Její přínosy a nápady na budoucí pokračování a vylepšení. 9. Zhodnocení Podstatnou část práce jsem věnovala redukční části fáze předzpracování dat v procesu dobývání znalostí. Konkrétně problematice aplikovaných technik početní redukce dat. Tyto metody zmenšují počet instancí v trénovací mnoţině, ale při tom zachovávají integritu původních dat. Sníţení počtu instancí původních dat sniţuje pamětové poţadavky a rapidně zvyšuje rychlost učícího procesu a klasifikace, přičemţ zachovává či dokonce vylepšuje přesnost klasifikace. V teoretické části jsem prozkoumala problematiku data miningové úlohy klasifikace s narůstajícím mnoţstvím dat. Pozornost jsem věnovala klasifikátoru 1 – NN, který ke klasifikaci pouţívá úplnou trénovací mnoţinu. Dále jsem se zabývala neuronovou sítí GAME. V další části jsem představila metody početní redukce dat pouţívané v obou po sobě jdoucích krocích redukce – editaci a kondenzaci. Editační metody se zaměřují na odstranění instancí, které mohou ohrozit přesnost klasifikace. Metody kondenzační odstraňující instance, které neovlivňují výslednou rozhodovací hranici. Přičemţ větší pozornost jsem věnovala algoritmům kondenzačním, které sniţují paměťové poţadavky a čas potřebný na vytvoření modelu či klasifikaci trénovací mnoţiny. V rámci své práce jsem do projektu FAKE GAME implementovala 4 neadaptivní algoritmy (CNN, RNN, IB3, DROP3) a 4 adaptivní algoritmy (Prototypy, Chen, RSP1, RSP3). Dále jsem navrhla a do projektu FAKE GAME implementovala vlastní neadaptivní algoritmus, nazvaný MergeAllInstances. Také jsem implementovala 2 editační algoritmy (ENN, All k – NN), které jsou nezbytné pro správnou funkčnost kondenzačních algoritmů. Pro testování správnosti a efektivnosti mnou implementovaných metod jsem zvolila 10 různých dat. Nejprve jsem své metody testovala na 4 umělých datech, která jsem vytvořila. Dále jsem pouţila 6 vybraných reálných problémů. Mnou navrţený kondenzační algoritmus jsem z časových důvodů testovala pouze na umělých datech. K porovnání klasifikační přesnosti jednotlivých algoritmů jsem pouţila dva klasifátory 1 – NN a neuronovou síť GAME. U neuronové sítě jsem, kromě přesnosti výsledné sítě, sledovala čas potřebný k vybudování sítě. Při testování vlivu editačních algoritmů na funkčnost kondenzačních algoritmů jsem zjistila, ţe všechny kondenzační algoritmy dosahují lepších výsledků s pouţitím editované mnoţiny. Proto jsem pro kaţdou kondenzační metodu vybrala nejvhodnější editační metodu. V dalším testování jsem pak jiţ pouţívala kondenzační metody jen s vybranou editační metodou. 90 Zhodnocení Mé výsledky ukazují, ţe nejlepších výsledků na reálných i umělých datech dosahovaly algoritmy Chen a RSP1 se zvolenou editační metodou ENN. U těchto algoritmů je navíc moţné ovlivnit velikost výsledné redukované mnoţiny. Ve většině případů, při pouţití mnoţin redukovaných těmito algoritmy, oba klasifikátory dosahovaly vyšší přesnosti na testovacích datech, neţ jaká byla dosaţena při pouţití původní trénovací mnoţiny. Navíc obě redukční metody podstatně sníţily čas potřebný k vytvoření modelu sítě. Mnou navrţený algoritmus AllMergeInstances na většině umělých dat dosahoval velmi dobré klasifikační přesnosti, ale oproti ostastním redukčním metodám byla výsledná mnoţina větší. Také jsem prozkoumala, jak kondenzační metody zachovávají statistické vlastnosti redukovaných mnoţin. Pro tento test jsem vygenerovala speciální data s normálním rozdělením a známými statistickými vlastnostmi. Normální rozdělění jsem zvolila kvůli pouţití známých statistických testů. V tomto experimentu jsem zjistila, ţe většina redukčních metod nezachovává statistické vlastnosti. Důvodem je strategie kondenzačních algoritmů, tj. zachovávání instancí blízko rozhodovací hranice. Instance vzdálenější jsou potlačeny a díky tomuto nerovnoměrnému zahazování instancí se měmí statistické vlastnosti dat. Všechny cíle definované v zadání práce jsem splnila. Nad rámec zadání jsem implementovala klasifikátor 1 – NN, který jsem pouţila k porovnání kvality redukčních algoritmů, stejně jako jej pouţívá většina autorů. Dále jsem navrhla, implementovala a otestovala vlastní redukční algoritmus nazvaný MergeAllInstances. 9.1 Náměty pro budoucí práci V budoucnu by jistě bylo dobré prozkoumat větší mnoţství editačních algoritmů, které slouţí k filtrování rušivých instancí a instancí leţících na rozhodovací hranici. Tyto algoritmy implementovat a otestovat jejich vliv na všechny implementované kondenzační algoritmy. Dále by bylo dobré otestovat vlastní algoritmus AllMergeInstances také na reálných problémech a vyzkoušet různé permutace s neadaptivními algoritmy, které pouţívá. 91 Literatura a zdroje Literatura a zdroje [1] KUBKA, Karel. Data Mining moţnosti a pouţití. Informační systémy pro výrobu. 2002. [2] ZELEN, Jindřich. Java Data Mining (JDM). [http://nb.vse.cz/~zelenyj/it380/eseje/xneba01/JDMPrace.htm]. 2005. [3] BERKA, Petr. Proces dobývání znalostí. [http://euromise.vse.cz/kdd/index.php?page=proceskdd]. Aplikace systému KDD. 2001. [4] PAVLÍČEK, Miloslav. Modul pro automatické předzpracování dat. Diplomová práce. České vysoké učení technické v Praze. 2008. [5] CRISP Data mining industry standard. [http://www.crisp-dm.org/]. 2003. [6] VALA, Tomáš. Rozpoznání SPZ z jednoho snímku. Diplomová práce. Univerzita Karlova v Praze. 2006. [7] WILSON, D. Randall, MARTINEZ, R. Tony. An integrated instance-Based learning algorithm. Computational Intelligence. 2000. [8] TRILOBYTE. Neuronová síť. [http://www.trilobyte.cz/QC-Expert/Neuronova-sit.html]. Statistical software. 2009. [9] SAIDL, Jan. Vizualizace jako nástroj studia chování modelu přírodních systémů. In Diplomová práce. České vysoké učení technické v Praze. 2006. [10] LOZANO, M. Tereza. Data Reduction Techniques in Classification Processes. PhD. Thesis. Universitat Jaume I, Castellón. 2007. [11] SÁNCHEZ, J. S., BARANDELA, R., and FERRI, F. J. On Filtering the Training Prototypes in Nearest Neighbour Classification. CCIA. 2002. [12] WILSON, D.L. Asymptotic Properties Of Nearest Neighbor Rules Using Edited Data. IEEE Transactions on Systems. Man and Cybernetics. 1972. [13] TOMEK, IVAN. An Experiment With The Edited Nearest-Neighbor Rule. IEEE Transactions on Systems. Man and Cybernetics. 1976. [14] HART, P.E. The Condensed Nearest Neighbour Rule. IEEE Transactions on Information Theory. 1968. [15] GATES, G.W. The Reduced Nearest Neighbour Rule. IEEE Transactions on Information Theory. 1972. [16] AHA, D.W., KIBLER, D., ALBERT, M.K. Instance-Based Learning Algorithms. Machine Learning. 1991. 92 Literatura a zdroje [17] DASARATHY, B.V. Minimal Consistent Set (MCS) Identification for Optimal Nearest Neighbor Decision Systems Design. IEEE Transactions on Systems. Man and Cybernetics. 1994. [18] WILSON, D. R., MARTINEZ, T.R. Reduction Techniques For Instance-Based Learning Algorithms. Machine Learning. 2000. [19] CHANG, Chin-Liang. Finding Prototypes For Nearest Neighbor Classifiers. IEEE Transactions on Computers. 1974. [20] CHEN, C. H., JOZWIK, Adam. A sample set condensation algorithm for the class sensitive artificial neural network. 1996. [21] SÁNCHEZ, J. S. High training set size reduction by space partitioning and prototype abstraction. 2003. [22] WILSON, D. Randall, MARTINEZ, R. Tony. Reductions Techniques for InstanceBased Learning Algorithms. 2000. [23] VICTOR, José. Ship noise classification. Dissertation. New University of Lisbon. 2002 [24] ŠNOREK, Miroslav. Neuronové sítě a neuropočítače. Vydavatelství ČVUT. 2002. [25] FRENI, Biagio. MARCIALIS, Gian Luca. ROLI, Fabio. Template Selection by Editing Algorithms: A Case Study in Face Recognition. University of Cagliari. 2008. [26] SAVCHENKO, Sergei. Applications of Proximity Graphs. [http://cgm.cs.mcgill.ca/~godfried/teaching/projects.pr.98/sergei/project.html]. Pattern Recognition. 1998. [27] Projekt FAKE GAME na sourceforge. [http://sourceforge.net/projects/fakegame/]. 93 Seznam pouţitých zkratek A Seznam použitých zkratek CNN Condensed Nearest Neighbor Rule CRISP – DM CRoss-Industry Standard Process for Data Mining CS Condensed Set CSV Comma Separated Values DM Data Mining DROP3 Decremental Reduction Optimization Procedure 3 ENN Edited Nearest Neighbor Rule ES Edited Set GAME Group of Adaptive Models Evolution GMDH Group Method of Data Handling IB3 Instance Based learning algorithm 3 k – NN k – Nearest Neighbours KDD Knowledge Discovery in Databases RNN Reduce Nearest Neighbor Rule RSP1 Reduction by Space Partition 1 RSP3 Reduction by Space Partition 3 TS Trénovací mnoţina 94 Výsledky redukce umělých dat B Výsledky redukce umělých dat Data Dvě E 95 Výsledky redukce umělých dat 96 Výsledky redukce umělých dat Data Šachovnice 97 Výsledky redukce umělých dat 98 Výsledky redukce umělých dat Data Whirpool 99 Výsledky redukce umělých dat 100 Uţivatelská příručka C Uživatelská příručka Moduly algoritmů početní redukce dat nalezneme v projektu FAKE GAME, který je dostupný ke staţení viz [27]. Na webu projektu FAKE GAME také nalezneme informace, jakým způsobem stáhnout nejnovější verzi a jak ji nainstalovat. Po spuštění aplikace FAKE GAME je potřeba v hlavním okně otevřít dialog pro předzpracování dat. V menu data vybereme poloţku Preprocessing Dialog viz Obrázek 40. Obrázek 40: Otevření Preprocessing dialogu V Preprocessing dialogu je potřeba nejdříve načíst trénovací mnoţinu dat, kterou chceme redukovat. Vstupní formát dat pro projekt FAKE GAME je zaloţen na textovém souboru s tabulátorem oddělenými hodnotami. Na první řádce je seznam vstupních a výstupních atributů. Jména výstupních atributů musí začínat znakem vykřičník (!). Na dalších řádcích následují hodnoty jednotlivých instancí - na jednom řádku jedna instance. Ukázka vstupního formátu dat viz Obrázek 41. Vybereme metodu Load Raw Data v sekci Imports a stiskneme tlačítko Run viz Obrázek 42. 101 Uţivatelská příručka Obrázek 41: Ukázka vstupního formátu dat Obrázek 42: Import vstupních dat V okně Open nalezneme soubor s trénovací mnoţinou dat a kliknutím na tlačítko Open tato data načteme viz Obrázek 43. Ještě je potřeba potvrdit, ţe první řádek obsahuje názvy atributů a tříd. 102 Uţivatelská příručka Obrázek 43: Načtení trénovací mnoţiny dat Nyní otevřeme sekci Data reduction ve které vidíme seznam všech implementovaných kondenzačních a editačních algoritmů. Podotýkám, ţe jediný implementovaný algoritmus, který na první pohled nemůţeme vidět, je algoritmus RSP1. Ten se spouští změnou parametru useRSP1 na TRUE u algoritmu Chen. Nastavení parametrů a spuštění metody RSP1 si názorně předvedeme. Pro nastavení konfigurace algoritmu Chen je potřeba označit metodu Chen a kliknout na tlačítko Configure viz Obrázek 44. Obrázek 44: Otevření konfigurace Chenova algoritmu 103 Uţivatelská příručka Zobrazí se nám Konfigurační dialog. Poţadovaný parametr můţeme měnit dvojklikem. My nastavíme proměnnou useRSP1 na TRUE a potvrdíme tlačítkem OK viz Obrázek 45. Dále je u metody RSP1 moţné nastavit přibliţný počet instancí (condensationSize) z původní trénovací mnoţiny, které chceme zachovat. Obrázek 45: Konfigurační dialog Chenova algoritmu Pak uţ jen stačí kliknout na tlačítko Run a trénovací mnoţina je zredukována. Uloţit redukovanou mnoţinu můţeme v sekci exports metodou Save RAW Data viz Obrázek 46. Opět po stisknutí tlačítka Run vybereme cestu k souboru, do kterého bude redukovaná mnoţina uloţena. Obrázek 46: Export redukované mnoţiny dat 104 Uţivatelská příručka Na trénovací mnoţinu je moţné nejprve aplikovat některý z implementovaných editačních algoritmů a následně aplikovat některý z kondenzačních algoritmů. 105 Pomocné skripty D Pomocné skripty Zde prezentuji skripty implementované v Matlabu a interpretu příkazů Bash, které jsem pouţila v mé diplomové práci. Skripty pro Matlab pouţité pro vizualizaci umělých dat plotAllData.m skript, který nalezne všechna data v aktuálním adresáři a spustí na kaţdá data skript plotAndSave. plotAndSave.m načte data ze zadaného souboru a spustí skript plotData. plotData.m ze zadaných dat vytvoří XY graf a uloţí jej jako obrázek ve formátu PNG. readData.m načte data z textového souboru a vrátí matici vstupních dat a vektor tříd, do kterých patří jednotlivé instance. Skripty pro Matlab pouţité pro výpočet statistických vlastností umělých dat testDatasets.m skript, který vypočítá test shody střední hodnoty mezi původními, neredukovanými, daty a všemi daty v aktuálním adresáři. readData.m načte data z textového souboru a vrátí matici vstupních dat a vektor tříd, do kterých patří jednotlivé instance. Skripty pro Bash compute.sh skript pouţitý pro spouštění tvorby neuronové sítě GAME. Pro pouţití je třeba nastavit proměnnou datasetName na jméno dat (např. DvěE nebo Šachovnice) a do definice for cyklu vypsat všechny varianty, které se mají spustit. collect.sh skript pouţitý pro sběr výsledků neuronové sítě GAME. Skript nalezne všechny soubory s výsledky sítě na testovacích datech a výsledky uloţí do jediného souboru jménem accuacy.txt. 106 Obsah přiloţeného CD E Obsah přiloženého CD Na přiloţeném CD se nachází tyto soubory: |-- src/ - zdrojové kódy | | | |-- fakegame/ - zdrojové kódy projektu FAKE GAME s moduly pro redukci dat | | | |-- kNN/ - zdrojové kódy klasifikátoru k-NN | |-- jar/ - přeložená verze projektu FAKE GAME | |-- skripty/ - skripty použité při řešení diplomové práce | |-- test/ - soubory použité při testování modulů | | | |-- testovaci/ - testovací množiny umělých i reálných dat | | | |-- trenovaci/ - trénovací množiny umělých i reálných dat | |-- text/ - text diplomové práce |-- krkosh1_dip.pdf - text diplomové práce v pdf formátu Návod k ovládání modulů naleznete v příloze C Uţivatelská příručka 107
Podobné dokumenty
kombinatorika - Student na prahu 21. století
Vytvořený výukový materiál pokrývá předmět matematika, která je vyučována v osnovách
a tematických plánech na gymnáziích nižšího a vyššího stupně. Mohou ho však využít všechny
střední a základní šk...
PEX protokol
‘0’ (30H) - ‘9’ (39H) tj. 10 skupin
text řetězec až 32 znaků s následujícími významy:
‘ 1 ’ (31H) stmívej rychlostí zadanou v parametru n..n
‘ 2 ’ (32H) rozsvěcej rychlostí zadanou v parametru n..n...
Programování CNC systému Emcotronic TM02 – soustružení
se přenechá téměř veškeré rozhodování o průběhu obrábění, tedy o tvorbě řídicího
programu počítači, tj. logice zpracovatelského výpočetního programu. Tato skutečnost
mimořádně urychluje přípravu vs...
FAST-2008-8-1-311-brozovsky - DSpace VŠB-TUO
mace, tedy takzvané pracovní diagramy) se pomocí základních pružnostních vztahů určí počáteční
odhady materiálových parametrů homogenizovaného materiálového modelu. Tento model může být
buď izotro...
loctite 5699
produkt do styku se vzdušnou vlhkostí, proto by měly být
součásti sestaveny během několika minut od okamžiku,
kdy je produkt nanesen.
3. Spoj je třeba nechat řádně vytvrdnout (např. sedm dní)
před ...