123 LM Reverse-Miner - popis implementace - LISp
Transkript
LM ReverseMiner – popis implementace a ovládání Projekt LISp-Miner Odpovědná osoba: Milan Šimůnek Poznámka: Email: [email protected] 123 Číslo dokumentu: 123 Poslední změna: 23. 3. 2015 Kategorie: D Úroveň: V LM ReverseMiner Popis implementace a ovládání Abstrakt Tento dokument popisuje implementaci a základy ovládání modulu ReverseMiner pro generování umělých dat, která v sobě „skrývají“ předem dané vztahy/závislosti. Hlavním cílem je připravit data pro studentské analýzy v rámci výuky a testovací data pro projekt EverMiner. Pozor! Informace v některých částech dokumentu mohou být již zastaralé. Prioritu mají informace uvedené v prezentací pro přednášku a cvičení. V případě jakýchkoliv nejasností kontaktujte cvičícího. Obsah 1 ÚVOD ............................................................................................................................................................ 3 2 INSTALACE................................................................................................................................................. 3 2.1 2.2 3 ZÁKLADNÍ MYŠLENKA .......................................................................................................................... 3 3.1 4 APLIKAČNÍ PARAMETRY ....................................................................................................................... 17 UKÁZKOVÁ DATA .................................................................................................................................. 18 6.1 6.2 6.3 6.4 6.5 7 ZÁLOŽKA 1 LIST ..................................................................................................................................... 6 ZÁLOŽKA 2 RMCASE ............................................................................................................................. 6 ZÁLOŽKA 3 COLUMNS ............................................................................................................................ 8 ZÁLOŽKA 4 PREPRO ............................................................................................................................. 13 ZÁLOŽKA 5 DM TASKS ........................................................................................................................ 13 ZÁLOŽKA 6 EVOLUTION ....................................................................................................................... 15 ZÁLOŽKA 7 RESULTS ............................................................................................................................ 16 PRACOVNÍ ADRESÁŘ ............................................................................................................................. 16 INTERAKCE S OSTATNÍMI MODULY SYSTÉMU LISP-MINER .................................................. 17 5.1 6 EVOLUČNÍ OPERACE ............................................................................................................................... 4 APLIKACE REVERSEMINER ................................................................................................................. 6 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5 INSTALACE REVERSEMINERU ................................................................................................................ 3 PŘÍPRAVA UKÁZKOVÝCH DAT ................................................................................................................ 3 RM CASE DEMO A ............................................................................................................................... 18 RM CASE DEMO B ............................................................................................................................... 20 RM CASE DEMO C ............................................................................................................................... 21 RM CASE DEMO D ............................................................................................................................... 22 RM CASE DEMO E ............................................................................................................................... 23 DOPORUČENÍ PRO PRÁCI S REVERSEMINEREM......................................................................... 24 7.1 7.2 7.3 7.4 7.5 7.6 OD JEDNODUŠŠÍCH ÚLOH KE SLOŽITĚJŠÍM ............................................................................................ 24 REÁLNOST POŽADAVKŮ NA DATA ........................................................................................................ 25 RYCHLÝ POČÁTEK EVOLUCE ................................................................................................................ 25 VODÍTKA PRO EVOLUCI ........................................................................................................................ 25 POČÁTEČNÍ DISTRIBUCE HODNOT VE SLOUPCÍCH.................................................................................. 25 OBRNIT SE TRPĚLIVOSTÍ ....................................................................................................................... 26 –1– LM ReverseMiner – popis implementace a ovládání 7.7 7.8 7.9 123 ÚLOHY ZAJIŠŤUJÍCÍ NEEXISTENCI JINÝCH VZTAHŮ V DATECH .............................................................. 26 ZABRÁNĚNÍ UNIFIKACI POPULACE ........................................................................................................ 26 ZRYCHLENÍ PRÁCE S DISKEM ................................................................................................................ 26 –2– LM ReverseMiner – popis implementace a ovládání 123 1 Úvod Modul LM ReverseMiner slouží pro automatické vytváření (umělých) dat, která mohou být následně standardně analyzována postupy DZD pomocí systému LISp-Miner, ale také i v jiných systémech (RapidMiner, Weka, Clementine, R…), a to pro účely porovnání různých přístupů a demonstraci předností/nevýhod. Hlavní výhodou takto vytvořených dat je parametrické nastavení závislostí/vztahů, které se v nich mají vyskytovat, a tím i snadná kontrola provedených studentských analýz a jejich výsledků. Zároveň mohou být umělá data použita pro testování automatizace procesu DZD v projektu EverMiner. Výchozí úvahy pro návrh modulu ReverseMiner jsou v dokumentu 122 LM ReverseMiner – návrh. Modul byl začleněn do oficiální distribuce systému LISp-Miner počínaje verzí 19.00.00 zveřejněné dne 6. 6. 2012. V červenci 2013 byl publikován článek v časopisu Systémová integrace: • http://www.cssi.cz/cssi/priprava-umelych-dat-pro-vyuku-testovani-pomoci-evolucnihoalgoritmu 2 Instalace Předpokládá se, že uživatel už má nainstalované základní moduly systému LISp-Miner (zejména LM Workspace) do vhodně pojmenované základní složky (např. C:\LISpMiner). Nedoporučuje se instalovat LM do složky, který v názvu obsahuje mezery. 2.1 Instalace ReverseMineru Modul ReverseMiner se nainstaluje pomocí modulu LMUpdater.exe a zaškrtnutím příslušné volby ReverseMiner před stiskem tlačítka Download and update. Alternativně můžeme stáhnout a rozbalit soubor LM.ReverseMiner.zip z webové stránky do hlavní složky systému LISp-Miner. Soubor ZIP obsahuje modul LMReverseMiner.exe. Zároveň obsahuje i podsložku ReverseMiner s pomocnými soubory pro ReverseMiner, vzorovou metabázi a výsledky a podsložku Sewebar/Template se šablonou potřebnou pro export přehledu stavu generování úloh. 2.2 Příprava ukázkových dat Po nainstalování ReverseMineru je vhodné nejprve asociovat ukázkovou metabázi (RMDemoMB.mdb) v adresáři ReverseMiner s analyzovanými daty (RMDemoDB.mdb) ve stejném adresáři, a to standardním postupem pomocí modulu LM Workspace. Doporučený název vkládaný do obou polí dialogového okna je RMDemo. Přímo z modulu LMWorkpace si pak můžeme opět známým způsobem prohlédnout předzpracování dat a také definici úloh, které se využijí pro „šlechtění“ populace variant vygenerovaných dat. V současné verzi není možné vytvořit umělá data úplně od „nuly“. Předpokládá se scénář, že existují podkladová data a k nim asociovaná metabáze (jako například vzorová data RMDemo), ze kterých budou převzaty zejména názvy a datové typy sloupců – viz dále. 3 Základní myšlenka Pro hledání vhodné varianty dat je použit evoluční algoritmus. Jeden jedinec představuje jednu možnou variantu umělých dat. Podle zadání RM případu se určí sloupce, které mají být ve vytvářené datové matici, jejich typ atd. (viz záložka 3 Columns) a také počet záznamů v datové matici (viz parametr TargetRows). Na začátku evolučního procesu je populace jedinců o velikosti dané parametrem Initial population vytvořena zcela náhodně. Při generování konkrétních hodnot v daném sloupci jsou dodržovány –3– LM ReverseMiner – popis implementace a ovládání 123 požadavky na minimální/maximální hodnotu, případně pouze povolené hodnoty dané výčtem. Zároveň je zajištěno, že histogram četností vygenerovaných hodnot bude odpovídat zadané volbě (uniformní, gaussovské nebo podle zadaných frekvencí u výčtu hodnot – viz záložka 3 Columns). Pro každou variantu dat (jedince) jsou následně vyřešeny všechny zadané data-miningové úlohy (viz záložka 5 DM Tasks) a je zjištěn počet skutečně nalezených hypotéz. Ten závisí na konkrétní podobě hodnot ve sloupcích datové matice právě zkoumaného jedince. Fitness jedince je odvozena od rozdílu mezi požadovaným počtem hypotéz a ve skutečnosti získaným počtem hypotéz. Perspektivní jedinci (s vyššími hodnotami Fitness) mají větší šanci přenést své vlastnosti do další generace a to buď přímo, nebo s drobnou mutací či křížením s jinými úspěšnými jedinci (evoluční operace – viz dále). Pouze a jen v prvním kole se velikost populace může snížit/zvýšit tak, aby po zbytek evoluce odpovídala parametru PopulationSize. To například dovoluje nastavit Initial population na vyšší hodnotu, než je PopulationSize a náhodně vygenerovat větší množství variant dat. Z nich pak „přežije“ do druhé generaci pouze tolik potomků, aby velikost populace odpovídala parametru PopulationSize. Oba parametry mohou být nastaveny na stejnou hodnotu, a potom populace zůstává stále stejně velká po celou dobu evoluce. Po dostatečném počtu evolučních generací by se měla vyšlechtit umělá data v takové podobě, že nad nimi spuštěné data-miningové úlohy budou mít na výsledku požadované počty hypotéz. Evoluce je ukončena v okamžiku, kdy je nalezena varianta dat, která ve fitness funkci nedostala žádnou penalizaci za nesplnění požadovaného počtu hypotéz pro některou z data-miningových úloh, tj. hodnota fitness je nula. Eventuálně je možné pomocí parametru Fitness Tolerance zadat přípustnou hodnotu fitness, která bude ještě akceptovatelná (tj. o kolik hypotéz se mohou výsledky řešení úloh lišit od požadovaného počtu). Evoluce je ukončena při splnění podmínky Fitness ≤ Fitness Tolerance. Dosažení požadované hodnoty fitness však není kvůli povaze evolučních algoritmů vždy zaručeno, a proto může uživatel v parametrech RM případu volit maximální přípustný počet evolučních kroků/iterací (Max Iterations), resp. maximální dobu, po kterou má evoluce probíhat (Max Time – v minutách). Zároveň může interaktivně sledovat vývoj fitness aktuálně nejlepší varianty dat (na záložce 6 Evolution) a v případě potřeby evoluci pozastavit (potom je možné si prohlédnou hodnot v datové matice aktuálně nejlepší varianty a evoluci případně znovu rozběhnout), nebo může evoluci úplně zastavit. Následně se může buď spokojit s aktuálně dosaženým stavem, nebo zkusit pozměnit zadání úloh a evoluční algoritmus spustit znovu. 3.1 Evoluční operace V každém evolučním kroku se vytváří úplně nová populace jedinců o velikosti podle parametru PopulationSize. Noví jedinci vznikají jedním ze tří druhů evolučních operací – křížení, mutace a reprodukce. Při křížení a mutaci vzniká nový jedinec (nová varianta dat). V případě reprodukce se jedinec zkopíruje do nové populace, bez jakékoliv změny. Druh operace je pro každého jedince zvolen náhodně tak, že procentní poměr křížení, mutací a reprodukcí odpovídá parametrům Crossover prob, Mutation prob a Reproduction prob (který vznikne dopočtením do 100 %). 3.1.1 Výběr rodičů Jedinci mající právo na rozmnožování se vybírají systémem turnaje, a to pouze na základě setřídění jedinců podle fitness (nikoliv podle velikosti rozdílu jejich fitness). Je-li třeba získat rodiče, provede se náhodný výběr tolika jedinců z populace, kolik je zadáno v parametru Tournament Size. Z tohoto počtu náhodně vybraných jedinců se rodičem stane ten s nejlepší (nejnižší) hodnotou fitness. Čím je hodnota parametru Tournament Size vyšší, tím se snižuje pravděpodobnost, že šanci na rozmnožení dostane horší jedinec (ve velké skupině je větší pravděpodobnost, že tam bude i jedinec s lepší fitness a ten vyhraje turnaj). Vyšší hodnoty Tournament Size tak vedou ke snižování diverzity populace. –4– LM ReverseMiner – popis implementace a ovládání 3.1.2 123 Křížení Pro křížení jsou zapotřebí dva rodiče (každý vybrán systémem turnaje – přitom je kontrolováno, že v obou případech nebyl vybrán stejný jedinec). Následně dojde k vlastnímu křížení, kterým vzniknou dva noví jedinci. Křížení je možné ve dvou směrech: a) Křížení ve smyslu sloupců – první nově vznikající jedinec převezme celý sloupec C od prvního rodiče a druhý vznikající jedinec tento sloupec převezme od rodiče druhého. Případně opačně – je voleno náhodně pro každý sloupec. Tento typ křížení je možné použít vždy. b) Křížení ve smyslu řádků/záznamů – první nově vzniklý jedinec bude mít jednu podmnožinu hodnot ve sloupci C od prvního rodiče a druhou od druhého rodiče; druhý jedinec naopak. Tento typ křížení je možný pouze v případě, že není zaškrnutá volba „Distribution cannot change“ u daného sloupce C. Pro výběr podmnožin hodnot od jednoho a druhé rodiče existují dvě možnosti: „Row Half and Half“ – Hodnoty se rozdělí na dvě poloviny počínaje n-tým záznamem. Hodnota n je zvolena náhodně v rozmezí 1 až počet_řádků_datové_matice a záznamy se považují za „zatočené samy do sebe“ – po posledním následuje opět první. „Row Random“ U každé hodnoty se náhodně volí (s pravděpodobností 50 %), jestli bude přiřazena prvnímu jedinci, nebo druhému. Oba noví jedinci vznikají postupně sloupec po sloupci, jak byly sloupce nadefinovány na záložce 3 Columns. Pro každý sloupec se nejprve zjistí, jestli je vůbec možné vybírat z obou typů křížení – podle nastavení volby „Distribution cannot change“. Je-li zaškrtnutá, může se použít pouze křížení typu ad a). Není-li volba pro sloupec C zaškrtnutá, volí se mezi oběma typy křížení náhodně v poměru daném parametrem Cross Col Prob [%] (pro křížení ve smyslu sloupců) a Cross Row Prob = (100 Cross Col Prob) [%] pro křížení ve smyslu řádků. Je-li zvoleno křížení ve smyslu řádků, volí se opět náhodně typ rozdělení (Half × Random) a to v poměru podle parametru Cross Row Random Prob [%] (pro náhodné rozdělení mezi jedince) a Cross Row Half Prob [%] (pro rozdělení na dvě části). V případě křížení „Row Half and Half“ se ukázalo, že není vhodné používat hodnotu n (počáteční záznam) stejnou pro všechny sloupce pro právě vznikající dva nové jedince. Hodnota n je proto volena náhodně pro každý sloupec zvlášť. Pro náhodné rozdělení („Row Random“) je však použit stejný předpis pro všechny sloupce, aby se do právě vznikajících nových jedinců měly šanci přenést případně existující vztahy mezi hodnotami ve více sloupcích. 3.1.3 Mutace Mutací rozumíme změnu hodnot v náhodně vybraném sloupci datové matice. Jako rodič figuruje pouze jeden jedinec (vybraný turnajem) a vznikne opět jeden jedinec, ale s (drobně) pozměněnými hodnotami oproti svému rodiči. Opět jsou dva možné typy: a) Prohození hodnot – souvislá posloupnost hodnot počínaje záznamem na pozici n je prohozena se stejně dlouhou posloupností hodnot na pozici m ve stejném sloupci. Délka posloupnosti je zvolena jako náhodné číslo od 1 do hodnoty dané parametrem Swap Length Max. Přitom se hodnoty ve sloupci opět považují za „zatočené samy do sebe“ – po poslední hodnotě následuje opět první. Je zaručeno, že se obě posloupnosti nepřekrývají. Při vytváření jedince je možné provést prohození dvou úseků hodnot vícekrát. Počet prohození se určí náhodně v rozmezí 1 až hodnota parametru Swap Count Max. Délka prohazované sekvence zůstává stále stejná. Při opakovaném prohazování může dojít k překrytí některé dříve prohozované posloupnosti. Tento typ mutace je možné použít vždy. b) Změna hodnot – souvislá posloupnost hodnot počínaje záznamem na pozici n a délce m je nastavena na náhodně zvolenou hodnotu (přitom se dodržuje povolený rozsah/výčet a rozdělení četností nastavené na záložce 3 Columns pro tento sloupec). Sloupec je opět zatočený sám do sebe. Délka posloupnosti je zvolena jako náhodné číslo od 1 do Fill Length Max. Při vytváření jedince je možné provést nastavení hodnoty vícekrát. Počet opakování se určí náhodně v rozmezí 1 až hodnota parametru Fill Count Max. Délka posloupnosti zůstává stále stejná. Při opakovaném vyplňování může dojít k překrytí některé dříve vyplněné posloupnosti. Tento typ mutace je možný pouze v případě, že není zaškrnutá volba „Distribution cannot change“ u daného sloupce C. –5– LM ReverseMiner – popis implementace a ovládání 123 Je-li možné použít pro sloupec C oba typy mutace, volí se mezi nimi náhodně v poměru daném parametrem Swap Prob [%] (prohození hodnot) a Fill Prob = (100 - Swap Prob) [%] (změna hodnot). Parametr Swap Length Max musí být menší nebo roven polovině počtu záznamů (Target DataRows). Parametr Fill Length Max musí být menší nebo roven počtu záznamů (Target DataRows). 3.1.4 Reprodukce Jedinec vybraný turnajem je bez jakékoliv změny zkopírován do nové populace. Procento takto kopírovaných jedinců je dáno jako doplněk do 100 % po součtu procentní pravděpodobnosti křížení a procentní pravděpodobnosti mutace. Do nové populace je vždy reprodukován aktuálně nejlepší jedinec. 4 Aplikace ReverseMiner Základní modul pro generování dat je LMReverseMiner.exe. Ten je možné spustit, aniž by se musel ukončovat kterýkoliv z dříve spuštěných jiným modulů LISp-Mineru. Po výběru právě asociované metabáze LM RMDemo MB se objeví hlavní obrazovka modulu tvořená několika záložkami. Automaticky je vybrána záložka s detaily ReverseMiner „úlohy“, která je pro odlišení od standardních data-miningových úloh nazývaná jako „ReverseMiner Case“ („RM případ“). Mezi záložkami je možné volně přepínat (i během generování dat) a to myší nebo kombinací kláves Ctrl+číslo záložky na numerické klávesnici. V současné verzi jsou k dispozici tyto záložky: 1. Seznam nadefinovaných RM případů 2. Detail aktuálně nastaveného RM případu 3. Seznam sloupců datové matice, které mají být v uměle generovaných datech 4. Seznam atributů se zvýrazněním těch, které jsou skutečně použity v aktuálním RM případu 5. Seznam úloh, jejichž výsledky určují fitness každé vygenerované varianty dat 6. Průběh evoluce 7. Nalezené výsledky 4.1 Záložka 1 List Seznam nadefinovaných případů je obdobný jako seznam úloh v modulech xxTask. Umožňuje přidávat nové RM případy a hlavně klonovat již existující. Na dalších záložkách se zobrazují údaje pro aktuálně nastavenou položku v seznamu. Po přidání nového RM případu je třeba určit matici podkladových dat, která určuje základní podobu následně generovaných dat, případně pomáhá při zadávání povolených hodnoty pro výčtové sloupce – viz dále. Pozor! Podkladová matice musí mít primární klíč tvořený právě jedním sloupcem typu „Celé číslo“. Pozor! Po spuštění evoluce nelze měnit aktuálně nastavenou položku v seznamu RM případů. 4.2 Záložka 2 RMCase Souhrn informací o aktuálně nastaveném RM případu. Mezi hlavní parametry RM případu patří cílový počet záznamů generované matice dat (Target data rows). Každý RM případ má definovaný adresář (Working dir), do kterého se ukládají všechny pomocné soubory i výsledek evoluce. Lze jej libovolně měnit. Doporučuje se zvolit si nějakou konvenci v pojmenování pracovních adresářů a té se nadále držet. To umožní orientovat se v jednotlivých verzí vygenerovaných dat. –6– LM ReverseMiner – popis implementace a ovládání 123 Parametr Init Data Values zatím neumožňuje jinou volbu, než data vytvářet vždy úplně od začátku, bez ohledu na podkladová data. Parametry evolučního algoritmu jsou popsány dále v kapitole Evoluční algoritmus. Parametrem RandSeed Init se inicializuje generátor pseudo-náhodných čísel. Při založení nového RM případu je nastaven „náhodně“ podle aktuálního počítačového času. Pokud jej uživatel nezmění, tak se bude při každém spouštění evoluce inicializovat generátor náhodných čísel podle této hodnoty. To zajistí, že dva po sobě jdoucí evoluční běhy budou probíhat naprosto stejně a i nalezené výsledky budou totožné (za předpokladu, že nedošlo ke změně zadání RM případů). Libovolná (i malá) změna hodnoty parametru RandSeed Init povede ke zcela odlišnému průběhu evoluce a téměř jistě i k dosažení odlišné podoby výsledný dat. Ta mohou mít lepší i horší fitness, než data vygenerovaná dříve. Toho lze využít v případě, že chceme vyzkoušet, jestli jiným průběhem evoluce nedostaneme ještě lepší výsledky. Nastavením parametru RandSeed Init na původní hodnotu se vrátíme k předchozímu průběhu evoluce (opět za předpokladu, že mezitím nedošlo ke změně zadání RM případu). Oprava základních parametrů RM případu je možná pomocí tlačítka Basic parameters a změna hlavních parametrů evoluce pak pomocí tlačítka Evolution parameters. Základní parametry lze měnit i po vygenerování dat. Po změně parametrů evoluce dojde ke smazání dříve vygenerovaných výsledků. V dialogovém okně Evolution paramaters je možné porovnat právě zadané hodnoty vůči kterémukoliv jinému RM případu – pomocí tlačítka Compare To se vybere RM případ a následně jsou žlutě zvýrazněné ty hodnoty, které jsou různé. –7– LM ReverseMiner – popis implementace a ovládání 123 4.3 Záložka 3 Columns Na této záložce je třeba do seznamu vložit (pomocí tlačítka Insert) všechny sloupce, které chceme mít ve vygenerovaných datech. Názvy sloupců a jejich datové typy se přebírají z podkladové matice zvolené při založení RM případu. Pro jeden databázový sloupec je možné vložit pouze jednu definici. Nelze vkládat odvozené datové sloupce. V podkladové databázi je nutné vytvořit fyzický sloupec a zadat aktualizaci hodnot pomocí matematického výrazu (viz dále). 4.3.1 Datový typ sloupce 4.3.1.1 Celé číslo ToDo… 4.3.1.2 Desetinné číslo ToDo… 4.3.1.3 Text ToDo… 4.3.1.4 Datum Zatím pouze samotné datum (bez hodin a minut ⇒ ty je třeba generovat jako samostatné DB sloupce). Kvůli zachování kompatibility se datumy převádí do formátu YYYYMMDD. V tomto formátu je nutné je zadávat ve výčtu povolených kategorií a při definici minimální a maximální hodnoty rozsahu a střední hodnoty pro Gaussovské rozdělení. Standardní odchylka se udává ve dnech. Pro databázové sloupce typu Datum budou standardně automaticky vytvořeny i odvozené sloupce (Rok, Měsíc, Den, DenVTýdnu...). Pro ně možné konstruovat atributy a zadání úloh, jak je obvyklé. 4.3.1.5 Binární hodnota ano/ne ToDo… 4.3.2 Povolené hodnoty Pro každý sloupec nastavujeme parametry ovlivňující způsob generování hodnot v tomto sloupci. Možné způsoby jsou dané typem sloupce (číslo, text, datum, ano/ne) a tím, jestli jde o výčtový sloupec s omezenou množinou možných hodnot nebo o rozpětí hodnot. a) Enumeration of possible values ... Výčet povolených hodnot. Zadává se do seznamu v hlavním dialogovém okně sloupce. Hodnoty můžeme nadefinovat buď ručně, nebo pomocí tlačítka „Populate from sample data“ resp. „Populate from categories“. To načte hodnoty z podkladových dat a doplní u nich i skutečné frekvence. Frekvence lze následně i měnit ručně. Vždy je však třeba zajistit, aby součet frekvencí byl roven požadovanému počtu záznamů v generovaných datech. Ten je obvykle jiný, než u podkladových dat. Automatický přepočet na správnou hodnotu se provede tlačítkem „Recalc to match Target Rows“. b) Range of values … zadáváme minimální a maximální povolenou hodnotu. Rozpětí hodnot lze zadávat pouze datový typ číslo a datum. c) Range with predefined values … jde o speciální typ kombinující oba předchozí – definuje povolené rozpětí, ale i konkrétní hodnoty a jejich frekvence. Jako jednu z povolených hodnot pak do seznamu přidáme i „náhodnou hodnotu“ (zaškrtnutím příslušné volby v dialogovém okně hodnoty), také včetně frekvence. Ve sloupci pak budou jak předdefinované hodnoty, tak i náhodně vygenerované hodnoty. Jejich procentní podíl je dán uživatelem zadanými –8– LM ReverseMiner – popis implementace a ovládání 123 frekvencemi (jako pro výčet). Generuje-li se náhodná hodnota, bude tato z povoleného rozpětí a distribuce bude odpovídat zadanému typu (povolen je buď ‘Uniform’ nebo ‘Gaussian’) – viz dále. Při generování konkrétních hodnot do sloupce je dodržen povolený rozsah (rozmezí hodnot) nebo povolené hodnoty (výčet). 4.3.3 Přiřazování hodnot Pomocí volby Value Assignment Type určujeme způsob přiřazování hodnot ve sloupci: d) Randomly generated values ... hodnoty jsou do sloupce generovány náhodně. K tomu jsou použity hodnoty povoleného rozmezí hodnot a zvolený typ distribuce (viz rámeček Randomly Generated Values). e) Initialized by a mathematical formula ... počáteční hodnoty jsou vypočteny na základě matematického výrazu (viz níže). Potom jsou již však měněny pomocí evolučních operací nezávisle na ostatních sloupcí ⇒ počáteční vztah se postupně ztrácí. Pro operaci mutace jsou používány hodnoty z rámečku Randomly Generated Values. Tímto způsobem lze zajistit počáteční stoprocentní platnost určité žádané závislosti. Následně se evoluci nechá prostor pro změnu některých hodnot a pokles případů, kdy závislost existuje. Zabránit poklesu platnosti pod stanovenou mez lze zajistit vhodně zadanou DM úlohou. f) Continuously updated from a mathematical formula ... hodnoty ve sloupci jsou neustále počítány na základě zadaného matematického výrazu (viz níže). Evoluční operace se nad tímto sloupcem neprovádí. Hodnoty se však budou měnit, jak se mění hodnoty ve sloupcích, které jsou použity v matematickém výrazu. g) Initialized by copying from the underlying data ... počáteční hodnoty ve sloupci jsou nastaveny přesně podle hodnot v příslušném sloupci v podkladových datech. Dodržuje se pořadí hodnot a začíná se u prvního záznamu. Je-li cílový počet řádků v generovaných datech větší, použijí se hodnoty opět od prvního záznamu v podkladových datech. Je-li cílový počet řádků nižší, nejsou hodnoty z dalších záznamů v podkladových datech použity. Po inicializaci se však hodnoty mohou měnit v průběhu evoluce (toho lze využít při rozšiřování dat získaných dříve z ReverseMineru přidáním dalších sloupců za současného ponechání původní požadavků na skryté vztahy). Mají-li hodnoty zůstat konstantní, je třeba zaškrtnout volbu Column is fixed (viz dále). Pozor! Inicializací hodnot podle podkladových dat budou mít na počátku všichni jedinci v populaci stejné hodnoty v tomto sloupci. V populaci tím pádem není žádná diverzita a (minimálně z počátku) může evoluce probíhat pouze pomocí mutací. Proto je třeba s touto volbou zacházet opatrně a případně umožnit dodatečnou randomizaci hodnot při inicializaci (viz dále). –9– LM ReverseMiner – popis implementace a ovládání 123 4.3.3.1 Výpočet hodnot pomocí matematického výrazu Pomocí matematického výrazu zadaného do pole Formula je možné vypočítat hodnotu do sloupce pomocí základních aritmetických operátorů plus ‘+’, mínus ‘-’, krát ‘*’, děleno ‘/’ a modulo ‘%’ a dále logických operátorů ‘>’, ‘<’ a ‘=’. Ve výrazu mohou být dále použity závorky a názvy existujících základních (nepočítaných) sloupců. V případě sloupců typu Datum je dále možné přistupovat i k odvozeným hodnotám Year, Month, Day, DayOfWeek (pondělí = 0), DayOfYear, WeekOfYear a Quarter pomocí tečky – například BirthDate.DayOfWeek. V názvech sloupců se nerozlišují velká a malá písmena. Konečně může být použita i speciální funkce lm.rnd, která vrací náhodné číslo dle uniformního rozdělení a v intervalu 〈0;1〉. Výraz je možné zadat pro sloupce typu číslo (celé i desetinné), boolean (0 nebo 1), datum a text. Stejně tak mohou být ve výrazu sloupce těchto typů. Vyhodnocení probíhá podle priority operátorů a uzávorkování. Logické operátory mají nejnižší prioritu a jejich výsledkem je hodnota 1 (true) nebo 0 (false). Výpočty se provádí v oboru desetinných čísel. Pro sloupce typu "Celé číslo" se na konci výpočtu hodnota zaokrouhlí. Hodnoty ze sloupců typu Datum jsou automaticky převáděny na celé číslo tak, že se zjistí počet dní mezi tímto datem a referenčním datem 1. 1. 2000. Pro sloupce typu Datum je vypočtená hodnota automaticky převedena na datum, které je od referenčního data daný počet dní. Hodnoty ze sloupců typu Boolean jsou automaticky převáděny na 1 (true) a 0 (false). Hodnoty typu Text jsou automaticky převáděny na celé číslo tak, že se zjistí index dané hodnoty v seznamu povolených hodnot (v rozmezí 1 až počet záznamů v seznamu). Obdobně je sloupec typu Text vypočtená hodnota automaticky převedena text zjištěním hodnoty na daném místě v seznamu povolených hodnot. U číselných sloupců se neprovádí kontrola výsledné hodnoty na příslušnost do rozpětí hodnot nebo existenci v seznamu povolených hodnot (výčet). – 10 – LM ReverseMiner – popis implementace a ovládání 123 Příklady validních výrazů: NÁZEV SLOUPCE DATOVÝ TYP VÝRAZ BMI float Vaha / (Vyska* Vyska / 10000) Datum_splatnosti datum Datum_vystaveni+ 14 Trvani_pujcky integer Datum_splaceni- Datum_poskytnuti Země text (výčet) Narodnost SobotniNoc ano/ne ((VisitFrom.DayOfWeek+ 1) % 7)+ Nights > 6 Rychlost float 9,81*cas+ (lm.rnd()- 0,5) Na případné syntaktické chyby upozorňuje už dialogové okno pro zadání výrazu. Dojde-li však přesto později k chybně při výpočtu (např. odstranění použitého sloupce nebo dělení nulou), je do dat vložena hodnota o jedna nižší, než minimální hodnota z povoleného rozpětí zadaného pro atribut. 4.3.3.2 Vyhledání v doprovodné tabulce Volitelně lze pro vypočtenou hodnotu výrazu zvolit vyhledání v doprovodné tabulce (lookup-table). Taková tabulka se dá použít pro dohledání externích údajů závislých na jedné hodnotě základních dat. Do sloupce WSky v základních datech nemůžeme přiřazovat náhodné údaje o obloze. Hodnota musí odpovídat dni, ve kterém pobyt začal (VisitFrom). A musí být tedy stejná pro všechny pobyty, které začaly ve stejný den. Připravíme tedy tabulku Weather se sloupci WDate a WSky s údaji o obloze pro jednotlivé dny za období, pro které generujeme data. Do sloupce WSky v generovaných datech se pak vloží hodnota ze zadané tabulky (Weather) a ze zadaného sloupce (WSky) ze řádku, pro který platí, že hodnota sloupce WDate se rovná vypočtené hodnotě výrazu. Výraz bude obsahovat pouze odkaz na sloupec VisitFrom. Potom se v tabulce Weather řádek, ve kterém je ve sloupci WDate datum hodnota odpovídající datumu začátku pobytu. Ze stejného řádku se pak vezme hodnota ze sloupce WSky a přiřadí se jako výsledek do generovaného sloupce. Pozor! Vyhledání zatím nefunguje pro textové sloupce použité jako hodnota pro porovnání. 4.3.3.3 Přiřazení náhodně vygenerovaných hodnot Má-li se do sloupce vložit náhodně vygenerovaná hodnota (při inicializaci nebo při mutaci), je použit generátor (pseudo-)náhodných čísel. Rozdělení četností může být buď uniformní, Gaussovské nebo podle zadaných frekvencí (pouze pro výčet hodnot). Pro Gaussovské rozdělení se zadává střední hodnota a směrodatná odchylka. Pro datový typ Datum se střední hodnota zadává jako datum ve tvaru YYYYMMDD (viz výše). Generátor náhodných čísel s Gaussovským rozdělením vrací čísla bez ohledu na zadaný interval povolených hodnot. V případě, že je vráceno číslo mimo zadané rozpětí, je zahozeno a generátor je požádán o další náhodné číslo. To se opakuje tak dlouho, dokud není vráceno číslo v požadovaném intervalu. Nastavení střední hodnoty a směrodatné odchylky by proto mělo být zvoleno s ohledem na povolený interval. Není-li tomu tak a překročí-li se časový limit opakovanou žádostí o vygenerování náhodného čísla, je na to uživatel upozorněn. Je však možné záměrně zadat střední hodnotu a směrodatnou odchylku, aby například bylo generováno rozdělení četností odpovídající pouze pravé polovině gaussovské křivky. Potom můžeme vypnutím volby „Check for time-out during data initialisation“ zabránit zobrazování chybového hlášení. Podle volby „Initial Diversity type“ jsou buď náhodné hodnoty do sloupce generovány pro každého jedince vždy znovu (volba „Randomly generated values for each individual data set in population“), nebo je sada hodnot o velikosti cílového počtu řádků vygenerována pouze jednou a každému jedinci je pak do odpovídajícího sloupce vložena náhodná permutace této sady (volba „Permutation of a onetime pregenerated random values“). Použití permutací je nutné v případě zaškrtnutí volby – 11 – LM ReverseMiner – popis implementace a ovládání 123 „Distribution cannot change“, která zajistí, že během celé evoluce zůstane v daném sloupci zachované na počátku vygenerované rozdělení četností, resp. dokonce stále stejné hodnoty. Měnit se může pouze jejich pořadí. Poznámka: Teoreticky je možné generovat hodnoty ve všech sloupcích pomocí libovolného rozdělení a pro získání požadovaného využít vhodně zadané omezující podmínky evoluce. Zbytečně tak však prodlužujeme dobu nutnou pro vyhledání požadovaného řešení. Proto je lepší už generování náhodných hodnot přizpůsobit požadavkům, aby měla evoluce snazší cestu. V případě, že je zaškrtlá volba „Distribution cannot change“, nemohou se hodnoty ve sloupci v průběhu evoluce měnit, a proto je třeba zajistit, aby jejich počáteční rozdělení splňovalo všechny požadavky, které na ně zadané dataminingové úlohy kladou. V opačném případě není možné získat požadované výsledky. Poznámka: Volba „Distribution cannot change“ je pro evoluční algoritmus velmi omezující a je třeba ji používat velmi opatrně. Již od počátku je výrazně snížena diverzita populace tím, že všichni jedinci mají v daném sloupci naprosto shodné hodnoty a liší se pouze jejich pořadí. Zároveň se v průběhu evoluce nemůže na některém řádku v daném sloupci hodnota zaměnit za zcela novou. Povolená je pouze výměna s jinou hodnotou v jiném řádku v daném sloupci. 4.3.3.4 Dodatečná randomizace hodnot Jsou-li hodnoty ve sloupci inicializovány podle podkladových dat nebo pomocí matematického výrazu, můžeme přidat náhodný „šum“ pomocí parametrů randomizace. Pro zadané procento jedinců v populaci bude jejich počáteční nastavení ještě před začátkem evoluce změněno tak, že v daném sloupci bude několik hodnot změněno na náhodné (podle zadaných parametrů náhodně generovaných hodnot – povolený rozsah, distribuce…). Počet měněných hodnot se určí jako náhodné číslo od 1 do zadaného maximálního počtu řádků (v procentech). 4.3.3.5 Neměnné hodnoty Pomocí volby „Column is fixed“ je možné zabránit změně dat ve sloupci. Takový sloupec není zařazen do evolučních změn a hodnoty zůstávají stejné, jako po inicializaci (ať byla provedena kterýmkoliv z možných způsobů, kromě volby „Continuously updated from a mathematical formula“), případně po dodatečné randomizaci. Možné použití je pro zahrnutí reálných časových řád (počasí, ekonomické ukazatele), jejichž skutečné hodnoty se zadají do podkladových dat. 4.3.3.6 Různé Náhodný vzorek dat, která budou podle zadaných parametrů generována, je možné získat tlačítkem Sample. 4.3.4 Seznam sloupců Seznam sloupců na záložce 3 Columns podává celkový přehled o nastavení pro generování hodnot – datový typ, výčet hodnot/spojitá, rozdělení četností, minimální a maximální hodnotu (pro spojité), resp. na ukázku několik hodnot (pro výčty). U rozdělení četností je značka {F} v případě, že rozdělení četností se nemůže v průběhu evoluce měnit (je pevné – fixed). Do seznamu je možné zkopírovat definici sloupce z jiného RM Case a to pomocí tlačítka Import. Zkopírují se veškeré parametry a je možné importovat i více sloupců najednou. Nelze importovat definice pro sloupce, které už v seznam jsou. Pořadí sloupců v seznamu určuje pořadí sloupců ve vygenerovaných dat pro analýzu. Pomocí tlačítek „Move Up“ a „Move Down“ je možné pořadí měnit. Pomocí tlačítka „Synchronize“ se do seznamu vloží všechny sloupce tak, jak jsou uvedeny v podkladových datech. Před začátkem evoluce je kontrolováno, že jsou v seznamu uvedeny všechny sloupce, které se používají v atributech použitých v nadefinovaných úlohách. – 12 – LM ReverseMiner – popis implementace a ovládání 123 4.4 Záložka 4 Prepro V seznamu se zobrazují všechny atributy nadefinované v modulu LM Workspace nad sloupci zvolené podkladové matice. Zeleně jsou zvýrazněny ty, které jsou použity v některé z úloh používaných při evoluci (viz záložka 5). Modul LM Workspace je možné vyvolat ikonou na liště nebo tlačítkem Edit. 4.5 Záložka 5 DM Tasks Do seznamu je třeba vložit všechny data-mingové úlohy, které budou klást požadavky na šlechtěná data (ovlivňovat jejich fitness tím, jak se výsledky běhu úloh nad šlechtěnými daty liší od výsledků požadovaných). Pro každou úlohu se nastavuje požadavek na počet nalezených hypotéz (vyvolá se tlačítkem Detail, klávesou Enter nebo dvojitým kliknutím na položku v seznamu). Je možné zadat minimální požadovaný počet, maximální požadovaný počet nebo požadovaný interval min-max (pomocí obou najednou). Parametrem Weight se ovlivňuje „váha“ odchylky od požadovaného počtu hypotéz ve výsledku pro tuto úlohu oproti ostatním úlohám v seznamu. Nastavit parametry lze i najednou pro více úloh tak, že je označíme v seznamu a následně vyvoláme dialogové okno pro editaci parametrů pro naposledy označenou úlohu (nejlépe tlačítkem Detail). Následně zadáme požadované hodnoty a stiskneme Enter. Objeví se dotaz na potvrzení, zda mají být hodnoty zkopírovány i do ostatních označených řádků. 4.5.1 Přidání nové DM úlohy Novou úlohu můžeme vytvořit tlačítkem „Add Task“. Do podkladové metabáze se vloží nová úloha požadovaného typu (4ft-, CF-, SD4ft-Miner…) a pomocí tlačítka „Edit Task“ ji můžeme v příslušném modulu xxTask editovat standardním způsobem. Vhodné je použití tlačítka Clone, které stejně jako v xxTask modulech vytvoří přesnou kopii aktuálně nastavené úlohy. Potom je možné udělat drobnou úpravu v zadání. To se hodí zejména pro definici pomocných („naváděcích“) úloh ukazujících cestu evoluci. Příklad: Chceme generovat data obsahující pravidlo District(Praha) => Quality(Bad) s platností (FUI) na 90 %. U úlohy s takto zadanými koeficienty typu One Category budeme požadovat nalezení právě jedné hypotézy. Abychom však evolučnímu algoritmu pomohli v rozhodnutí, která z aktuálně vygenerovaných variant dat je lepší (a vhodnější pro další šlechtění), tak vyklonujeme ještě několik stejných úloh s platností postupně 80 %, 70 %, 60 %... A i u nich budeme požadovat nalezení právě jedné hypotézy. Varianta dat, ve které bude nalezeno požadované pravidlo s platností 60 %, je lepší než varianta, ve které neplatí ani to. Stejně tak je lepší varianta, ve které platí pravidlo na 80 %, oproti variantě s pravidlem platícím pouze na 70 %. V obou případech bude mít první varianta o 1 lepší fitness, než varianta druhá. Úlohy je možné nadefinovat i mimo ReverseMiner pomocí příslušného modulu xxTask a následně pouze vložit do seznamu pomocí tlačítka Insert. Označením více položek v seznamu úloh lze přidat najednou všechny úlohy do RM případu. Zároveň se pro všechny najednou přidávané úlohy nastaví – 13 – LM ReverseMiner – popis implementace a ovládání 123 stejné parametry požadovaného minimální/maximální počtu hypotéz a váhy (lze později změnit a to opět i hromadně – viz výše). Pomocí tlačítka Remove se vyřadí právě označená úloha (nebo více úloh) ze seznamu tohoto RM případu, samotné úlohy však smazány nejsou a zůstávají v metabázi podkladových dat! Pomocí tlačítka Delete dojde k úplnému odstranění označených úloh jak z RM případu, tak i z metabáze podkladových dat. 4.5.2 Primární míra zajímavosti Definice naváděcích úloh je poměrně pracná. V některých případech (ne však ve všech!) ji lze nahradit a dokonce výrazně vylepšit celý proces evoluce výpočtem fitness jedince přímo z míry zajímavosti nalezené hypotézy. Proto byla do zadání kvantifikátorů jednotlivých GUHA procedur přidána volba „Primary IM“ (primární míra zajímavosti). Ta může být zaškrtnuta pouze u jediného kvantifikátoru v zadání úlohy (jinak se úloha nespustí) a označuje míru zajímavosti, jejíž hodnota bude u každé nalezené hypotézy uložena a následně využita při výpočtu fitness jedince při evoluci. Aby byly hodnoty navzájem porovnatelné, je třeba obvykle míru zajímavosti normalizovat do intervalu <0;1>. K tomu slouží druhé zaškrtávací políčko a dvě pole pro zadání minimální hodnoty míry zajímavosti (která bude normalizována na 0) a maximální hodnoty (která bude normalizována na 1). Potom stačí v ReverseMineru vložit do seznamu úloh na záložce 5 DM Tasks pouze jednu úlohu, ve které bude nastavena nějaké velmi minimální hodnota prahu kvantifikátoru (nebo i 0). V rámci normalizovaného intervalu míry zajímavosti pak bude příspěvek k fitness jedince vypočten spojitě od 0 (nic nenalezeno) do 1 (hypotéza nalezena). Příklad: Zadáme úlohu s kvantifikátorem Fundované implikace a parametrem p = 0,3. Tím požadujeme, že minimální platnost musí být 0,3 (aby bylo pravidlo vůbec vloženo do výsledku). Tuto míru zajímavosti označíme za primární a hodnoty pro normalizaci zadáme v intervalu 0,3 až 0,9. I když tedy bude nalezeno pravidlo s platnosti právě 0,3, tak stejně bude příspěvek k fitness jedince stále roven 0. Když však nalezené pravidlo bude mít platnost 0,6, tak už bude příspěvek k fitness jedince 0,5 a když bude pravidlo mít platnost 0,9 (nebo vyšší), tak bude příspěvek celá 1 (jako v případě naváděcí úlohy výše). Využití spojitých hodnot míry zajímavosti vede k výraznému vylepšení chování evolučního algoritmu, který v každém kroku daleko snáze určí lepší jedince v populaci. Podobného chování bychom docílili, kdybychom zadali obrovské množství naváděcích úloh s velmi malými kroky. Zároveň je tento druhý způsob i rychlejší, protože stačí spočítat pouze jednu úlohu (a nikoliv velké množství naváděcích). Pozor! Při normalizaci hodnot měr zajímavosti je třeba dát pozor na jednotky, ve kterých je míra zajímavosti počítána. U funkčních kvantifikátorů je obvykle přímo v intervalu <0;1> a není úplně nutné ji normalizovat. Potom však třeba u platnosti říkáme, že plný příspěvek ve výši 1 k fitness je až 100% platnost, což obvykle není vhodné. Na zvážení je také nastavení dolní hodnoty intervalu. U agregačních kvantifikátorů je míra zajímavosti v jednotkách, které jsou použity pro nastavení prahu (absolutní číslo, v procentech relativně k počtu řádků datové matice, v procentech relativně k aktuální podmínce nebo v procentech relativně k maximální hodnotě) – týká se zejména CF- a KL-Mineru. Potom je třeba interval zadávat také v procentech – např. <30;75>. Komplikovanější je Kendallův TauB kvantifikátor v KL-Mineru, který nabývá hodnot <-1;1>. Aby bylo možné vyjádřit pozitivní hodnotu příspěvku k fitness pro hodnoty jdoucí k -1 (nepřímá závislost), je povoleno zadávání intervalu pro normalizaci i opačně – tedy od 0 do -1. Opačně zadaného intervalu lze využít i například pro vyjádření co nejmenší platnosti nechtěných vztahů – pro míru zajímavosti Fundované implikaci budeme normalizovat od 1 do 0. Nejvyšší příspěvek k fitness jedince pak bude mít hypotéza s nulovou platností. – 14 – LM ReverseMiner – popis implementace a ovládání 123 Poznámka: Primární míra zajímavosti zatím není implementována v ETree-Mineru. 4.6 Záložka 6 Evolution Tato záložka umožňuje spustit evoluční algoritmus a podává i přehled o průběhu evoluce dat. Cílem je nalézt takovou variantu datové matice obsahující sloupce definované na záložce 3 Columns a v nich náhodně vygenerované hodnoty podle zadaných parametrů, které po spuštění všech úloh v seznamu na záložce 5 DM Tasks povedou k nalezení požadovaných počtů hypotéz pro každou úlohu. Evoluce se spouští tlačítkem Start, které se následně změní na Stop a pomocí něj je tedy možné evoluci i předčasně ukončit. Tlačítkem Pause/Unpause se evoluce dočasně pozastavuje (například kvůli prohlédnutí aktuálně nejlepší nalezené varianty dat – viz dále). Aktuální stav evoluce, čas začátku a doba trvání evoluce, číslo generace evolučního algoritmu (včetně postupu výpočtu fitness pro jedince v aktuální populaci) jsou zobrazovány v levém horním rohu záložky. Během evoluce se opakovaně volají moduly LMTaskPooler (pro vyřešení všech data-mingových úloh) a LMSwbExporter (pro zjištění průběhu řešení a počtu nalezených hypotéz). Počty skutečně nalezených hypotéz jsou porovnány s požadovaným počtem a fitness jedince je vypočtena jako vážená odchylka skutečného počtu hypotéz od požadovaného. Pro aktuálně nejlepšího jedince je jeho fitness zobrazována v levém horním rohu a v seznamu jsou zeleně zvýrazněny úlohy, u kterých byl požadovaný počet splněn. Evolučně úspěšní jedinci mají větší šanci sami nebo prostřednictvím svých potomků přežít do další generace. Pro nově vytvořené jedince jsou opět spočteny všechny úlohy a jedinci jsou ohodnoceni. Hledání vhodné varianty dat je ukončeno nalezením vyhovující varianty dat (fitness ≤ tolerance), dosažením zadaného maximálního počtu generací nebo vypršením časového limitu. Evoluci je možné kdykoliv ukončit tlačítkem Stop. V grafu ve spodní části obrazovky se zobrazuje historie vývoje populace pomocí hodnoty fitness pro aktuálně nejlepšího (modře) a nejhoršího (červeně) jedince v každé vytvořené generaci. Žluté a zelené značky v horní části grafu informují, jak vznikl aktuálně nejlepší jedinec – mutací (žlutě) nebo – 15 – LM ReverseMiner – popis implementace a ovládání 123 křížením (zeleně). Není-li v daném kroku žádná značka, nedošlo ke změně aktuálně nejlepšího jedince. Podrobný přehled historie evoluce je ve zprávě – viz EA Report níže. Běžící evoluce je signalizována blikajícím nápisem RUNNING a rotující čárkou na stavové liště v pravém dolním rohu okna. Po skončení evoluce (nebo při jejím pozastavení) se aktuálně nejlepší podoba dat uloží do souboru RM.Best.DB.mdb a odpovídající metabáze do RM.Best.MB.mdb v pracovním adresáři RM případu. Pomocí tlačítka Save Best je uložení obou souborů možné zopakovat. Po skončení evoluce (nebo při jejím pozastavení) je možné pomocí tlačítka EA Report zobrazit podrobnou zprávu o průběhu evolučního algoritmu – jakou dobru trvaly jednotlivé fáze a četnosti evolučních operací. Tato zpráva může pomoct při ladění parametrů evoluce. Pozor! Po spuštění evoluce není možné editovat žádné parametry RM případu. ani přepnout na jiný RM případ. Pozor! Cyklus evoluce se pozastaví, pokud uživatel otevře menu aplikace! Je nutné menu zavřít a vše se opět rozběhne. Stejně tak se evoluce pozastaví při zobrazení libovolného dialogového okna. 4.7 Záložka 7 Results Po skončení evoluce (nebo po jejím dočasném pozastavení) je možné zobrazit (aktuálně) nejlepší nalezenou variantu dat. Tlačítkem Output se vygeneruje textový soubor se základními informacemi o RM případu, času generování a s daty. Pomocí tlačítka Export se převedou pouze samotná data na text oddělený tabulátory a podle volby uživatele se buď zkopírují do schránky systému Windows, nebo uloží do souboru na disk. Následně je možné je vložit například do tabulky Excelu nebo importovat do libovolného DBMS. Pozor! Výsledky nelze zobrazit, je-li evoluce spuštěná. 4.8 Pracovní adresář Do pracovního adresáře se ukládají všechny pomocné soubory pro daný RM případ a hlavně dosažené výsledky. Konkrétní umístění pracovního adresáře je možné volit parametrem na záložce 2 RM Case. Před započetím evoluce je v pracovním adresáři vytvořena vzorová metabáze (RM.Template.MB.mdb) . Během evoluce je pak třeba pro každou vygenerovanou variantu dat uložit – 16 – LM ReverseMiner – popis implementace a ovládání 123 na disk vlastní data, metabáze a soubor s výsledky úloh. Po skončení evoluce se všechny pomocné soubory smažou. Po skončení evoluce (nebo jejím přerušení/pozastavení) je do pracovního adresáře uložena nejlepší nalezená varianta dat (RM.Best.DB.mdb) a k ní příslušná metabáze (RM.Best.MB.mdb). Tyto dva soubory nejsou smazány a zůstávají k dispozici. Tuto dvojici data+metabáze je možné opět standardním způsobem asociovat v modulu LM Workspace a dále používat všechny modulu systému LISp-Miner jako nad kterýmikoliv analyzovanými daty. Asociace zůstane zachována i po nově spouštěné evoluci v modulu ReverseMiner a nalezení jiné varianty dat (změní se však samotná data). Pozor! Je třeba zaručit, že před spuštěním nové evoluce budou ukončeny všechny LM moduly, které prohlíží obsah souborů RM.Best.DB.mdb a RM.Best.MD.mdb. V opačném případě se modulu ReverseMiner nepodaří soubory přepsat a upozorní na to uživatele. Nabídne však opakování pokusu o uložení, takže LM moduly je možné ukončit i dodatečně. 5 Interakce s ostatními moduly systému LISp-Miner Samotný modul ReverseMiner v sobě neobsahuje nástroje pro předzpracování dat, pro zadání dataminingových úloh, ani žádný kód pro jejich řešení a získání hypotéz. Pro všechny tyto činnosti jsou volány stávající moduly systému LISp-Miner. To by zároveň mělo uživatelům usnadnit práci s modulem, protože při zadání RM případů využívají z velké části již známé nástroje a postupy. Jak již bylo zmíněno dříve, tak se zatím předpokládá, že pro ReverseMiner se použijí již dříve existující data a k nim příslušná metabáze, navzájem spojené pomocí modulu LM Workspace. Ze záložky 4 Prepro je možné vyvolat předzpracování dat. Přidávání data-miningových úloh se děje prostřednictvím modulu LM Workspace a to buď externě jeho ručním spuštěním, nebo pomocí tlačítek Add Task/Edit Task na záložce 5 DM Tasks. V průběhu evolučního procesu se pro každého nově vytvořené jedince spustí řešení všech úloh a získají se skutečné počty nalezených hypotéz. Pro spuštění výpočtu úloh volá ReverseMiner modul LM TaskPooler (resp. LM GridPooler), kterému předá požadavek na postupné spočítání všech úloh, které jsou uvedeny na záložce 5 DM Tasks. Po skončení výpočtu všech úloh pošle LM TaskPooler zprávu volající instanci ReverseMineru. Následně je spouštěn modul LM SwbExporter, který exportuje výsledky výpočtu úloh v dané metabázi pomocí šablony LMSurvey.RM.Task.Template.TXT speciálně připravené pro ReverseMiner. Kromě stavu všech úloh je u každé z nich uveden i počet skutečně nalezených hypotéz. Po vytvoření exportu i LM SwbExporter zašle zprávu, že je hotovo. ReverseMiner si výsledky načte, porovná je s požadovanými a vypočte pro daného jedince jeho fitness. Při volání externích modulů nedochází ke zbytečným prostojům, protože ReverseMiner dostane vždy zprávu, že je vše hotovo. Kdyby z nějakého důvodu mechanismus předávání zpráv mezi aplikacemi nefungoval, přejde ReverseMiner automaticky do záložního režimu, ve kterém po zavolání LM TaskPooleru periodicky spouští LM SwbExporter, dokud u nejsou ve výsledcích všechny úlohy označeny za spočtené. Potom je však třeba dobře zvážit hodnoty čekacích dob, aby ReverseMiner nečekal zbytečně dlouho, nebo naopak příliš častým voláním LM SwbExporteru výpočet úloh nezpomaloval – viz další sekce. Pro správnou funkci mechanismu předávání zpráv musí mít uživatel dostatečná oprávnění (měla by stačit standardní práva, někdy může být nutné mít administrátorská). V případě, že se mechanismus nepodaří inicializovat, zobrazí ReverseMiner při svém spuštění upozornění. 5.1 Aplikační parametry Dobu trvání evoluce lze podstatně zlepšit vhodným nastavením aplikačních parametrů. Jejich nastavení je závislé na konkrétní konfiguraci použitého počítače a rychlosti jeho disků. Počáteční hodnoty parametrů jsou nastaveny hodně konzervativně a doporučuji experimentálně ověřit jejich nejvhodnější nastavení. Parametry se nastavují v dialogovém okně File/Options. – 17 – LM ReverseMiner – popis implementace a ovládání 123 První dva (TaskProcessesMax a SurveyProcessMax) se týkají maximálního počtu současně spuštěných externích modulů. První omezuje maximální počet najednou spuštěných procesů LM TaskPooleru (resp. LM GridPooleru) a druhý maximální počet procesů LM SwbExporteru. Vhodné nastavení závisí na počtu jader procesoru. Je možné zadat číslo větší, než je počet jader, aby se zvýšilo vytížení i v případě, že některý z procesů provádí diskové operace. LM SwbExporter vytěžuje jádro méně, a proto je možné jich povolit více najednou. Je vhodné experimentovat s hodnotami parametrů při otevřeném TaskManageru a sledování grafu vytížení procesorů. Oba parametry se zobrazují na záložce 6 Evolution. Další parametry (xxDelayAfter) ovlivňují čekací doby před pokračování v dalším kroku. V případě, že řádně funguje mechanismus předávání zpráv mezi procesy, tak není třeba tyto parametry nastavovat a vždy se čeká až na obdržení zprávy o ukončení externího procesu. V opačném případě je opět nutné experimentovat podle průběhu evoluce a viditelné aktivity spouštění procesů na TaskBaru. Ke změně parametrů je možné použít i Registry, klíč HKCU/Software/LISp-Miner/LISp-Miner ReverseMiner module/AppParams. Hodnoty se však aktualizují až při novém spuštění aplikace. Přehled parametrů registry je v následující tabulce: PARAMETR TaskRunProcessCountMax SwbExporterProcessCountMax TaskPoolerDelayAfter GridPoolerDelayAfter TaskSurveyDelayAfter TaskResultDelayAfter POPIS maximální počet najednou spuštěných procesů LM TaskPooler maximální počet najednou spuštěných procesů LM SwbExporter jak dlouho se čeká po spuštění LM TaskPooleru, než je učiněn první pokus o získání stavu úloh pomocí LM SwbExporteru jak dlouho se čeká po spuštění LM GridPooleru, než je učiněn první pokus o získání stavu úloh pomocí LM SwbExporteru jak dlouho se čeká po spuštění LM SwbExporteru, než je učiněn první pokus o načtení souboru s výsledky jak dlouho se čeká po načtení souboru se stavem úloh (ze kterého se zjistilo, že ještě nějaká úloha běží), než je znovu zavolán LM SwbExporter DEFAULT 3 6 5000 10000 1000 10000 Všechny hodnoty jsou typu DWORD. Časy parametrů „DelayAfter“ se zadávají v milisekundách. 6 Ukázková data Součástí instalace ReverseMineru je zadání pro vygenerování ukázkových dat (viz 2.2). Cílem ukázkových dat je předvést některé z výše uvedených vlastností a funkcí modulu ReverseMiner. V žádném případě nemají jakýkoliv vztah k realitě! Ukázková data vycházejí z databáze fiktivní banky Barbora, konkrétně z tabulky Loans, ze které však přebírají pouze názvy sloupců, jejich datové typy a některé hodnoty typu výčet. 6.1 RM Case Demo A Cílem prvního RM případu je připravit data, která budou obsahovat jeden „skrytý“ vztah: • že je vyšší pravděpodobnost vzniku špatné půjčky, pokud je klient z okresu Louny. Cílový počet záznamů v generovaných datech: 1000 Velikost populace: 10 – 18 – LM ReverseMiner – popis implementace a ovládání 6.1.1 123 Columns 6.1.1.1 District Datový typ: string, typ hodnot: výčet uživatelem definovaných hodnot Výčet 77 okresů ČR převzatý z banky Barbora pomocí tlačítka „Populate from sample data“ včetně rozdělení frekvencí. Protože však tabulka Loans má 6181 záznamů a cílový počet záznamů v generovaných datech je 1000, bylo použito tlačítko „Recalc to match TargetRows“. Relativní rozdělení četností jednotlivých hodnot zůstalo stejné, pouze se změnily absolutní četnosti tak, aby v součty daly požadovanou hodnotu 1000. Zároveň byla volbou „Distribution cannot change“ zakázána změna v rozdělení četností hodnot během evoluce. 6.1.1.2 Status Datový typ: string, typ hodnot: výčet uživatelem definovaných hodnot Z původních dat převzaty povolené čtyři hodnoty (A, B, C, D) spolu s jejich rozdělením četností, které bylo přepočítáno na cílový počet záznamů. Rozdělení četností se nemůže v průběhu evoluce měnit. 6.1.2 Požadavky na data 6.1.2.1 Nadprůměrný podíl špatných půjček Pomocí 4ft-úlohy je zadán požadavek, aby se v datech vyskytovalo asociační pravidlo tvary: District( Louny) ⇒AAD1.0, 5 Quality( Bad) Tedy nadprůměrný podíl špatných půjček v okresu Louny ve smyslu Above-average dependency s parametrem p= 1.0 a BASE = 5. Aby však měla evoluce šanci k požadovanému řešení dospět, potřebuje nápovědu odlišující variantu dat, která jsou „nadějná, i když ještě úplně nesplňují požadavek“ od varianty dat úplně nevyhovující. Varianta dat, ve kterých bude nalezeno výše uvedené asociační pravidlo alespoň s p = 0.3 je lepší a má smysl jí dát v průběhu evoluce přednost před variantou, kde neplatí ani to. K tomu slouží jedna nebo více pomocných „naváděcích“ úloh, které mají stejný tvar hledaného pravidla, ale spokojují se s nižší hodnotou míry zajímavosti – např. tedy jedna s p= 0.6 a druhá dokonce s p = 0.4. Fitness každé varianty dat pak bude ovlivněna i výsledky „naváděcích“ úloh. 6.1.3 Evoluce Evolučními kroky se bude aktuálně nejlepší varianta dat postupně blížit svými vlastnostmi požadavkům (viz klesající modrá křivka v grafu historie evoluce na obrázku). V seznamu plnění jednotlivých požadavků jsou zeleně znázorněny ty úlohy, jejichž výsledky splňují požadavky. Z generace na generaci se může stát, že aktuálně nově nejlepší jedinec bude mít sice lepší – 19 – LM ReverseMiner – popis implementace a ovládání 123 celkovou fitness než předchozí nejlepší jedinec, ale v jednom dílčí požadavku se zhorší (řádek opět zčervená). Evoluce na ukázkových datech skončila ve čtvrtém kroku po nalezení varianty dat splňující zadaný požadavek. 6.1.4 Výsledky Na záložce 7 Results byla pomocí tlačítka Output uložena zpráva s vygenerovanými daty do souboru DemoA\Loans.RMOutput.txt a do souboru DemoA\Loans.RMExport.txt exportována pouze samotná data pro případný import do databáze a započetí s „analýzou“. 6.2 RM Case Demo B Jde o rozšíření RM Case Demo A o další vztah, který mají generovaná data obsahovat: • že v okresech Louny, Česká Lípa a Šumperk je vysoké procento lidí s nízkými platy – ve smyslu příslušnosti do kategorie Salary( Low). Zároveň byl naopak zadán požadavek, že v datech se NESMÍ vyskytovat žádná jiná nadprůměrná závislost mezi okresem a špatnou kvalitou půjčky. Cílový počet záznamů v generovaných datech: 1000 Velikost populace: 50 Maximální počet evolučních kroků: 12 Tolerance na nesplnění požadavků: 1 6.2.1 Columns Kromě již dříve nadefinovaných sloupců District a Status přibyl ještě sloupec Salary. 6.2.1.1 Salary Datový typ: integer, typ hodnot: libovolná hodnota z daného intervalu Náhodně vygenerované celé číslo z intervalu <8110;12541> s gaussovským rozdělením četností (střední hodnota: 9000, směrodatná odchylka: 738,5). V průběhu evoluce však mohou být hodnoty nahrazovány jinými, a tím se může postupně měnit i rozdělení četností. Střední hodnota a směrodatná odchylka zadány s ohledem na povolený interval výše platu, ale mírně vystředěné doleva, aby rozdělení lépe odpovídalo realitě, že průměrný plat je vyšší než medián kvůli existence menšího množství lidí s velmi vysokými příjmy. Z typického gaussovského „zvonu“ je také uříznuta levá část, protože minimum je 8110. 6.2.2 Požadavky na data 6.2.2.1 Převažující nízký plat v některých okresech Pomocí CF-úlohy s jednoduchým testem na četnost první kategorie – Salary(Low) – je vyžadováno, aby v okresech Louny, Česká Lípa a Šumperk byla četnost této kategorie alespoň 50 %, ve dvou z nich pak alespoň 70 % a v jednom dokonce 80 %. Zároveň jsou nadefinovány další tři naváděcí úlohy s požadovanou četností Salary(Low) minimálně 40 %, 30 % a 20 %. 6.2.2.2 Zabránění existence dalších nadprůměrných závislostí v datech Aby data vypadala realisticky, nemělo by se v nich vyskytovat závislostí příliš. Kromě požadavků na existenci vybraných závislostí proto zadáme i požadavek na neexistenci jiných. Jako nejjednodušší se jeví zadání obecného požadavku na neexistenci žádné závislosti v datech s tím, že bereme v úvahu požadavek na existenci požadovaných závislostí a maximální počet nalezených hypotéz nastavíme jako menší nebo roven požadovanému počtu závislostí. Fitness varianty dat obsahující dříve zadanou požadovanou závislosti bude navíc zlepšovat pozitivní výsledek jí odpovídajících zadání úloh. – 20 – LM ReverseMiner – popis implementace a ovládání 123 V tomto RM případu však bylo zohledněno, že v datech chceme mít vztah s literálem District( Louny) v antecedentu (viz RM Case Demo A) a byl vytvořen speciální atribut „District bez kategorie Louny“. Potom je možné omezující zadání vytvořit obecně takto: District_bez_kategorie_Louny( *) ⇒AAD1.0, 5 Quality( Bad) a určit, že tato úlohy nesmí nalézt žádnou hypotézu. V některých případech může být vhodné snížit váhu požadavku na neexistenci závislosti například na 0.5, a tím dát najevo, že je pro nás důležitější existence požadovaných závislostí (to však nebylo v RM Case Demo B použito). 6.2.3 Evoluce Úloha obsahuje více databázových sloupců, více požadavků na data a i zadaná velikost populace je větší než v první příkladě. Proto trvá evoluce o něco déle a můžeme lépe sledovat postupné plnění jednotlivých požadavků. Evoluce skončí po dvanácti krocích kvůli zadanému omezení na počet kroků, ale i kvůli zadané toleranci na počet nesplněných požadavků (nepodařilo se splnit úlohu požadující alespoň v jednom okrese 80 % klientů s nízkým platem) – viz obrázek. 6.3 RM Case Demo C Dále byl vytvořen RM Case Demo C, který se od Demo B liší pouze v povolení většího počtu evolučních kroků a zrušení tolerance na nesplnění některého požadavku. – 21 – LM ReverseMiner – popis implementace a ovládání 123 Cílový počet záznamů v generovaných datech: 1000 Velikost populace: 50 Maximální počet evolučních kroků: 100 Tolerance na nesplnění požadavků: 0 6.3.1 Evoluce Počáteční průběh je totožný jako u RM Case Demo B, ale hledání dat pak ještě pokračuje a konečně v kroku 24 nalezne variantu dat splňující plně zadané požadavky – viz obrázek. Pro rychlejší splnění i posledního požadavku by pomohlo zadat ještě jednu nebo více naváděcích úloh (pro četnosti mezi 70 a 80 %). Poznámka: U reálných úloh s mnoha požadavky a více záznamy v generovaných datech je však třeba počítat s o mnoho řádů delšími dobami řešení. 6.4 RM Case Demo D Úpravou Demo C vznikl tento RM Case. Má poukázat na výhody nastavení primární míry zajímavosti (primary IM). Naváděcí úlohy pro nadprůměrný počet špatných půjček byly úplně zrušeny a fitness jedinců je počítána přímo z hodnoty míry zajímavosti (v tomto případě Above Average Dependency). Minimálního hodnota p byla nastavena velmi malá (na hodnotu 0.01), aby bylo pravidlo nalezeno co nejdříve. Interval pro normalizování je nastaven na <0;1>, takže za žádoucí považujeme p minimálně 1 (jednou tolik více výskytů než v celé datové matici). Hodnoty p nad 1 už nemají na fitness vliv. Váha úlohy byla zvýšena na 2, aby se zdůraznila její vyšší priorita. Upraveny byly také úlohy pro vynucení nižších platů ve vybraných okresech (i když tady došlo i k malému významovému posunu). – 22 – LM ReverseMiner – popis implementace a ovládání 123 Cílový počet záznamů v generovaných datech: 1000 Velikost populace: 50 Maximální počet evolučních kroků: 100 Tolerance na nesplnění požadavků: 0 6.4.1 Evoluce Všimněme si výrazného zkrácení doby nutné k nalezení zadání vyhovujícího řešení oproti Demo C. To je dáno zejména eliminací kroků, kdy evoluce „bloudila“, protože z naváděcích úloh nebyla schopna dobře rozlišit potenciálně nadějné jedince. Zejména pro větší data má použití primární míry zajímavosti pro výpočet fitness daleko větší naději na úspěch a nalezení přijatelného řešení. 6.5 RM Case Demo E Je stejné jako Demo D, ale zvýšen byl cílový počet řádků generované matice dat na 5 000. Upraveny byly i parametry evoluce (počáteční populace, podíl mutací, podíl křížení přes sloupce) a váha dataminingových úloh. – 23 – LM ReverseMiner – popis implementace a ovládání 123 Cílový počet záznamů v generovaných datech: 5 000 Velikost populace: 50 Maximální počet evolučních kroků: 1000 Tolerance na nesplnění požadavků: 0 Initial Population: 100 Mutation Prob: 50 Cross Col prob: 70 Weigth of the „Low salary in some districts“ task: 2 Weight of the „No other above-average dependency“ task: 0.5 6.5.1 Evoluce Na průběhu evoluce je vidět neustále zlepšování fitness nejlepšího jedince i průměrné fitness celé populace. Doba nutná k nalezení požadovaných dat je sice podstatně delší než u předchozích úloh, ale stále přijatelná. 7 Doporučení pro práci s ReverseMinerem V této sekci budou postupně přibývat doporučení pro práci se systémem. 7.1 Od jednodušších úloh ke složitějším Pro získání základní představy o chování evolučního algoritmu je vhodné nejprve projít ukázkové RM případy, zkusit udělat drobné změny a teprve následně zkoušet zadávat vlastní – nejprve jednoduché, a potom složitější s více omezeními. Výsledky z evoluce (v podobě souborů RM.Best.DB.mdb a RM.Best.MB.mdb) je možné použít jako podkladová data pro nový RM Case. Přidáme nové sloupce a požadavky na vztahy, ale ponecháme jak původní sloupce (u kterých navíc zvolíme způsob inicializace zkopírováním z pokladových dat), tak ponecháme i všechny dosavadní DM úlohy představující požadavky na původní data. Tím zajistíme, že v rámci evoluce budou původní požadavky stále drženy (přestože i v původních sloupcích může ke změnám docházet – nezaškrtneme-li volbu „Column is fixed“) a postupně budou do dat přidávány i požadavky nové. – 24 – LM ReverseMiner – popis implementace a ovládání 123 7.2 Reálnost požadavků na data Při zadání každé DM úlohy definující omezení pro data je třeba pečlivě zkontrolovat, že taková data mohou teoreticky vůbec existovat. Tuto kontrolu je třeba provést znovu po přidání každé další DM úlohy, a to jak pro úlohu samotnou (nevyžaduje-li v datech závislosti, které není možné vygenerovat), tak zároveň v souvislosti s již dříve zadanými úlohami (že nemají navzájem protikladné požadavky na data). 7.3 Rychlý počátek evoluce Nedochází-li hned na počátku evoluce k alespoň nějakému zlepšování fitness aktuálně nejlepšího jedince (modrá čára v grafu), je patrně něco v zadání špatně a nemá cenu ztrácet čas čekáním na případné zlepšení. Příčinou mohou být například nereálné požadavky na data nebo požadavky, které jsou navzájem v rozporu. Na počátku má totiž populace velkou diverzitu, a proto by se mělo hodně uplatnit křížení, které povede k rychlému nalezení daleko lepších jedinců. Když se toto neděje, tak k nalezení lepších jedinců dochází pouze mutacemi, které jsou však spíše lokálního významu a nelze od nich očekávat radikální vylepšení. Mutace by se měly výrazněji uplatňovat až v další fázi evoluce při „dolaďování“ dat. 7.4 Vodítka pro evoluci Aby mohla evoluce pro „rozmnožování“ vybírat skutečně nejlepší jedince, musí být schopna mezi nimi rozlišovat. Bude-li požadavek pomocí DM úlohy zadán s vysokou hodnotou prahu kvantifikátoru, nebude pro většinu jedinců nalezen žádný vztah a z pohledu evoluce budou všichni stejně špatní. Proto je důležité nastavovat hodnoty prahů co nejnižší (resp. na 0), kvantifikátor označit v zadání úlohy jako „Primary IM“ a cílovou hodnotu míry zajímavosti uvádět v druhém z polí pro normalizaci tamtéž. Potom může evoluce dávat přednost jedincům, pro které požadovaný vztah platí na 0,3, oproti jedincům, kde platí pouze na 0,3. Zároveň je třeba opatrně pracovat s hodnotou parametru BASE. Vysoká hodnota BASE opět zabrání vložení hypotézy do výsledku. Proto by všechny požadavky měly být nejprve zadávány s co nejmenší hodnotou BASE. Následně mohou být vytvořeny klony, ve kterých postupně hodnotu BASE zvyšujeme. 7.5 Počáteční distribuce hodnot ve sloupcích Počáteční distribuci hodnot ve sloupcích volit tak, aby co nejvíce odpovídala požadované cílovému stavu. Budeme-li například požadovat v celé datové matici nahromadění výskytů klientů s nízkým platem, je nevhodné zadat uniformní rozdělení výše platu (nebo dokonce takové, které vygeneruje převážně vysoké hodnoty platu). Přestože evoluce pravděpodobně nakonec pomocí velkého množství mutací změní frekvence nízkých a vysokých platů, aby odpovídaly zadané DM úloze, tak jí to bude trvat dlouho. Dokonce může „uvíznout“ v lokálním minimu a řešení nebude nalezeno vůbec! V tomto ohledu zejména pozor na použití kvantifikátoru Fundované implikace s vysokými hodnotami parametru p pro obecné (krátké) antecedenty – např. Pohlaví( žena) ⇒0,9 Vzdělání( vysokoškolské). Jsou-li hodnoty na počátku vygenerovány přibližně rovnoměrně, bude evolučním operacím trvat dlouhou dobu, než zajistí u velké většiny objektů opravu hodnoty na ty, které vyhovují zadané implikaci. Chceme-li přesto zajistit silnou vazbu mezi dvěma sloupci, doporučuje se postupovat zadáním matematického vztahu, kterým budou hodnoty ve druhém sloupci inicializovány přesně podle hodnot ve sloupci prvním. Protože však bude matematický vztah využit pouze pro inicializaci, budou se hodnoty ve druhém sloupci v průběhu evoluce měnit a vazba mezi hodnotami v obou se sloupcích se bude narušovat. Aby neklesla pod námi stanovenou mez, zadáme požadavek ve formě implikačního asociačního pravidla. Výhoda je v tom, že nyní bude pravidlo „pouze“ bránit poklesu míry platnosti – 25 – LM ReverseMiner – popis implementace a ovládání 123 vztahu. To je méně časově náročné, než když se náhodným evolučním procesem vhodná kombinace hodnot hledala. 7.6 Obrnit se trpělivostí Řešení úloh pomocí evolučních algoritmů má svá specifika. Evoluce potřebuje (stejně jako v přírodě) čas, aby se dobrala k vhodnému řešení. Není možné očekávat, že náhodné změny budou hned a vždy přesně takové, jak bychom potřebovali. Zároveň neexistuje žádné všeobecně platné pravidlo, jak by měly být parametry pro tu či jinou úlohu nastaveny. Je třeba zkoušet různé možnosti, sledovat průběh evoluce a zkoumat EA report pro získání co nejlepší představy. Ani pak však není jistota, že nastavené parametry jsou ty nejlepší nebo že budou dobré pro jiný RM Case. I když jsou všechny parametry nastavené zdánlivě dobrým způsobem, tak se evoluce může chovat nepředpokládaně a dojít ke správnému řešení jí může trvat dlouho. I drobná změna parametrů může vést k naprosto odlišnému průběhu evoluce, době řešení i podobě nalezených dat. 7.7 Úlohy zajišťující neexistenci jiných vztahů v datech Při generování dat je vhodné zadat i úlohy, které zajistí, že v datech nebude příliš mnoho (jiných) vztahů/vzorů kromě těch, které v nich mít chceme. Takové úlohy se zadávají s požadavkem na počet nalezených hypotéz menší než X nebo obrácením intervalu pro normalizaci (viz výše). Ukazuje se však, že ve většině případů je vhodné u takových úloh snížit váhu (např. na 0,5 nebo na 0,3), aby v evoluci nejprve dostávali přednost jedinci směřující k vytvoření vztahů, které mít v datech chceme. Teprve až po nalezení takové podoby dat se má evoluce soustředit na „zničení“ případných jiných náhodou vzniklých závislostí v datech (to je totiž obvykle snazší). 7.8 Zabránění unifikaci populace Na základě průběhu grafu evoluce je třeba zvážit možné změny v parametrech evoluce. Dochází-li ke snížení diverzity populace, je možné zkusit: • zvýšit procento mutací, počet opakování a maximální počty řádků, kterých se týkají; • zvýšit velikost populace a/nebo zvýšit velikost turnaje (viz výše). Zůstává-li dlouhodobě stejná hodnota fitness aktuálně nejlepšího jedince, je možné: • snížit velikost turnaje. 7.9 Zrychlení práce s diskem Vytváření dat a jejich ukládání na disk je časově poměrně náročné a to tím více, čím větší je cílový počet řádků (TargetDataRows). Zrychlení práce s diskem by mělo vést i ke kratším dobám hledání dat vyhovujících požadavkům. Kromě použití rychlého SSD disku se jako možné řešení jeví použití RAM disku (virtuálního disku v paměti). Funkčnost tohoto řešení byla testována s volně dostupnou implementací IMDisk (http://www.ltr-data.se/opencode.html/#ImDisk). Nejsou však zatím dostatečné zkušenosti, k jak významnému zrychlení může dojít. – 26 –
Podobné dokumenty
Skripta k praktikům z kvantové chemie
pro přihlášení k síti VŠCHT. V případě, že program nedokáže rozpoznat adresu, zkuste do pole
hostname zadat pouze název klastru, tedy altix.vscht.cz nebo jen altix. Poté vás program vyzve
k uložení...
Metodologie orientované na tvorbu webových sídel
návrhu. Další novinkou je pochopitelně samotný navigační návrh, podobně jako v jiných
metodologiích tohoto typu, který definuje způsoby jakými lze přecházet z jednoho uzlu (node,
formulář, stránka)...
LISp-Miner - Martin Šulc
Databáze a Metabase jsou popsány výše. Programy jsou ke stažení na adrese
http://lispminer.vse.cz/download/download.php a jsou všechny v balíku LISpMiner.zip nebo také v LISp-Miner.4ft.zip.
5.1 Mod...
Operační výzkum
Úlohy určitého typu mohou mít spousty různých instancí (konkrétních případů), které se liší
např. v konkrétních hodnotách číselných parametrů.
Instance úlohy je konkrétní případ úlohy, který je zad...
NEC GT5000
Toto zařízení bylo testováno a shledáno vyhovujícím limitům
pro digitální zařízení třídy A, dle části 15 pravidel FCC.
Tyto limity jsou vytvořeny aby zajistily přijatelnou ochranu
proti škodlivému ...
Zde - 2MSOFT
Vkládání základních údajů o klientech – každý klient se vkládá pouze jednou, pak je u něj vidět, kolik a
jakých smluv již má uzavřeno, nebo pokud v dané smlouvě figuruje jako pojištěná osoba – může...