123 LM Reverse-Miner - popis implementace - LISp

Transkript

123 LM Reverse-Miner - popis implementace - LISp
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

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í...

Více

Metodologie orientované na tvorbu webových sídel

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)...

Více

LISp-Miner - Martin Šulc

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...

Více

Operační výzkum

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...

Více

NEC GT5000

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 ...

Více

Zde - 2MSOFT

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...

Více