VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA METALURGIE A MATERIÁLOVÉHO INŽENÝRSTVÍ STUDIJNÍ OPORA Název opory/předmětu: Matematické prostředky informatiky Číslo předmětu: 638-0804 Autor/Autoři: Jiří David Katedra: 638 1
Tento text je určen jako pomocná literatura studentům navazujícího magisterského studia oboru Automatizace a počítačová technika v průmyslových technologiích Fakulty metalurgie a materiálového inženýrství VŠB-TU Ostrava. Ostrava, 2013 2
MATEMATICKÉ PROSTŘEDKY INFORMATIKY Zařazení předmětu: 1. ročník navazujícího studia Přednášející: doc. Ing. Jiří David, Ph.D.; místnost A 556, tel.: 59 732/5163, j.david@vsb.cz Okruhy ke zkoušce 1. Chyby, zdroje a typy chyb 2. Zaokrouhlovací chyby 3. Chyby metody 4. Neúplná čísla a zobrazení čísel v počítači 5. Korektnost, podmíněnost a stabilita numerických úloh 6. Úĺohy optimalizace 7. Klasifikace optimalizačních metod 8. Principy základních optimalizačních metod 9. Evoluční metody 10. Princip genetických algoritmů 11. Fitness hodnota 12. Kódování řetězců 13. Ukončování genetického algoritmu 14. Stagnace genetického algoritmu 15. Výběr řetězců 16. Principy jednotlivých metod výběru 17. Křížení 18. Mutace 19. Druhy mutace 20. Varianty genetických algoritmů 21. Princip evoluční strategie 22. Princip diferenciální evoluce 23. Princip SOMA 24. Princip UIS 25. Datové sklady 26. Data mining 27. Úlohy data miningu 28. Princip metodologie CRISP-DM 29. Metody data miningu 30. Princip rozhodovacích stromů 3
Obsah 1 ÚVOD... 6 2 ZDROJE CHYB A STABILITA PŘI NUMERICKÉM ŘEŠENÍ UVAŽOVANÝCH PROBLÉMŮ... 6 3 ÚLOHA OPTIMALIZACE... 19 3.1 SOUČASNÉ ROZDĚLENÍ MODERNÍCH OPTIMALIZAČNÍCH METOD... 20 3.2 SHRNUTÍ VLASTNOSTÍ METOD OPTIMALIZACE... 21 3.3 STOCHASTICKÝ HOROLEZECKÝ ALGORITMUS... 21 3.4 TABU SEARCH (ZAKÁZANÉ PROHLEDÁVÁNÍ)... 21 3.5 OPTIMALIZACE POMOCÍ MRAVENČÍ KOLONIE... 22 3.6 EVOLUČNÍ METODY... 22 4 GENETICKÉ ALGORITMY... 23 4.1 ZÁKLADNÍ POJMY, OBJEKTY A OPERACE GA... 23 4.1.1 Fitness hodnota... 24 4.1.2 Účelová funkce jako geometrický problém... 25 4.1.3 Opačný problém... 25 4.1.4 Kódování diskretizace prostoru... 27 4.1.5 Vztah účelové funkce a fitness funkce... 28 4.1.6 Princip genetických algoritmů... 30 4.2 CELÝ ALGORITMUS VE ZKRATCE... 31 4.2.1 Ukončování genetického algoritmu... 31 4.2.2 Algoritmy ukončovacích podmínek... 32 4.2.3 Stagnace... 32 4.3 VÝBĚR ŘETĚZCŮ... 32 4.3.1 Vážená ruleta... 33 4.3.2 Turnajový způsob výběru jedinců... 35 4.3.3 Stochastický rovnoměrný výběr... 36 4.3.4 Výběr na základě míry úspěšnosti... 37 4.3.5 Náhodný výběr... 38 4.3.6 Výběr na principu míry diverzity (různorodosti)... 38 4.3.7 Elitářství... 39 4.3.8 Zohlednění věku jedinců při výběru... 39 4.4 KŘÍŽENÍ... 40 4.4.1 Algoritmus pro křížení... 41 4.5 MUTACE... 42 4.6 MEZILEHLÉ KŘÍŽENÍ... 44 4.7 VARIANTY GENETICKÝCH ALGORITMŮ... 45 4.7.1 Hybridní GA... 45 4.7.2 Paralelní GA... 45 4.7.3 Víceúrovňové distribuované GA... 45 5 DALŠÍ EVOLUČNÍ ALGORITMY... 46 5.1 EVOLUČNÍ STRATEGIE... 46 5.2 DIFERENCIÁLNÍ EVOLUCE... 48 5.2.1 Algoritmus diferencialní evoluce... 49 5.3 SAMOORGANIZUJÍCÍ SE MIGRAČNÍ ALGORITMUS SOMA... 50 5.4 SROVNÁNÍ S GENETICKÝMI ALGORITMY... 51 5.5 UMĚLÝ IMUNITNÍ SYSTÉM... 52 6 MATLAB TOOLBOX GENETICKÉ ALGORITMY... 54 6.1 UŽITÍ GENETIC ALGORITHM TOOL... 54 7 DATOVÉ SKLADY ZDROJ ZNALOSTÍ A INFORMACÍ... 79 7.1 PROČ INVESTOVAT DO VYBUDOVÁNÍ DATOVÝCH SKLADŮ?... 79 7.1.1 Data mining v kontextu Business Intelligence... 81 4
7.1.2 Co je to data mining?... 82 7.1.3 Proč Data mining vznikl?... 83 7.1.4 Co data mining umí a k čemu se dá použít?... 83 7.1.5 Jak Data Mining funguje?... 83 7.2 METODOLOGIE CRISP-DM... 84 7.2.1 Definice problému/cílů:... 84 7.2.2 Příprava dat/porozumění datům:... 86 7.2.3 Profilování a popis dat:... 87 7.2.4 Vytváření modelu:... 88 7.2.5 Ověřování modelu:... 89 7.2.6 Uvedení modelu do praxe:... 90 7.2.7 Závěr:... 92 7.2.8 Skóring data miningovými modely... 92 7.3 ČLENĚNÍ DATA MININGOVÝCH ÚLOH... 92 7.3.1 Přehled základních metod... 93 7.3.2 Základní srovnání vybraných metod... 94 7.4 ROZHODOVACÍ STROMY... 95 7.5 DATOVÉ SKLADY PŘI KONTINUÁLNÍ VÝROBĚ... 100 7.5.1 Zdroje primárních dat... 100 7.5.2 Transformace dat... 101 7.5.3 Agregace dat... 102 7.5.4 Validace dat... 102 7.5.5 Prezentace dat... 103 7.5.6 Dolování v datech... 103 7.5.7 Příklad principu dolování v datech... 104 7.5.8 Aplikace DS... 105 8 PŘÍKLAD TESTU... 107 5
1 ÚVOD Numerická matematika je věda, která se zabývá řešením matematicky formulovaných úloh pomocí logických operací a aritmetických operací s čísly o konečné délce. 2 typy matematicky formulovaných úloh numericky formulované úlohy - jednoznačný funkční vztah mezi konečným počtem vstupních a výstupních dat, jedná se obvykle o algebraické úlohy, někdy je možno nalézt teoretické řešení úlohy pomocí konečné posloupnosti aritmetických a logických operací, jindy ne (lze nalézt pouze přibližné řešení) úlohy, které nejsou numericky formulované - obvykle úlohy matematické analýzy, ve kterých je obsažen nekonečně krátký krok (např. výpočet derivace, integrálu, řešení diferenciální rovnice); tyto úlohy je třeba nějakým způsobem převést na numerické úlohy Numerickou metodou rozumíme postup výpočtu numerické úlohy nebo její převod na úlohu jednodušší či postup, který nahrazuje matematickou úlohu úlohou numerickou. Numerické metody: řešení matematických problémů s libovolnou přesností po provedení konečného počtu aritmetických a logických operací. Algoritmem rozumíme realizaci numerické metody, tj. konkrétní konečnou posloupnost operací, která s požadovanou přesností převede vstupní data na výsledné hodnoty. Algoritmus lze programovat na počítači. 2 ZDROJE CHYB A STABILITA PŘI NUMERICKÉM ŘEŠENÍ UVAŽOVANÝCH PROBLÉMŮ Zdroje a typy chyb Chyby ve vstupních údajích nepřesnost měřicích přístrojů nepřesný matematický model Chyby způsobené použitou numerickou metodou (Truncation errors) chyby metody Zaokrouhlovací chyby (Roundoff errors) - v důsledku zaokrouhlování při výpočtech s čísly o konečné délce Čísla N = {1, 2, 3, } přirozená čísla Z = {, -3, -2, -1, 0, 1, 2, 3, } celá čísla p, kde p, q Z, q 0 racionální čísla konečný nebo nekonečný periodický desetinný q zlomek 2, log 3, π,... iracionální čísla nekonečné neperiodické desetinné zlomky R reálná čísla = racionální + iracionální čísla Zobrazení čísel v počítači Dvojková soustava {0, 1} 10011101 2 = 1.2 7 + 0.2 6 + 0.2 5 +1.2 4 + 1.2 3 + 1.2 2 + 0.2 1 + 1.2 0 = 128 + 0 + 0 + 16 + 8 + 4 + 0 + 1 = 157 10 Osmičková soustava {0, 1, 2, 3, 4, 5, 6, 7} 6
(010 011 101) 2 = 235 8 = 2.8 2 + 3.8 1 + 5.8 0 = 128 + 24 + 5 = 157 10 Šestnáctková soustava {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} (1001 1101) 2 =9D 16 = 9.16 1 + 13.16 0 = 144 + 13 = 157 10 Neúplná čísla A přesná hodnota veličiny a přibližná hodnota (aproximace přesné hodnoty A) A-a absolutní chyba aproximace a A a a relativní chyba aproximace a a A neúplné číslo 1 a 2 a 1; a 2 interval pro aproximaci a a 1 ; a2 platí: A a a 2 a1 a pro střední aproximaci 1 + a a 2 a = platí: 2 a A a 1 = α 2 2 A = a ±α zápis neúplného čísla A a a α.100 a = A a a α = δ a (procentuální chyba) relativní chyba střední aproximace a neúplného čísla A relativní chyba střední aproximace a neúplného čísla A vyjádřená v % Zaokrouhlování ( d ) a má d desetinných míst za desetinnou čárkou ( d ) a je správně zaokrouhlenou hodnotou čísla A když Je-li 1 A a =. 10 2 ( d ) d 1 A a. 10 2 ( d ) d, zaokrouhlujeme vždy na sudou poslední číslici. k-té desetinné místo za desetinnou čárkou čísla a je platné když Počítání s neúplnými čísly předpoklad: kladná čísla a A A = a ± α b 1 a 2 B B = b ± β 1 b 2 1 A a. 10 2 k Součet a 1 + b1 A + B a2 + b2 střední aproximace součtu ( a1 + b1 ) + ( a2 + b2 ) a1 + a2 b1 + b = + 2 2 2 absolutní chyba aproximace součtu 2 = a + b 7
( a + b ) ( a + b ) 2 2 1 1 a2 a1 b2 b = + 2 2 2 relativní chyba součtu α + β a + b 1 = α + β Rozdíl opačné číslo k číslu B je určeno intervalem b2; b1 a1 A a 2 b2 B b 1 a1 b2 A B a2 b1 střední aproximace rozdílu ( a1 b2 ) + ( a2 b1 ) a1 + a2 b1 + b2 = = a b 2 2 2 absolutní chyba aproximace rozdílu ( a2 b1 ) ( a1 b2 ) a2 a1 b2 b1 = + = α + β 2 2 2 relativní chyba rozdílu α + β a b Součin α A = a ± α = a 1 ± = a 1 ± A a β B = b ± β = b 1 ± = b 1 ± δ B b totéž v jiné formě zápisu a 1 δ A a 1+ δ ( A ) ( A ) ( 1 δ ) B b( 1+ δ ) ( δ ) ( ) b B B po vynásobení ab 1 δ 1 δ AB ab 1+ δ 1+ δ ( A )( B ) ( A )( B ) ( 1 δ δ + δ δ ) AB ab( 1+ δ + δ + δ δ ) ab A B A B po zanedbání součinu δ Aδ B obdržíme ab 1 ( δ A + δ B ) AB ab 1+ δ A + δ B totéž v jiné formě zápisu AB = ab[ 1 ± ( δ A + δ B )] nebo AB = ab ± ab( δ A + δ B ) závěr: [ ] [ ( )] střední aproximace součinu je a b relativní chyba střední aproximace součinu: δ = δ + δ A B AB A B A B 8
α β δ A + δ B = + α + β a b absolutní chyba střední aproximace součinu: ab( ) ab = b a Podíl odvození relativní chyby střední aproximace čísla c γ C c + γ b β B b + β pro B 1 pak platí C = 1 B 1 1 1 b + β B b β z porovnání výše uvedených vztahů vyplývá 1 pro dolní mez: c γ = pro horní mez: b + β ( c γ )( b + β ) = 1 ( c + γ )( b β ) = 1 po sloučení cβ γ b = cβ + γ b β γ = b c To znamená, že relativní chyba střední aproximace čísla střední aproximace čísla B. δ C = δ B Z toho plyne δ = δ + δ = δ + δ = δ AC Závěr: A C A B A B střední aproximace podílu je b a relativní chyba střední aproximace podílu: δ = δ + δ absolutní chyba střední aproximace podílu: ( δ + δ ) A B a b A A B B 1 c + γ = b β C = 1 je rovna relativní chybě B Zjednodušující pravidla V součtu a rozdílu ponecháme tolik číslic za desetinnou čárkou, kolik jich má sčítanec s nejmenším počtem platných číslic za desetinnou čárkou. V součinu a podílu ponecháme tolik číslic, kolik jich má neúplné číslo s nejmenším počtem platných číslic. Během výpočtů nezaokrouhlujeme mezivýsledky, pracujeme s maximální možnou přesností, zaokrouhlujeme jenom výsledek. Jsme-li nuceni zaokrouhlovat i mezivýsledky, pak ponecháme alespoň o dvě číslice více než doporučují první dvě pravidla. 9
Definice chyb x - přesná hodnota x ~ - přibližná hodnota A(x) - absolutní chyba a(x) - odhad absolutní chyby R(x) - relativní chyba r(x) - odhad relativní chyby Intervalový odhad x Relativní chyba Počet platných číslic Nechť x 0, x zapíšeme pomocí číslic x 1, x 2,, x n nechť m n nechť x 1, x 2,, x m jsou platné cifry, x 1 0. Pak Přesnost výpočtu je obvykle dána relativní chybou. Chyby metody (aproximace) Při výpočtech derivace, integrálu apod. nahrazujeme nekonečně krátký krok dx konečným krokem h Tento typ chyby nijak nesouvisí se zaokrouhlováním 1 veličinu lze aproximovat mnoha různými způsoby Řád metody - Je-li chyba δy veličiny y úměrná δy ~ h α ~ O(h α ) pak α nazýváme řádem metody Ukázky různých způsobů aproximace - odvození chyby metody derivace 10
integrál - obdélníková metoda šířka intervalu b a h = N chyba v 1 podintervalu = = celková chyba Chyba metody vyššího řádu klesá rychleji při zmenšování kroku h. Pokud jsou metody jinak rovnocenné, vybereme metodu vyššího řádu. Znalost řádu metody umožňuje: Odhad chyby Zpřesnění výsledku Nejjednodušší způsob - spočtu odhady výsledku y h pro krok h a y h /2 pro krok h/2 Příklad pro metodu 1.řádu y h = y + a h + b h2 11
y h /2 = Koeficienty a,b často nemohu spočítat, ale přesto platí = a tedy kombinací y h a y h/2 je chyba odhadnuta a řád metody o 1 zvýšen. Zaokrouhlovací chyby Reprezentace čísla v počítači Šíření chyb ve výpočtech Závislost charakteru chyby na velikosti kroku h Reprezentace čísla v počítači Celá čísla - přesné výpočty, velmi omezený rozsah INTEGER - 2 byty (INTEGER*2) - 16 bitů 216 čísel LONGINT - 4 byty (INTEGER*4) - 32 byty 232 čísel Reálná čísla - čísla v pohyblivé desetinné tečce - FLOATING POINT vědecký tvar čísla V počítači mantisa a exponent v dvojkové soustavě. Délka MANTISY - tj. počet bitů na mantisu přesnost čísla; přesnost počet čísel mezi 1 a 2 interval mezi čísly mezi 1 a 2 je rovnoměrný - do paměti se mohou ukládat jenom čísla 1, 1 +, 1 + 2,, 2 -. Čím více bitů na mantisu, tím menší menší chyby při zaokrouhlování (u mezivýsledků je v registrech procesoru přesnost vyšší). Byly uvedeny všechny mantisy, při změnách změnách exponentů se krok mezi čísly zvýší úměrně 2exponent (relativní chyba čísla se ale nemění). Délka EXPONENTU - tj. počet bitů na exponent - určuje rozsah; pozn. 1 exponent se zvlášť musí vyhradit pro 0, která nemá logaritmus, mantisy u tohoto exponentu lze využít pro vyznačení chyb (overflow, undefined), dále se může využít pro řídkou síť čísel pod minimem k ošetření podtečení (underflow) 8-11 bitů na exponent 8 bitů na exponent např. 12
9 bitů na exponent - 10 bitů na exponent - 11 bitů na exponent - Jednoduchá přesnost = 4 byty TurboPascal - Single Fortran - Real = Real*4 norma IEEE ne dělení M-E Přesnost 1,5 = 6 bytů často 1 bit znaménko + 8 bitů exponent + 23 bitů mantisa TurboPascal - Real 1 bit znaménko + 8 bitů exponent Dvojitá přesnost = 8 bytů TurboPascal - + 39 bitů mantisa Double Fortran - Double = Real*8 norma IEEE často 1 bit znaménko + 11 bitů exponent + 52 bit mantisa Další typy TurboPascal - Extended (Real*10), Comp (Integer*8) Šíření chyb ve výpočtech Nebezpečné jsou operace, které mohou podstatně zvětšit relativní chybu!! sčítání, odečítání Pokud výsledek malý zvětší se silně r!! Často nemohu rozhodnout, zda výsledek je 0 nebo není!! Odečteme-li např. čísla 1.32483726, 1.32483357 známá na 9 platných číslic (přesněji ] dostaneme výsledek x-y = 0.00000369 s přesností na 3 platné číslice (přesněji ). Motivace vývoje řady numerických postupů - snaha vyhnout se odečítání dvou přibližně 13
stejně velkých čísel. násobení, dělení Násobení a dělení nemohou podstatně zvětšit zaokrouhlovací chybu, nejsou tedy nebezpečné. Pozn. Dělení číslem 0 je hrubá chyba - nejde o zaokrouhlovací chybu. Závislost charakteru chyby na velikosti kroku h Zaokrouhlovací chyby při malém h vznikají z různých příčin - u derivace v důsledků odečítaní přibližně stejných čísel, u integrálu v důsledku počtu operací Pozn. V obou případech při stanovení příliš krátkého kroku h může dojít i k hrubým chybám vzhledem k rozdílu rovném 0 v důsledku zaokrouhlení nebo vzhledem k opakovanému provádění součtů, které se při dané numerické přesnosti neprojeví! Korektnost a podmíněnost úlohy Korektnost úlohy Definice: Nechť úlohou je najít řešení y N (N je množina možných řešení) pro zadaný vektor x M (M je množina vstupních dat). Pak úloha je korektní právě tehdy, jsou-li splněny následující dvě podmínky 1. právě jedno řešení y pro M. 2. Řešení spojitě závisí na vstupních datech, tj. jestliže pro z množiny přirozených čísel je y n řešení pro vstupní data x n, a jestliže y je řešení pro vstupní data x, nechť dále ρ je norma v množině vstupních dat a je norma v množině možných řešení, pak platí 14
V praxi se řeší i nekorektní úlohy, ale 1. krok řešení spočívá v nalezení vhodného způsobu, jak převést úlohu na úlohu korektní (např. podmínkou na výsledek; interpretací vstupních dat; vhodnou volbou normy v prostoru řešení apod.) Podmíněnost úlohy Definice: Podmíněnost úlohy Cp je daná poměrem relativní změny výsledku ku relativní změně vstupních dat, tj. Pokud C 1, říkáme, že úloha je dobře podmíněná, pokud C p > 100, úloha je špatně p podmíněná. Pokud je přesnost použitého typu čísel ( r (x) = ε ), pak úloha s C p 1 > ε není v rámci dané přesnosti řešitelná. Často se pro špatně podmíněné úlohy používají speciální metody, které omezují růst zaokrouhlovacích chyb. Příklad: Soustava lineárních rovnic s maticí blízkou k singulární (špatně podmíněná matice). Nechť je dána úloha Nechť vstupem je hodnota a výstupem hodnota x. Pak Při Numerická stabilita je úloha špatně podmíněná. U nestabilní metody (algoritmu) se relativně malé chyby v jednotlivých krocích výpočtu postupně akumulují tak, že dojde ke katastrofální ztrátě přesnosti numerického řešení úlohy. U stabilních metod roste chyba výsledku s počtem kroků N nejvýše lineárně (v ideální, ale vzácné situaci, kdy je znaménko chyby náhodné, zaokrouhlovací chyba roste ~ N ). U nestabilních metod roste zaokrouhlovací chyba rychleji, např. geometrickou řadou ~ q N, kde q > 1. Nestabilita algoritmu vzniká v důsledku akumulace zaokrouhlovacích chyb. Typicky se objevuje v rekurzivních algoritmech. Nestabilita metody může vznikat i v důsledku 15
akumulace chyby metody, stabilita metody může záviset na velikosti použitého kroku h. Nestabilita metody se často objevuje při numerickém řešení počátečního problému pro obyčejné a parciální diferenciální rovnice. Příklady nestabilních algoritmů 1. Nestabilní rekurze - ukážeme si na poněkud umělém případu počítání mocnin čísla zvaného "Zlatý řez" Lehce ukážete, že mocniny splňují jednoduchý rekursní vztah Protože známe a mohli bychom zkusit počítat mocniny odečítáním, což je obvykle rychlejší než násobení. Obrázek ukazuje, že uvedený postup zcela nepoužitelný, při jednoduché přesnosti dostaneme viditelné chyby výsledky už od n = 16, kdy. Pro n = 20 dostanu poprvé záporný výsledek rekurze, a tedy rekurze už nijak neaproximuje hodnotu mocniny. Nejdříve vzroste relativní chyba (chyba mění znaménko), pak se objeví záporné hodnoty a nakonec začne dokonce růst absolutní hodnoty. Nestabilita se projeví i ve dvojité přesnosti, zaokrouhlovací chyba narůstá ale z menší hodnoty a tak by se 1. záporný výsledek rekurze objevil pro n=40. Příčina nestability je v tom, že uvedená rekursní formule má ještě druhé řešení Φ 2 = ( 5 1) / 2 < 1 < Φ. Protože rekurzivní relace je lineární, absolutní velikost zaokrouhlovací chyby bude narůstat geometrickou řadou s kvocientem q = Φ 2 > 1. Protože navíc řešení klesá, relativní velikost 16
zaokrouhlovací chyby roste geometrickou řadou s kvocientem q = Φ / Φ 1. 2 > Uvedený příklad byl umělý, nicméně u mnoha speciálních funkcí (např. Besselovy funkce) se k výpočtu hodnoty funkcí různých řadů používají podobné rekurzivní relace, vždy ovšem tak, aby metoda byla stabilní. 2. Nestabilní metoda pro výpočet obyčejných diferenciálních rovnic Nechť řešíme obyčejnou diferenciální rovnici 1. řádu y' = f(x,y) Na příkladu rovnice y'= - y s počáteční podmínkou y(0) = 1 řešené ve směru růstu proměnné x ukážeme, že dvoukroková metoda 2. řádu je nestabilní. Jde vlastně o podobnou rekurzi jako výše a pro poměr q = y(x+h)/y(x) existují 2 řešení, q 1 1+ h 2 = h + je v absolutní hodnotě menší než 1 a odpovídá prvním třem členům 2 Taylorova rozvoje řešení y = y( 0) exp( x), druhý kořen q 2 = h 1+ h je v absolutní hodnotě větší než 1 způsobuje nestabilitu algoritmu. Na následujícím grafu je porovnána celková relativní chyba uvedené nestabilní metody s chybou Eulerovy metody Eulerova metoda se obvykle nepoužívá, neboť jde o metodu 1. řádu s velkou chybou metody, nicméně je pro uvedený případ stabilní vůči zaokrouhlovacím chybám. Obrázek ukazuje, že na začátku řešení je nestabilní metoda vzhledem k relativně malé chybě 17
metody přesnější, ale postupný růst zaokrouhlovací chyby přivede nakonec ke katastrofálním chybám. Katastrofálním chybám nelze zabránit zkracováním kroku, užití dvojné přesnosti katastrofu pouze oddálí. U stabilní metody roste chyba s délkou intervalu nejvýše lineárně a chybu lze zmenšit zkracováním kroku. 3. Nestabilní spline Při interpolaci dat pomocí kubického splinu (lokální interpolace kubickým polynomem se spojitou derivací) je třeba zadat 2 podmínky (např. hodnotu derivace funkce) v obou krajních bodech. Nesprávnou a nestabilní metodu dostaneme, pokud obě podmínky zadáme v 1 z okrajových bodů. Pokud jako 2. podmínku v prvním okrajovém bodu zadáme např. jako 2. derivaci rovnou hodnotě druhé derivace, která vyšla při stabilním postupu, tj. zadaných 1. derivacích v obou okrajových bodech, obě úlohy jsou z matematického hlediska zcela ekvivalentní a v případě počítání s přesnými čísly bych dostal totožný výsledek. Pokud však numericky počítám s konečnou délkou čísel, zaokrouhlovací chyba však při postupném počítání od 1 okraje narůstá a řešení začne mezi zadanými body silně oscilovat. Na grafu je ukázáno je několik prvních oscilací chybně počítaného kubického splinu, další hodnoty dále oscilují, ale jejich hodnota je velmi velká (až 1013). Při počítání v dvojité přesnosti se viditelné oscilace objeví pro x > 4. Volba metody (algorimu) Základním požadavkem je možnost vyřešení úlohy s dostatečnou přesností. Často je sledována konvergence1, což znamená schopnost vyřešit úlohu s libovolně vysokou přesností (omezené jen zaokrouhlovací chybou) při kroku (při počtu operací ). Při výběru metody hraje roli i složitost algoritmu (počet operací nutných k získání výsledku se zadanou přesností) a paměťové nároky. Numerické knihovny Pro drtivou většinu úloh jsou k dispozici procedury ve standardních knihovnách. Pokud úloha není triviální, neprogramuji ji sám! Většina knihoven je ve FORTRANU Profesionální knihovny jsou drahé (bývají k dispozici na velkých počítačích) - nejznámější NAG, IMSL 18
Pro ukázky budeme používat knihovny NUMERICAL RECIPES (je přílohou knihy) - FORTRAN, C, Pascal - volně (byť často s omezeními) dostupný software - vyhledávání na http://gams.nist.gov, mnoho softwaru na serverech NETLIB, např. http://netlib.no. 3 ÚLOHA OPTIMALIZACE Problematika optimalizace jako takové je předmětem matematických a technických publikací, aplikací a výzkumu již po dlouhou dobu. Dlouho byla problematika optimalizace řešena dnes již klasickým matematickým aparátem, jenž je založen na infinitezimálním počtu, variačních či numerických metodách. Avšak v rámci současných inženýrských problémů není žádným problémem setkat se s optimalizací problému, u nějž jsou argumenty účelové funkce definovány v různých číselných oborech (reálný, celočíselný, diskrétní, logický apod.). Navíc mohou být na některé argumenty v průběhu výpočtu kladeny požadavky na změnu hodnoty, dle omezení vyplývající z fyzikální či ekonomické realizovatelnosti. Zkrátka, klasické optimalizační metody již určitou třídu úloh, které překračují určitý stupeň obtížnosti či komplexity, řeší delší dobu a často s nepřesnými závěry vyplývajícími z nutnosti zavést zjednodušující (většinou linearizující) předpoklady či počáteční podmínky. Nezřídka je také požadována účast vysoce fundovaných řešitelů. Proto se v posledních letech hledají výkonnější metody, jenž by ulehčily řešení složitých optimalizačních úkolů a zpřístupnily by je tak širší inženýrské, ale i vědecké komunitě. V posledním čtvrtstoletí vznikla a v podstatě byla dovedena k dokonalosti množina nového typu algoritmů tzv. algoritmů evolučních. Tyto metody jsou založeny na principech vysledovaných v přírodě - v podstatě napodobují systémy přirozeného výběru na úrovni genetiky, které využívají k hledání globálního extrému optimalizované funkce. V současné době již v informatice existuje celá paleta evolučních algoritmů, které jsou založeny na různé interpretaci Darwinovy evoluční teorie. Překvapující na této netradiční oblasti informatiky je to, že kromě toho, že se už stala organickou součástí moderní informatiky, stala se také jakýmsi mostem mezi vědami o živé přírodě a určitou částí humanitních věd. Informatici mají teď v rukou mocný simulační nástroj, pomocí kterého můžou získat relevantní odpovědi na různé důležité otázky a problémy evoluční biologie, psychologie, sociologie atd., které byly donedávna přístupné jen spekulativním diskusím založeným hlavně na analogiích nebo domněnkách autorů. Z pohledu historie a historie vědy především jde o unikátní fenomén moderní vědy. Mosty mezi různými vědními oblastmi vznikají obvykle jako výsledek intenzivních interdisciplinárních snah překlenout dvě různé vědní oblasti. V našem případě šlo o poměrně jednostranný akt v rámci informatiky, kdy se aplikovala paradigmata živé přírody jako možné alternativní algoritmy učení a adaptace. Množina algoritmů pro hledání globálního extrému je dále rozšířena o tzv. stochastické vyhledávací algoritmy, které také využívají principů vysledovaných v přírodě, avšak nevyužívají poznatků z genetiky, ale pouze výsledků z pozorování různých organismů či skupin organismů. Jako stochastické vyhledávací algoritmy lze např. jmenovat metodu Ant Colony Optimization (optimalizace pomocí mravenčí kolonie ), nebo Particle Swarm ( rojení částic ). Dále lze skupinu optimalizačních algoritmů doplnit o ryze stochastické algoritmy, které prohledávají prostor možných řešení zcela náhodnými cestami, i když podle exaktně zadaných pravidel. Jsou to např. Random Search-Walk (hledání náhodným procházením ), Tabu Search (zakázané prohledávání) aj. Algoritmy z řad genetických jsou také vyhledávacími algoritmy, liší se však od běžných optimalizačních a vyhledávacích algoritmů v několika významných bodech. Z toho lze odvodit, že nestačí mít pouze dobrý algoritmus, ale je mnohdy velice důležité v souvislosti s řešeným problémem vědět, s jakou množinou problémů je vůbec daný algoritmus schopen pracovat. Znamená to tedy stanovit 19
tzv. definiční obor daného algoritmu. Výrazem definiční obor se obvykle rozumí vhodná číselná množina, pro kterou je daná funkce definována. Definičním oborem se v případě evolučních algoritmů rozumí množina funkcí, na níž dává daný algoritmus přinejhorším uspokojivé výsledky. 3.1 Současné rozdělení moderních optimalizačních metod Optimalizační algoritmy slouží k nalezení extrému dané účelové funkce tak, že hledají optimální numerickou kombinaci jejich argumentů. Tyto algoritmy lze rozdělit podle principů jejich činnosti tak, jak je naznačeno v následujícím přehledu. Toto rozdělení není samozřejmě jediné možné, nicméně vzhledem k tomu, že vcelku dobře vystihuje současný stav, lze jej brát jako jeden z možných pohledů na klasické, ale i moderní optimalizační metody [21]. Tabulka 1 - Rozdělení metod globálního prohledávání a optimalizace Numerativní Deterministické Stochastické Evolutionary Computation Greedy (evoluční strategie) Hill-Climbing (horolezecký algoritmus) Tabu Search (zakázané prohledávání) Stochastic Hill-Climbing Branch&Bound (stochastický horolezecký algoritmus) Random Search-Walk Depth-First (hledání náhodnou chůzí ) Best-First Monte Carlo Calculus based Simulated Annealing (simulované žíhání) Smíšené Scatter Search & Path Relinking ( rozptylové prohledávání ) Ant Colony Optimization ( optimalizace mravenčí kolonií ) Immune System Methods ( metoda imunologického systému ) Mathematical Programming Particle Swarm ( rojení částic ) Genetic Algorithms (genetické algoritmy) Differential Algorithms (diverenciální evoluce) SOMA (Samo-Organizující se Migrační Algorimus) Enumerativní metody jde o výpočet všech možných kombinací daného problému. Přístup vhodný pro problémy, u nichž jsou argumenty účelové funkce diskrétního charakteru a nabývají malého množství hodnot. Deterministické metody postaveny pouze na rigorózních metodách klasické matematiky. Je nutno zadat předběžné předpoklady, jenž umožní podávat efektivní výsledky metody. Předpoklady pro zadání řešení funkce deterministické metodě tedy obvykle jsou: - problém je lineární, - problém je konvexní, - prohledávaný prostor možných řešení je malý, - prohledávaný prostor možných řešení je spojitý, - účelová funkce je pokud možno unimodální (má pouze jeden extrém), - mezi parametry uvnitř účelové funkce nejsou nelineární interakce, - jsou dostupné informace typu gradient apod., - problém je zadán v analytickém tvaru. Stochastické metody založeny na využití náhody. V podstatě jde o čistě náhodné hledání 20
hodnot argumentů účelové funkce s tím, že výsledkem je vždy to nejlepší řešení nalezené během celého náhodného hledání. Tyto metody jsou pomalé, vhodné jen pro malé prostory řešení a pro hrubé odhady. Smíšené metody rafinovaná směs metod deterministických a stochastických, které ve vzájemné spolupráci dosahují překvapivě dobrých výsledků. Silnou podmnožinou těchto algoritmů jsou již zmíněné evoluční algoritmy. Algoritmy smíšeného charakteru jsou: - robustní (nezávisle na počátečních podmínkách velmi často naleznou kvalitní řešení, reprezentováno jedním či více globálními extrémy, - efektivní a výkonné (schopné nalézt kvalitní řešení během relativně malého počtu hodnocení účelové funkce), -odlišné od stochastických metod (využívají v kombinaci deterministické metody), - mají minimální (nebo žádné) požadavky na předběžné informace, - jsou schopné pracovat s problémy typu černá skříňka (nepotřebují analytické vyjádření problému), - jsou schopné nalézt více řešení během jednoho spuštění. 3.2 Shrnutí vlastností metod optimalizace Shrneme-li vlastnosti optimalizačních metod z předchozího odstavce, lze stručně konstatovat, že: - enumerativní a stochastická optimalizace není vhodná na problémy, u nichž se prohledává rozlehlý prostor možných řešení, - deterministická optimalizace pracuje dobře na problémech, u nichž se prohledává úzký prostor možných řešení, - smíšená optimalizace je vhodná na problémy bez omezení velikosti jejich prostoru možných řešení. 3.3 Stochastický horolezecký algoritmus Patří mezi gradientní metody tzn., že prohledává prostor možných řešení ve směru největšího spádu. Díky své gradientní povaze velmi často uvázne v lokálním extrému. Základní verze funguje tak, že se vždy vychází z náhodného bodu v prostoru možných řešení. Pro momentálně navržené řešení se pomocí konečného souboru transformací navrhne určité okolí a daná funkce se minimalizuje jen v tomto okolí. Získané lokální řešení se pak použije jako střed pro výpočet nového okolí. Celý proces se pak iterativně opakuje. Během procesu se zaznamenává nejlepší nalezené řešení, které po ukončení slouží jako nalezené optimum. Stochastický horolezecký algoritmus je v podstatě jen mnohonásobné zopakování standardního horolezeckého algoritmu, pokaždé z jiné, náhodně zvolené pozice. Nevýhodou tohoto algoritmu je to, že v něm může za určitých podmínek dojít k zacyklení a řešení tak uvázne v lokálním extrému. 3.4 Tabu search (zakázané prohledávání) Tato metoda je vylepšená verze horolezeckého algoritmu. Jejím tvůrcem je prof. Fred Glover z Univezity of Colorado. Vylepšení spočívá v tom, že do horolezeckého algoritmu je zavedena tzv. krátkodobá paměť, jejímž úkolem je pamatovat si ty transformace, pomocí nichž byl vypočítán aktuální střed. To má v konečném důsledku ten efekt, že nedochází k zacyklení díky zakázanému použití těchto transformací. Odtud také plyne název zakázané prohledávání. Dále je zde vylepšení ještě o tzv. dlouhodobou paměť, která obsahuje 21
transformace, jenž nejsou v paměti krátkodobé, ale byly často použity. Jejich výskyt je pak penalizován, což snižuje jejich četnost. Na rozdíl od algoritmu horolezeckého Tabu search tak snadno neuvízne v lokálních extrémech. 3.5 Optimalizace pomocí mravenčí kolonie Je to algoritmus, jehož činnost je založena na chování mravenců v kolonii, resp. na jejich chování při cestě za potravou či stavebním materiálem. Princip je následující. Nechť existuje zdroj mravenců (mraveniště) a cíl jejich snažení (potrava). Poté, kdy jsou mravenci vypuštěni, dojde po nějaké době k tomu, že se všichni mravenci pohybují po nejkratší možné (optimální) cestě mezi zdrojem a cílem. Tento efekt, kdy mravenci naleznou optimální cestu, je dán faktem, že mravenci si svou cestu značkují feromonem. Jeho intenzita pak ovlivňuje rozhodnutí mravence. Pokud dorazí k rozcestí dvou cest vedoucích ke stejnému cíli první mravenci, pak jejich rozhodnutí, po které cestě se vydají, je náhodné. Ti, kteří zvolí kratší cestu, ji označkují a při návratu jsou díky těmto značkám při rozhodování ovlivněni ve prospěch kratší cesty. Při návratu ji označkují podruhé, což opět zvyšuje pravděpodobnost rozhodnutí dalších mravenců v její prospěch. V algoritmech používajících tyto principy jsou feromony zastoupeny vahou, která je přiřazena dané cestě vedoucí k cíli. Tato váha je aditivní, což umožňuje přidávat další feromony od dalších mravenců. V algoritmu je zohledněn i fakt vypařování feromonů tak, že váhy u jednotlivých spojů s časem slábnou. To zvyšuje robustnost algoritmu z hlediska nalezení globálního extrému. Algoritmus byl použit s úspěchem na optimalizační problémy, jako je problém obchodního cestujícího či návrh telekomunikačních sítí (viz [6]). 3.6 Evoluční metody Podle teorie Charlese Darwina [7] v přírodě přežívají silnější jedinci a tito pak mají šanci předat svou genetickou informaci do další generace. Důležité přitom je, že každý organismus je potomkem dvou rodičů, a tudíž se v něm mísí genetické informace obou rodičů. Neboli informace uložené v jeho genetické výbavě jsou zčásti převzaté od jednoho rodiče a z části od rodiče druhého. Na těchto základních principech pracuje i genetický algoritmus. Cílem algoritmu je vytvářet v populaci jedinců stále silnější jedince. Tato vlastnost předurčuje algoritmus k použití na řešení optimalizačních problémů, tedy problémů, kdy hledáme nejlepší z možných řešení daného problému. Evoluční algoritmy, založené na evolučních teoriích Charlese Darwina, představují nový, netradiční přístup k hledání optimálního řešení složitých optimalizačních problémů, které nejsou řešitelné klasickými technikami. Základním pojmem těchto algoritmů je populace jedinců - chromozómů, které jsou obvykle tvořeny lineárními řetězci symbolů. V těchto chromozómech je zakódováno aktuální řešení optimalizačního problému. Chromozómy odpovídající kvalitnímu řešení, jsou ohodnoceny velkou fitness hodnotou. Fitness hodnotou rozumíme kvantitativní míru schopnosti přežít a vstupovat do reprodukčního procesu, která je vypočítávána z tzv. účelové funkce. Nemalou roli hrají v evoluci také náhodné procesy mutace, selekce tzv. rodičů a jejich křížení. Evoluční výpočty jsou univerzální numerické prohledávací resp. optimalizační metody využívají stochastické jevy a kopírující přirozený evoluční proces. Jejich základnímu nástroji jsou náhodné změny ve vlastnostech jedinců, výběr nejúspěšnějších jedinců na úkor méně úspěšných a velký výpočetní objem. V přijatelném čase( sekundy až desítky hodin) dle druhu aplikace jsou schopny simulovat statisíce evolučních cyklů, kterými lze dosáhnout velmi velkou úspěšnost v porovnání 22
s konvenčními metodami.. 4 GENETICKÉ ALGORITMY Genetické algoritmy (GA) jsou jedním z nejvýznamnějších a nejčastěji používaných představitelů evolučních výpočetních technik s různorodým uplatněním. 4.1 Základní pojmy, objekty a operace GA Základními objekty v GA je řetězec, gen a populace. Základnými operacemi, které s těmito objekty pracují jsou křížení, mutace a výběr. Gen je stavební jednotkou řetězce, pod genem je možné chápat části řetězců, které reprezentují elementární vlastnosti jedince. Jestliže to není výslovně uvedené tak pod pojmem den jsou chápany jednotlivé elementárně číselné anebo symbolové prvky řetězce. Někdy se gen označuje jako bit. Populace je skupina zvoleného počtu řetězců. Matematicky je možné populaci chápat jako dvojrozměrné pole, resp. matici čísel a/anebo symbolů. Velikost populace při většině realizací bývá konstantní. Příklad celočíselné populace: P = [1 2 7 8 7 3 1 9 6 5 0 1 2 3 4... 8 4 4 1 7] Generace je populace v určité výpočtové fázi řešení GA, případně její pořadové číslo (také výpočtový cyklus algoritmu). Řetězec (chromozóm) je posloupnost' číselných nebo symbolických hodnot reprezentujících zvolené vlastnosti anebo parametry jedince (fenotypu) z problémové oblasti (z oblasti skutečných fyzických objektů). Řetězce mohou být reprezentované pomocí binárních, celočíselných, reálně-číselných hodnot, symbolických hodnot a jejich kombinací. Příklady řetězců: binární řetězec r = [1 01 1 1 0] celočíselný řetězec r = [2, 7, 21, O, 105] reálně-číselný řetězec r = [7.1, 0.01, 128.0,-1.5] symbolický řetězec r = [kladný, malý, H 2 SO 4 ] kombinovaný řetězec r = [2.77, -2, X, zásaditý, vypnuté] Způsob použitého kódování je závislý od povahy řešeného problému. Při většině aplikací, kde se používají numerické hodnoty, někteří autoři dávají přednost' binárnímu kódovaní, a to i v případech, když optimalizované proměnné jsou celočíselné anebo reálně-číselného typu. Nevýhodou binárních řetězců je však výrazný nárůst délky jejich řetězce v případě mnohých proměnných a také omezená přesnost' řešení, která je determinovaná počtem bitů kódujících jedno číslo. Počet bitů, potřebných na zakódování řetězce se může vypočítat pomocí vztahu 23
= log D 2 h d ε kde D je délka řetězce v bitech, h je horní a d je dolní hranice prohledávaného rozsahu, ε je požadovaná přesnost a * je celočíselné zaokrouhlení nahoru. Tak například při rozsahu daného parametru od -10 do 10 s požadovanou přesností 0.001 potřebujeme pro jeho zakódovaní v řetězci 15 bitů. Jestliže v jednom řetězci figuruje 10 takovýchto parametrů, potom délka celého řetězce bude 150 bitů. Při použití reálně-číselného kódování průběh řešení bývá stabilnější, protože hodnoty reálných čísel se mění spojité, úměrné žádané velikosti změny. Při binárním kódovaní při malých změnách na nejvyšších váhách dochází k velkým změnám hodnot čísel. Například změna jediného bitu v osmibitovém čísle 00010011 > 10010011 představuje změnu hodnoty čísla až o 128, což je polovina maximální hodnoty. Na druhé straně, když chceme zvětšit hodnotu čísla 01111111 pouze o nejmenší možné číslo, musíme změnit všech osm bitů na 10000000. Těmto nepříjemnostem (tzv. Hammingova bariéra) se dá zabránit použitím Grayova kódu, kde se dvě sousední čísla liší vždy pouze v jednom bitu. Nevýhodou tohoto kódovaní je ale vyšší výpočtová náročnost při přepočtu z reálné číselné hodnoty, co se při obrovském počtu operací v evolučních výpočtech (EV) projevuje jako nevýhoda. Při sporech o tom, které kódování je lepší jestli binární anebo reálně číselné kódovaní, většina empirických porovnávaní ukazuje, že reálně číselné kódování dává mírně lepší výsledky. Podle některých autorů je třeba použít' takový způsob kódovaní, který je při dané aplikaci výhodnější. 4.1.1 Fitness hodnota V literatuře se lze setkat s výrazy fitness, CV cost value (hodnota ceny), životaschopnost, kvalita jedince atd. Všechny tyto výrazy znamenají jedno. Jedná se o hodnotu účelové funkce právě v jednom bodě intervalu, ve kterém hledáme optimální hodnotu. V podstatě říká, jak vhodný je jedinec pro další vývoj populace v další generaci. Fitness je v terminologii EV běžné používaný pojem představující míru vhodnosti, resp. úspěšnosti jedinců (fit z angličtiny vhodný). Nejlepší fitness v případě maximalizační úlohy je co největší hodnota účelové funkce, v případě minimalizace je to naopak co nejmenší hodnota. Někteří autoři dodržují konvenci, že fitness se řešením GA maximalizuje. Tehdy fitness vznikne na základě vhodné lineární transformace z účelové funkce a je přímo úměrná pravděpodobnosti přežití daného jedince v konkurenčním prostředí. Aby byl zachován základní princip evoluce, tedy propagování nejsilnějších jedinců do další generace, resp. do operace křížení pro další generaci, převádí se účelová funkce při hledání minima na tzv. fitness funkci, u které se hledá maximum. Např. fitness funkci lze v případě minimalizace účelové funkce vytvořit následovně: fitness = 1/(1+účelová funkce). Po tomto převodu budou mít menší (např. záporné) hodnoty hodnotu adekvátně větší, takže menší čísla budou při dotazu na hodnotu fitness zvýhodněna. Pro lepší představu uvádím příklad: 0,5 => převod účelové funkce na fitness funkci => 1/(1+0,5) 0,67 0,3 => převod účelové funkce na fitness funkci => 1/(1+0,3) 0,77 0 => převod účelové funkce na fitness funkci => 1/(1+0) = 1-0,5 => převod účelové funkce na fitness funkci => 1/(1-0,5) = 2 24
Účelová funkce přiřazuje hodnotu každému řetězci populace. Představuje jádro optimalizovaného problému, úlohou je nalézt její globální extrém. Účelová funkce je mírou toho, co chceme maximalizovat (výkonnost, produkce, zisk atd.) anebo naopak minimalizovat' (chyba, ztráty, spotřeba apod.). Vyhodnocení účelové funkce bývá často výpočtově složitá procedura, skládající se někdy i z více dílčích kritérií (multikriteriální úloha). Výrazem účelová funkce se rozumí funkce, jejíž optimalizace (nalezení minima či maxima) povede k nalezení optimálních hodnot jejich argumentů. Její značení je f(x) nebo také f cost (x), kde anglické slovo cost znamená cena. Účelové funkci se totiž dříve říkalo také cenová funkce. 4.1.2 Účelová funkce jako geometrický problém Na každou účelovou funkci lze nahlížet také jako na geometrický problém, v jehož rámci se hledá nejnižší (minimum) či nejvyšší (maximum) pozice na N-rozměrné ploše, pro kterou se někdy používá výraz hyperplocha či prostor možných řešení daného problému. Počet dimenzí N je dán počtem optimalizovaných argumentů účelové funkce. Má-li optimalizovaná funkce např. šest argumentů (nezávisle proměnných), pak se hledá extrém na šestirozměrné ploše v sedmirozměrném prostoru, kde sedmá dimenze je v podstatě návratová hodnota účelové funkce. Prvních šest dimenzí má charakter os typu x a y jak je známe z našeho, třírozměrného prostoru, zatímco sedmá má charakter osy z. Více než třírozměrné geometrické konstrukce si samozřejmě nedovede nikdo graficky představit, nicméně analogie je zřejmá. Daná účelová funkce může obsahovat více stejných globálních extrémů na různých souřadnicích, nebo ještě hůře (matematicky vzato), může být těchto extrémů nekonečně mnoho. Přitom se může jednat o problémy ryze praktického charakteru. V případě, že existence více než jednoho globálního extrému není únosná, je vhodné problém přeformulovat. Na druhou stranu však více globálních extrémů skýtá možnost nalezení více stejně kvalitních řešení, z nichž si řešitel případně může vybrat. 4.1.3 Opačný problém Nyní se krátce zmíním o problému hledání opačného extrému, než pro jaký je algoritmus navržen. Jestliže máme aplikaci zkompilovánu s procedurami, jež hledají minimum a potřebovali bychom z jakéhokoli důvodu hledat globální maximum. A naopak. Tento požadavek lze splnit velice snadno a bez zásahu do zdrojového kódu aplikace pouhým vynásobením účelové funkce číslem 1. Je však třeba dát si pozor na interpretaci výsledku. V podstatě lze říci, že minimum obrácené funkce je maximem funkce původní. Z výsledku, který z aplikace obdržíme, musíme uvažovat jen jeho x-ovou část, y-ovou část musíme dopočítat. Vše by měl objasnit následující příklad. Příklad: Najděte globální maximum funkce y = cos(x) + sin(3x) na intervalu < -3 ; 3 > pomocí programu na vyhledání globálního minima funkce využívající genetických algoritmů. Řešení: 1. graf funkce y = cos(x) + sin(3x) vypadá dle Obrázku 1 25
y = cos(x) + sin(3x) y 2 1,5 1 0,5 0-3 -2-1 -0,5 0 1 2 3-1 -1,5-2 x Obr. 1 - Graf funkce y = cos(x) + sin(3x) Pozn.: Maximum je evidentně někde kolem bodu [0,5 ; 2] 2. do programu na výpočet minima zadáme účelovou funkci: y = -(cos(x) + sin(3x)) (3.1) 3. výsledek programu (viz Obrázek 2) : x opt = 0,47277832031250 y min = -1,87870684685932 4. výsledek musíme přepočítat (bereme v úvahu pouze číslo x opt, ne y min ) y(x opt ) = cos(x opt )+sin(3x opt ) = 1,87870684685932 = y max (3.2) y = -(cos(x) + sin(3x)) y 2 1,5 1 0,5 0-3 -2-1 -0,5 0 1 2 3-1 -1,5-2 x x = 0,472778320 y = -1,878706846 Obr. 2 Graf funkce y = -cos(x) sin(3x) Pozn.: Nesmíme se nechat zmást tím, že y max = -y min. V tomto příkladu je funkce y periodická. U obecných funkcí musíme y max přepočítat z x opt! Genetický algoritmus při vyhledávání maxima funkce volí na počátku náhodně několik bodů z definičního oboru. Ve skutečnosti však algoritmus vůbec neví jaký problém řeší. Genetický algoritmus pracuje s generací určitých jedinců. Počet prvků generace je přitom předem dán. Každý jedinec je reprezentován strukturou, která je připodobněním chromozómu živého organismu. Touto strukturou je řetězec jedniček a nul (v případě binárního nebo Grayova kódování problému), přičemž všechny chromozómy - jedinci jsou stejně dlouhé řetězce. Více o tomto problému pojednává následující kapitola. Populace je definována jako soubor jedinců s jejich vlastnostmi. Dá se vyjádřit jako matice o rozměrech počet jedinců x počet argumentů (vlastností) jedince, viz Tabulka 2. [21]. 26
Tabulka 2 - Příklad populace 7-mi rozměrného problému Jedinec 1 Jedinec 2 Jedinec 3 Jedinec 4 Jedinec 5 Parametr 1 1,27 27,99 45,81 39,21 15,36 Parametr 2 12,17 19,94 28,40 28,23 0,12 Parametr 3 4,68 32,74 5,26 2,72 19,30 Parametr 4 16,62 33,11 13,95 48,26 22,72 Parametr 5 39,99 6,88 7,41 36,41 14,52 Parametr 6 49,02 26,43 22,74 49,48 24,46 CV, fitness 123,75 147,10 123,57 204,32 96,48 Cílem algoritmu je vyvíjet (měnit) generaci tak, aby se neustále zlepšovala. To znamená, aby v ní přibývali dobří jedinci a ubývali špatní (slabí) jedinci, stejně jak je tomu v přírodě. Nyní ovšem vyvstává otázka, kdo rozhoduje o tom, jak dobrý je daný řetězec. Toto rozhodování není součástí genetického algoritmu. Algoritmus se na kvalitu řetězce pouze zeptá. Musí tedy existovat funkce f(x), která pro daný řetězec vrátí jeho kvalitu. Touto funkcí je nám již dobře známá účelová funkce. V příkladu z Tabulky 2 je účelová funkce prostým součtem parametrů. Mohla by to však být jakákoli funkce kombinující parametry. Ne vždy platí, že jedinec s nejvyššími parametry je nejlepší. Toto je ovšem problémově závislé. Při hledání extrému funkce bude řetězec reprezentovat nějaký bod definičního oboru funkce (fenotyp). Kvalita řetězce (fitness) jedince pak bude funkční hodnota v tomto bodě. Viz Obrázek 3. y = sin(x) 1,2 1 0,8 Fitness 0,6 0,4 0,2 0-0,2 0 0,5 1 1,5 2 2,5 3 3,5 Fenotyp 4.1.4 Kódování diskretizace prostoru Obr. 3 Fenotyp a fitness hodnota Abychom mohli přenechat řešení problému genetickému algoritmu, musíme nejdříve zajistit, aby každý řetězec, který se bude vyskytovat v populaci, reprezentoval jeden bod z prohledávaného prostoru. Mechanismus, který každému řetězci přiřadí prvek 27
z prohledávaného prostoru, se nazývá kódování problému. Pro genetické algoritmy se nejčastěji používá Grayova kódování, které nahradilo prosté binární kódování jedinců. Nesporné výhody Grayova kódování jsou diskutovány v kapitole 4. Kódování je přidělení přesně jednoho bodu prohledávaného prostoru jedinci. Tedy každý řetězec reprezentuje prvek ze zvoleného intervalu. Toto se děje již v náhodném generování populace. Když máme vygenerovánu generaci např. s řetězci délky 8 pozic, tyto nám představují jednotlivé diskrétní body na intervalu, jehož meze můžeme zvolit. Abychom získali číslo, které jedinec reprezentuje a které se následně dosadí do účelové funkce, musíme provést tzv. dekódování řetězce. Na následujícím příkladě s řetězcem délky 8 pozic, který kóduje bod z intervalu <2 ; 3> si tuto činnost podrobněji vysvětlíme. Nejdříve přistoupíme k řetězci jako binárnímu zápisu čísla od 0 do 255 (2 8 ). Například řetězec 01001010 2 bychom rozkódovali jako číslo: 0 2 7 + 1 2 6 +0 2 5 + 0 2 4 + 1 2 3 + 0 2 2 + 1 2 1 + 0 2 0 = 74 10 (3.3) Abychom dostali číslo z intervalu <2 ; 3>, vydělíme takto získanou hodnotu největším možným číslem, které můžeme získat binárním zápisem délky 8 (11111111 2 = 255 10 ) a přičteme k němu číslo reprezentující dolní mez intervalu. Řetězec 01001010 2 tedy reprezentuje hodnotu 2 + 74/255 = 2,2902. Jelikož si délku řetězce, který bude reprezentovat jedince můžeme zvolit, můžeme tím zpřesňovat výsledek genetických algoritmů. Jak jsem již zmínil: zvolíme-li řetězce délky 8 pozic, vybereme z prohledávaného prostoru ve skutečnosti 2 8 =256 bodů, které budeme při vyhledávání procházet. (Což ve skutečnosti znamená, že zadanou funkci budeme prohledávat pouze v těchto bodech). Při použití generace řetězců délky 8 tedy budeme vyhledávat pouze s přesností 1/2 8 = 1/256 = 0,0039. Kdybychom chtěli zvětšit přesnost našeho algoritmu, zvětšili bychom délku řetězců. Např. kdybychom použili generaci řetězců délky 10, pracovali bychom s přesností 1/210 = 1/1024 = 0,00098 a množství bodů na intervalu by tedy byl 1024. Jelikož vždy budeme mít řetězce konečné délky, budeme muset pokaždé vybrat z intervalu pouze konečně mnoho bodů. Tzn. při zakódování dochází k diskretizaci prohledávaného prostoru. Tento problém budeme muset řešit vždy, když budeme prohledávat prostor, ve kterém bude nekonečně mnoho bodů, mezi nimiž budeme hledat správné řešení. To ovšem činí výsledek hledání značně nepřesným. Ve výpočtech tedy vždy volíme nejdelší možnou délku řetězce. Pozor však na paměťové možnosti stroje, vykonávajícího genetický algoritmus, a také na jeho rychlost, protože s délkou řetězce se neúměrně zvětšuje čas potřebný na vykonání algoritmu (dekódování řetězce délky 8 samozřejmě trvá kratší dobu než dekódování řetězce délky 32). Negativní důsledek nutnosti kódování problému je vysvětlen na následujícím příkladě. Příklad: Kódujeme interval <0 ; 100000> řetězci délky 8 pozic. Rozdíl mezi jednotlivými po sobě následujícími prvky bude 100000 / 2 8 = 100000 / 256 = 390,625. (3.4) Tedy prvek č.1 reprezentuje hodnotu 0 a prvek č.2 hodnotu 390,625. Jak významné zpřesnění poskytne pro ten samý interval kódování řetězci délky 16 pozic: 100000 / 2 16 = 100000 / 65536 =1,525. (3.5) Prvek č. 1 reprezentuje hodnotu 0 a prvek č.2 hodnotu 1,525. 4.1.5 Vztah účelové funkce a fitness funkce Účelová funkce ohodnocuje míru, jak jednotliví jedinci populace vyhovují požadavkům z 28
hlediska celkového cíle řešení v problémové oblasti. V případe minimalizace nejúspěšnější jedinci dosahují nejmenších hodnot účelové funkce, v případe maximalizace naopak největších. Při GA se úspěšnost anebo míra přizpůsobení se jedinců často vyjadřuje pomocí fitness funkce, která se podle některých autorů pouze maximalizuje a přímo ovlivňuje pravděpodobnost, s jakou se daný jedinec přesune v procese reprodukce, tedy při tvorbě nové populace. Proto je v tomto případě potřebné hodnoty účelové funkce na fitness transformovat. Takovou to transformaci můžeme vyjádřit pomocí funkce F(x)=g[J(x)] kde F je fitness funkce, J je účelová funkce, g je vhodná transformace na nezáporné skalární hodnoty. Jedním z možných způsobů je lineární transformace F(x)=a.J(x)+b kde a je kladné číslo v případě, kdy se účelová funkce maximalizuje anebo záporné číslo, když se účelová funkce minimalizuje, b je posun, aby hodnoty fitness byly nezáporné. Někdy se používá transformace, která jedincům přiřazuje fitness úměrné jejich relativní úspěšnosti v rámci celé populace podle vztahu J ( xi ) F( xi ) = a + b n J ( x ) n - počet řetězců v populaci x i -i-tý řetězec i=1 Někteří autoři transformaci na fitness vůbec neuvažují, tehdy se maximalizuje anebo minimalizuje přímo účelová funkce J. i 29
4.1.6 Princip genetických algoritmů Klasickou", strukturu genetického algoritmu lze znázornit následovně inicializace fitness OK? ano řešení ne Výběr dvojice jedinců Výběr nejlepších jedinců Reprod.? ne ano Křížení a mutace Přidej do nové populaceinicializace ne Komplet? Obr 4 Klasická struktura genetického algoritmu Dříve než se samotný genetický algoritmus začne realizovat, je potřebné uskutečnit následující kroky: 1. Určit způsob zakódování parametrů optimalizovaných objektů do lineárního řetězce. Toto představuje zvolit reprezentaci hodnot (binární, reálně číselný...), a zvolit pořadí jednotlivých parametrů fenotypu v řetězci. Na pořadí v podstatě nezáleží, jen ho je třeba potom všude dodržovat. 2. Ohraničit prohledávaný prostor řešení (určit přípustné intervaly hodnot pro každý gen řetězce). Čím těsněji umíme ohraničit prohledávaný prostor, tím více urychlíme řešení. Vhodné ohraničení prostoru může zásadně zkrátit dobu řešení. 3. Formulovat účelovou funkci, resp. způsob vyhodnocení fitness. 4. Zvolit velikost populace. Velikost populace může záviset od konkrétního případu. Při většině úloh se však doporučuje volit její velikost mezi 10 až 700, běžně mezi 20 a 50. Při příliš malých populacích nebývá dostatečný prostor na různorodost (diverzitu) genetických ano 30
informací, při příliš velkých populacích se už nedosahuje lepšího efektu a doba řešení se může prodlužovat. Na začátku se vygeneruje počáteční populace (inicializace). Pokud není jiná možnost, hodnoty jednotlivých genů v řetězcích se vygenerují náhodně z definovaného prostoru. Pokud však máme k dispozici smysluplné" (i když není optimální) řešení anebo jsme ve stavu některé řešení odhadnout, případně vytvořit heuristické metody na jejich generovaní, doplnění takovýchto řetězců do počáteční populace může řešení výrazně urychlit. Předchází se tak počátečnímu bloudění" algoritmu po zvoleném prostoru. Následně se vyhodnotí úspěšnost (fitness) každého řetězce populace, tím získáme vektor hodnot účelových funkcí. Potom se vybere aspoň jeden nejúspěšnější jedinec, který se beze změny přesune do nové populace (tento postup se označuje jako elitářství ). Následně se nějakým způsobem (viz. dále metody výběru) vyberou dvojice rodičů, kteří se vstupují do operace křížení (běžně s pravděpodobností 75 %) a některé geny populace ještě zmutují (pravděpodobnost mutace každého genu bývá mezi 0,1 až 10 %). Jejich potomci, resp. nezměnění rodiče se přesunou do nové populace. Toto se opakuje, dokud nová populace neobsahuje kompletní počet řetězců (jedinců). Tím vznikne populace nové generace, se kterou se celý cyklus opakuje až do splnění ukončovacích podmínek. 4.2 Celý algoritmus ve zkratce Celý algoritmus můžeme vyjádřit jako sled následujících operací: 0. Inicializace nulté generace (Hlavní generace); Dokud není splněna podmínka ukončení genetického algoritmu opakuj (1,2,3,4,5) 1. Ocenění každého jedince v Hlavní generaci; 2. Selekce nejlepších jedinců - kopírování do Pomocné generace; 3. Výběr dvou vhodných rodičů z Pomocné generace; Je - li splněna podmínka křížení rodičů, pak 4. Zkřížení dvojic rodičů - vznik dvou potomků - kopírování do Hlavní generace; Je - li splněna podmínka mutace, pak 5. Náhodná mutace jednotlivých jedinců Hlavní generace. 4.2.1 Ukončování genetického algoritmu Problém ukončování běhu genetického algoritmu se zatím řeší tak, že počet generací je shora ohraničený číslem p max (maximální počet opakování algoritmu). To je však velmi zjednodušený pohled na tento důležitý aspekt genetických algoritmů. Existuje několik metod, jak ukončit genetické algoritmy [5]. Na ukázku zde uvedu jednu z nich. Tato metoda spočívá v tom, že v každém iteračním kroku - generaci najdeme chromozom s největší hodnotou fitness a označíme ho α opt. Potom, nechť 0 w(α opt ) 1 je podíl chromozomů populace, jejichž fitness se rovná fitness hodnotě jedince α opt. Pak se genetický algoritmus může ukončit, když podíl w(α opt ) > w(α max ), kde w(α max ) je prahová hodnota podílu (obvykle 0,8-0,95). To znamená, že populace obsahuje w(α opt ).100 % jedinců, kteří jsou identičtí s chromozomem α opt, tedy je malá 31
pravděpodobnost, že v rámci dalších generací vzniknou jedinci s ještě větší fitness. 4.2.2 Algoritmy ukončovacích podmínek Vyhodnocení ukončovacích podmínek GA se může uskutečnit jedním z následujících způsobů: a) První způsob je testovaní splnění předem definovaných podmínek kladených na řešení. Po jejich splnění některým řetězcem se běh algoritmu ukončí a daný řetězec se považuje za řešení GA. b) Při hledaní globálního extrému mnohých úloh však častokrát nevíme vhodné podmínky ukončení z různých důvodů zformulovat. Ukončením řešení může proto být i situace, když se delší dobu (definovaný počet generací) hodnota účelové funkce nemění. Úskalím však je, že takováto situace může u GA znamenat' pouze přechodné uvíznutí řešení v lokálním extrému, které GA zpravidla (někdy po delší době) dokáže opustit. c) Podobným možným způsobem ukončení řešení je stav, když se jednotlivé řetězce v populaci už velmi podobají nejlepšímu jedinci, případně jsou s ním identické. Platí tedy, že rozptyl hodnot odpovídajících si genů v jednotlivých řetězcích populace je malý. Tehdy už nemůžeme čekat velký pokrok. Řešením v tomto případě však také může být jen lokální extrém. d) Nejčastěji používaným způsobem ukončení je definovaní předepsaného počtu generací řešení. Tento počet je možné po několika málo opakovaných spuštěních daného řešení poměrně lehké odhadnout. Podobná alternativa je běh GA pouze přerušovat a vždy rozhodnout zda aktuální řešení je už z hlediska uživatele vyhovující anebo se má ještě pokračovat. 4.2.3 Stagnace Stagnace je jev, při kterém dochází k zastavení vývoje hodnoty účelové funkce směrem k nižším hodnotám ještě před dosažením globálního extrému. K tomuto jevu dochází bez zřejmých důvodů a liší se od předčasné konvergence k suboptimálnímu řešení tak, že populace stále zůstává diverzibilní, zatímco optimalizační proces dále nepokračuje. Obecně je známo, že v případě použití evolučních algoritmů či algoritmů jim příbuzných dochází k předčasné konvergenci k suboptimálnímu řešení, a to tehdy, jestliže: - optimalizační proces zavedl populaci do lokálního extrému dané účelové funkce, - populace ztratila diverzibilitu, nebo - optimalizační proces probíhá pomalu nebo vůbec neprobíhá. Všechny tři body jsou různým vyjádřením téhož pohledu na věc. Jestliže je populace zavedena do lokálního extrému, neboli je na jednom místě, znamená to, že parametry jedinců se od sebe takřka neliší, a tudíž populace ztratila svou rozmanitost, neboli ve svém důsledku diverzibilitu. Optimalizační proces díky tomu pak probíhá pomalu nebo vůbec neprobíhá. 4.3 Výběr řetězců Výběr řetězců je procedura, která z řetězců populace v aktuální generaci vybírá na základě zvolené strategie některé řetězce, které potom vstupují do operací křížení a mutace, ale i řetězce, které se beze změny zkopírují do populace v nové generaci. Způsobů výběru je více a mezi nejužívanější patří turnajový způsob a vážená ruleta. Při většině způsobů výběru platí, že úspěšnější řetězce mají vyšší pravděpodobnost' výběru do následující populace než méně úspěšné řetězce, tzn. lepší jedinci z populace postupně vytlačují horší jedince. 32
Výběr je operace, která v GA simuluje mechanizmus přirozeného výběru. Proto by mělo platit, že úspěšnější jedinci v populaci by měli mít větší šanci dostat se nezměněné do nové populace, případně vytvářet potomky, než měně úspěšní jedinci. Jinými slovy, o velikosti pravděpodobnosti, s jakou bude daný jedinec vybraný za příslušníka nové generace anebo za jednoho z rodičů, rozhoduje jeho úspěšnost (hodnota jeho fitness, resp. jeho účelové funkce). Výběr se v GA může uskutečnit různými způsoby, některé, nejčastěji používané, z nich si uvedeme v dalším výkladu. 4.3.1 Vážená ruleta Při selekci se do nové generace kopírují řetězce ze staré generace. Čím je řetězec lepší (má větší hodnotu fitness funkce), tím větší je pravděpodobnost, že bude do nové generace zkopírován a bude mu umožněno se zkřížit s jiným jedincem. Jedním ze základních způsobů, jak je selekce prováděna, je výběr pomocí vážené rulety. Váženou ruletu si můžete představit jako klasickou ruletu pouze s jedním podstatným rozdílem. U klasické rulety máme pro každé číslo, které může být vylosováno, stejně velkou část kruhu indikující výběr daného čísla, a tedy každé číslo může být vybráno se stejnou pravděpodobností jako např. číslo sousední. U vážené rulety je pravděpodobnost výběru určena kvalitou řetězce. Ruleta, která se otáčí okolo svého středu se rozdělí na tolik kruhových výseků, kolik je řetězců v populaci (viz. Obr. 2.22 54). Velikost každého výseku se může určit více způsoby. Historicky první a nejjednodušší způsob je takový, že velikost každého výseku je přímo úměrná úspěšnosti (hodnotě fitness) jemu odpovídajícímu řetězci (tzv. fitness proportionate selection). Při výběru se potom ruletou tolikrát otočí, kolik řetězců potřebujeme vybrat a pozice, na kterém se ruleta zastaví, určuje, který řetězec je vybraný. Řetězec s nejlepší hodnotou fitness (v daném případě řetězce 10000011) má proto největší šanci být vybraný a naopak nejhorší (v daném případě řetězce 00000111 a 11111000) nejmenší. Pravděpodobnost výběru i-tého řetězce touto metodou z populace o velikosti N lze vyjádřit vztahem f ( xi ) P( i) = ; pro j = 1,2,..., N N f ( x ) j= 1 kde f(x) je fitness (resp. nezáporná hodnota účelové funkce pro případ maximalizace). j Procentní body získáme vynásobením této hodnoty číslem 100. Daný problém ilustrují Tabulka 3 a Obr. 6. 33
2% 2% 4% 24% 22% 16% 21% 9% 11110011 CV = 1,794 01010101 CV = 8,889 00011101 CV = 4,031 00111001 CV = 6,943 01100000 CV = 9,389 10000011 CV = 9,992 00000111 CV = 1,067 11111000 CV = 1,067 Obr. 6 - Rozdělení vážené rulety generace Podle [12] je velice pravděpodobné, že při tomto způsobu výběru se v nové generaci objeví stejné řetězce nebo i řetězce s nízkou kvalitou, ovšem s daleko menší pravděpodobností, než by tomu bylo u klasické rulety. Tabulka 3 Náhodně vytvořená generace Jedinec CV 11110011 f(11110011) = 1,794 01010101 f(01010101) = 8,889 00011101 f(00011101) = 4,031 00111001 f(00111001) = 6,943 01100000 f(01100000) = 9,389 10000011 f(10000011) = 9,992 00000111 f(00000111) = 1,067 11111000 f(11111000) = 1,067 Průměrná kvalita jedince 5,397 Pro názornost dokončíme příklad imaginárním roztočením rulety a to hned 8-krát (v generaci je 8 jedinců). Výsledek (pozn. test skutečně proběhl) je zobrazen v Tabulce 4. Další metodou výběru vhodných jedinců do další generace je tzv. turnajový způsob. Tabulka 4 - Výsledek výběru váženou ruletou Jedinec CV 00111001 6,943 01010101 8,889 01010101 8,889 10000011 9,992 01100000 9,389 10000011 9,992 00000111 1,067 01100000 9,389 Průměrná kvalita jedince 8,069 34
Výše uvedená metoda přidělování velikostí kruhových výsečí má jednu nevýhodu. V případě, že je jeden řetězec výrazně lepší než ostatně, může tento způsob vést k tomu, že jeho podíl bude zabírat podstatnou část plochy kruhu, a proto budou mnoho vybraných jedinců stejných (převážná většina). Takovéto preferování výrazně nejlepších jedinců může způsobit předčasnou konvergenci GA do lokálního optima díky snižování diverzity (různorodosti) řetězců. Tomuto nevýhodnému jevu se dá čelit následující modifikací. Fitness se nahradí pořadím v žebříčku" úspěšnosti. Velikosti kruhových výseků jednotlivých jedinců jsou potom přímo úměrné opačnému pořadí úspěšnosti: nejhorší jedinec dostane jeden díl o velikosti S d = N i kde S je celková plocha kruhu, N je počet jedinců, ze kterých se vybírá. Další jedinec v pořadí dostane výsek o velikosti dvou dílů d, atd., nejlepší jedinec dostane výsek o velikosti N dílů d. Takováto transformace vektoru hodnot účelové funkce je v anglické literatuře označována jako linear ranking selection a používá se častěji, než předcházející metoda fitness proportionate selection. i= 1 4.3.2 Turnajový způsob výběru jedinců Postup tohoto způsobu selekce je jednoduchý. Z generace vždy vybereme náhodně dva různé jedince a do nové generace dáme silnějšího z nich. Je-li přitom jedním z vybraných jedinců nejsilnější jedinec, je s pravděpodobností 1 propagován do další generace. Naopak nejhorší řetězec prakticky nemá šanci dostat se do další generace. Největší výhodou tohoto způsobu selekce je rychlost, s jakou k výběru dochází. Ukažme si ještě výsledek tohoto způsobu na příkladu, který jsme pro znázornění použili v předchozí kapitole 2.2.5. Řekněme, že nyní náhodně zvolíme 8 dvojic. Nechť jsou tyto dvojice například: (1;4), (6;7), (3;5), (2;8), (3;7), (2;6), (1;7), (3;8) Výsledkem tohoto výběru na základě porovnání fitness hodnot pak bude generace popsaná v Tabulce 5. Tabulka 5 - Výsledek výběru turnajovým způsobem Jedinec CV 00111001 6,943 10000011 9,992 01100000 9,389 01010101 8,889 00011101 4,031 10000011 9,992 11110011 1,794 00011101 4,031 Průměrná kvalita jedince 6,882 Zatímco průměr kvalit řetězců původní generace byl 5,397, průměr kvalit řetězců generace získané po provedení selekce turnajovým způsobem činí 6,882. Čili jsme opět dosáhli kýženého efektu nárůstu průměrné kvality generace. Tento nárůst je sice menší, než tomu bylo u vážené rulety, kde průměrná kvalita řetězce ve vylosované generaci byla 8,069, nicméně oproti vážené ruletě je tento způsob výběru výrazně rychlejší (porovnání dvou 35
řetězců je jistě méně časově náročné, než vyhledání příslušného řetězce v ruletě). Nelze také vyloučit vliv náhody (určitě existuje jiné rozdělení dvojic, které by mělo za výsledek ještě vyšší průměrnou kvalitu řetězce než vážená kvalita). Dále ušetříme čas na vytváření rulety a výpočtu úseků pro řetězce. Také zde odpadá vytváření další datové struktury v paměti. Podrobnější srovnání turnajového způsobu selekce s váženou ruletou naleznete v knize [Koza]. (Pozn. Zde bych upozornil na poněkud odlišnou terminologii v tomto materiálu selekce pomocí vážené rulety je zde nazývána fitness-proportionate selection.) Protože zatím pouze kopírujeme řetězce, nenalezneme žádný řetězec, který by se lišil od řetězců v původní generaci. Když tedy pro vývoj generace používáme pouze opakovaně prováděnou reprodukci, degeneruje generace takovým způsobem, že se v ní po čase objevuje jen několik nejlepších řetězců z počáteční generace, nebo v krajním případě jen kopie jednoho jedince. Nedosáhneme tedy v žádném případě toho, aby se v nových generacích objevovaly řetězce, které by byly lepší než řetězce v počáteční generaci. Za účelem zlepšování kvality řetězců jsou zde zbývající dva operátory genetických algoritmů, a to křížení, které je podle mnohých odborníků operátorem, jenž odlišuje genetické algoritmy od jiných vyhledávacích metod a neméně důležitý operátor mutace. Při této metodě se postupuje podle následujícího algoritmu: 1. Z celé populace se náhodně vybere dvojice (případně i početnější skupina) řetězců. 2. Jedinec, který má lepší (nejlepší) fitness se zkopíruje do skupiny vybraných řetězců. 3. Pokud ještě není vybraný požadovaný počet řetězců, pokračuje se bodem 1. Poznamenejme, že jedinci, kteří se zúčastnili turnaje se v dalším kole nevylučují, každý řetězec může být vybraný i víckrát. Turnajový výběr patří k nejvíc používaným metodám výběru díky svojí jednoduchosti a statisticky dobrým vlastnostem. Poznámka: Metody výběru, které jsou uvedené, je možné v rámci jednoho algoritmu i kombinovat. To znamená, že jistý počet řetězců může být vybraný jedním způsobem a jiná skupina řetězců jiným způsobem. 4.3.3 Stochastický rovnoměrný výběr Ruletový výběr podle výše uvedené metody má jistou nevýhodu, jestliže počet vybíraných řetězců je poměrné malý. Očekávané statistické vlastnosti metody se totiž projevují pouze při velkém počtu vybíraných řetězců. Tuto nevýhodu odstraňuje následující modifikace. Místo jediného ukazatele výběru rozmístíme po obvodu rulety (kruhu) v rovnoměrných odstupech tolik ukazatelů, kolik řetězců vybíráme. Potom otočíme ruletou pouze jednou a vybíráme ty řetězce, které označují ukazatele. Podle situace na obr. 7 vybereme 8 řetězců s pořadovými čísly 1, 2, 3, 3, 5, 5, 7, 7. 36
1xkrát roztočit 1 2 7 3 4 1 8 6 5 Obr. 7 Principiální znázornění stochastického rovnoměrného výběru 4.3.4 Výběr na základě míry úspěšnosti Předcházející metody jsou založené na pravděpodobnostním modelu výběru. Následující metoda představuje deterministický způsob, kde výběr pevně definuje uživatel. Zpravidla se přesné určí, kolik kopií jednotlivých nejúspěšnějších řetězců populace se má vybrat. Metodu si vysvětlíme na následujícím příkladu, Příklad: Předpokládejme populaci řetězců P=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10] s fitness hodnotami F=[2.1, 7.8, 1.7, 4.9, 9.1, 0.2, 7.6, 0.0, 2.1, 2.9 ] Nechť zvolená šablona výběru umožňuje vybrat 3-krát nejúspěšnější řetězec, 2-krát druhý nejúspěšnější a jedenkrát třetí nejúspěšnější řetězec v poradí. Vybraná skupina řetězců tedy bude V=[R5,R5,R5,R2,R2,R7] Při použití takovéhoto způsobu výběru algoritmy sice rychle konvergují, ale většinou pouze k nejbližšímu lokálnímu extrému, kde mají tendenci dlouho (mnoho generací) setrvat. Ignorovaní slabší jedinci totiž častokrát mohou obsahovat užitečné informace, které mohou napomoct k nalezení globálního extrému. Na tomto místě si na konkrétním příkladě ukažme jeden takový to možný případ. Příklad: Uvažujme příklad - hádání kombinace čísel", se správným řešením [1 2 3 4 5]. Předpokládejme, že v jisté generaci výpočtu nastane v populaci následující stav Č Fit 1. 1 2 7 4 0 3 2. 1 2 0 4 5 4 3. 1 2 8 4 5 4 4. 7 5 3 0 7 1 5. 1 2 9 8 5 3 6. 4 2 1 4 5 3 7. 5 0 0 7 1 0 8. 1 2 7 4 5 4 37
Řetězce č. 7, 2, 3, 5, 6 a 8 jsou blízko k řešení, kterým je kombinace [1 2 3 4 5]. Preferováním pouze nejúspěšnějších řetězců se však z populace určité vyloučí řetězce č. 4 a 7, kterých hodnoty účelové funkce jsou v porovnaní s nejúspěšnějšími nízké. Řetězec č. 4 však jako jediný nese správnou hodnotu 3. genu, která je 3. Nyní bude potřebné dlouho čekat, až se tato hodnota opět objeví díky mutaci v některém jiném vybraném řetězci. Tuto metodu je vhodné v GA použít minimálně na výběr nejúspěšnějšího jedince aktuální populace (viz. Elitářství, 4.3.7). Doporučuje se ji však kombinovat i s jinými selekčními metodami. 4.3.5 Náhodný výběr Problém, který vznikl v předcházející části, není typický při následujícím typu výběru, kterým je náhodný výběr. Zde je z n řetězců populace náhodně vybraných m řetězců, přičemž principiálně jeden řetězec může být vybrán i vícekrát. V tomto případe má každý řetězec z populace stejnou šanci být vybrán, bez ohledu na jeho fitness. Tento způsob výběru se však nepoužívá jako jediná metoda výběru v rámci algoritmu, ale pouze v kombinaci s jinými (např. s předcházející metodou). Nezaručuje totiž důležitou vlastnost - že úspěšnější řetězce mají mít větší šanci přežít než méně úspěšné. Příklad: Předpokládejme opět populaci řetězců P=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10] s fitness hodnotami F=[2.1, 7.8, 1.7, 4.9, 9.1, 0.2, 7.6, 0.0, 2.1, 2.9 ] Náhodným výběrem se má vybrat 6 řetězců. Vybraná skupina bude V=[R8, R4, R2, R1, R4, R9]. 4.3.6 Výběr na principu míry diverzity (různorodosti) V mnohých případech je vhodné, když se vybírají i takové řetězce, které mají co nejodlišnější vlastnosti oproti většině jiných řetězců v populaci, resp. vůči nejúspěšnějším řetězcům populace. Takoví to jedinci vnášejí do populace nové genetické informace" a mohou iniciovat nové směry hledání globálního extrému. Toto bývá vhodné zejména tehdy, když řešení dlouho stagnuje v okolí lokálneho extrému. Jedním ze způsobů takéhoto výběru je hledání co nejodlišnějších řetězců anebo řetězců, které mají vůči referenčnímu řetězci co největší euklidovskou vzdálenost p e = ( r i s i ) i= 1 Kde r i jsou geny referenčního řetězce, s i jsou geny porovnávaného řetězce, p je počet genů každého řetězce v populaci. Za referenční řetězec je vhodné považovat například nejlepší řetězec, případně řetězec, který vznikne zprůměrňováním genů napříč aktuální populací. 2 max 38
Příklad : Úkolem je vybrat nejodlišnější řetězec populace vůči nejúspěšnějšímu řetězci č. 2. Použitím euklidovské normy bude vybrán řetězec č. 4. Č Fit 1. 1 2 7 4 0 3 2. 1 2 0 4 5 4 3. 1 2 8 4 5 4 4. 7 5 3 0 7 1 5. 1 2 9 8 5 3 6. 4 2 1 4 5 3 7. 5 0 0 7 1 0 8. 1 2 7 4 5 4 4.3.7 Elitářství Jak už bylo řečeno (v časti 4.1.6), aby byla zabezpečená monotónní konvergence řešení, tzn. aby se účelová funkce v průběhu řešení nezhoršovala, je obvyklé, že se nejlepší jedinec populace v aktuální k-té generaci vždy dostane (beze změny) do nové populace v (k+1)- generaci. Toto zabezpečíme jednoduše tím, že nejúspěšnější řetězec, připadně nejúspěšnější řetězce aktuální generace umístíme bez jakýchkoliv změn do následující populace (viz. Obr. 4). Tomuto opatření se označuje jako elitářství. 4.3.8 Zohlednění věku jedinců při výběru V případě biologické evolúce jedním z důležitých činitelů ovlivňujících život populace je věk jejich jedinců. Starší jedinci jsou postupně nahrazovány mladšími, přičemž v tomto případě jejich úspěšnost už není zohledňována. Faktor věku je v některých aplikacích výhodný uvažovat i v evolučních algoritmech. V tomto případě věk je ekvivalentní počtu generací, které daný jedinec v populaci existuje v nezměněné podobě. Experimentálně se potvrdilo, že v řadě typech úloh je výhodnejší nahrazovat nejstarší jedince novými jedinci populace, oproti způsobu, když jsou odstraňováni z populace jedinci vybíraní náhodným způsobem. Zvyšuje se tím diverzita v populaci a eliminuje snaha populace stagnovat v lokálním extrému. Toto opatření je někdy používané i v aplikacích, když se účelová funkce v průběhu času mění (tzv. proměnlivém prostředí). 39
4.4 Křížení Křížení je taková operace, při které se dva rodičovské řetězce rozdělí v náhodně zvolené, ale pro oba řetězce stejné pozíci (anebo ve více pozicích) a navzájem si vymění jednu ze dvou odpovídajících častí (střídavě každou druhou část) řetězce. Křížením tedy vznikají noví odlišní jedinci, kteří nesou některé znaky obou rodičů. Operace křížení spočívá ve výměně informací mezi řetězci. Celý mechanismus křížení začíná tak, že se z nově vylosované populace náhodně vyberou dva řetězce. Tyto dva řetězce lze chápat jako dva rodiče. Jejich potomci potom obsahují část jejich genetické informace. Každý z potomků přitom obsahuje z každého předka pouze část informace. Pro ukázku celého mechanismu křížení je zde Obr. 8. Obr. 8: Překřížení na třetí pozici Jelikož v řetězci délky 8 existuje sedm míst, kde jej lze rozdělit na dvě části, zvolíme nejdříve místo, kde k rozdělení dojde. To činíme většinou náhodnou volbou čísla v rozmezí od jedné do sedmi. Padne-li nám například číslo 3, znamená to, že první potomek bude mít první tři pozice v řetězci shodné se svým prvním rodičem. Zbývajících 5 pozic bude doplněno informacemi ze shodných pozic druhého rodiče. Přesně naopak je tomu u druhého potomka. Křížením nám vzniknou dva zcela nové řetězce, které si ovšem nesou některé informace od svých rodičů. Tomuto způsobu křížení se říká jednobodové podle jednoho místa, kde se jedinci kříží. Dále existuje dvoubodové a uniformní křížení [8]. Přínosem křížení nemusí být ovšem pouze vytváření lepších řetězců. Díky křížení může vzniknout řetězec s takovým rozložením vlastností (jedniček a nul), že neexistuje v generaci žádný jemu podobný řetězec (například s každým řetězcem se bude lišit na čtyřech místech). Takovýto řetězec se může nacházet v zatím neprozkoumané množině možných řešení. Při hledání extrému funkce může řetězec reprezentovat bod definičního oboru ležící v intervalu, ve kterém žádný jiný bod reprezentovaný ostatními řetězci neleží. Ke křížení dvou vybraných řetězců však nedochází vždy. Zpravidla bývá určena jistá pravděpodobnost, se kterou ke křížení dojde. Tato hodnota zajišťuje to, aby se populace vyvíjela postupně a ne tak, že každá nová generace bude složena z úplně jiných jedinců (v nové generaci zůstanou ještě i někteří rodiče). Při základní verzi křížení z dvou rodičovských řetězců vzniknou zpravidla opět dva řetězce - potomci. Rodičovské řetězce se rozdělí v jedné pozici (jednobodové križenie) anebo ve více pozicích (vícebodové křížení) a navzájem si vymění jednotlivé části svojich řetězců. (viz. Obr. 9.) Pozice rozdělení se volí náhodně. 40
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 8 9 0 Jednobodové křížení reálněčíselného řetězce Princip vícebodového křížení 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 Jednobodové křížení binárního řetězce s dvoumi osmibitovými čísly 8 r b2 6 P1 Rb 2. gen 4 r a2 2 Ra P2 0 r a1 0 2 4 6 8 1. gen r b1 Rodiče Ra = [r a1, r a2 ] Rb = [r b1, r b2 ] Potomci P1 = [r a1, r b2 ] P2 = [r b1, r a2 ] Obr. 9 Geometrická interpretace křížení dvouprvkových reáně číselných řetězců V celé populaci křížení může nastat buď mezi dvoumi (resp. n) sousedními řetězci anebo se párování uskutečňuje náhodně. GA se obyčejně konstruují tak, že v jedné generaci se skříží mezi 75% a 95% všech řetězců. Někdy se toto číslo nazývá pravděpodobnost křížení v GA (p k ). Ostatní řetězce se do další generace dostávají nemodifikované. 4.4.1 Algoritmus pro křížení V aplikacích popsaných v kapitole 4 je pro křížení použit následující algoritmus (procedure Krizeni): Jako formální parametry procedury jsou definovány dva objekty typu řetězec řetězců (generace jedinců). Jeden objekt pro nezkříženou generaci, resp. generaci před křížením a druhý objekt pro generaci zkříženou, čili po křížení. Pro křížení se z původní generace vyberou postupně dvojice jedinců, říkejme jim pro zjednodušení rodiče: první - poslední, druhý - předposlední, atd. Jestliže je splněna podmínka pravděpodobnosti křížení, vygenerujeme před tímto křížením náhodně hodnotu pozice, ve které se budou jedinci dělit. Poté se jedinec nezkřížené generace (rodič 1) překopíruje na stejnou pozici generace zkřížené (potomka 1), a stejně rodič 2 na stejnou pozici potomka 2. Nato se zkopíruje první část (až po pozici dělení) rodiče 1 do první části potomka 2 a posléze první část rodiče 2 do první části potomka 1. To se zopakuje v cyklu s počtem opakování, který se rovná polovině 41
počtu jedinců v generaci (vždy křížíme dva jedince). Jestliže je počet jedinců lichý, zbylý jedinec se prostě zkopíruje do generace potomků. Jiní autoři [12] ještě činí algoritmus ještě složitějším zavedením náhody do procedury křížení. Místo systému první s posledním, druhý s předposledním, atd. losují, které řetězce se budou křížit. Upozorňuji na to, že tato metoda umožňuje křížit jedince sama se sebou. Myslím, že výše uvedený algoritmus úplně postačuje smyslu celého genetického algoritmu. Interpretuje sice na každou generaci ten samý přístup náhody (v každém křížení populace se jakoby náhodou zkříží vždy první s posledním, druhý s předposledním atd.), ale to nijak nezasahuje do filosofie celé metody, protože náhodných procesů se v jednom průchodu algoritmem aplikuje ještě celá řada. Je to např. již zmíněná ruleta nebo turnajový způsob, mutace atd. Agoritmus byl testován s oběmi verzemi algoritmu křížení a lze konstatovat, že se průběhy vývoje fitness funkcí nejlepších jedinců nelišily. Naopak při reprezentaci řetězce větším počtem pozic, vícebitovém kódování, se algoritmus po aplikaci prvně zmiňované verze výrazně zrychlil. 4.5 Mutace Posledním krokem ve vytváření nové generace je mutace. Mutace příliš nezasahuje do vzhledu nové generace, ale jak si za chvíli vysvětlíme, plní tato operace velmi důležitou funkci. Stejně jako ke křížení dochází k mutaci pouze s určitou pravděpodobností. Tato pravděpodobnost je ovšem oproti křížení podstatně menší (například 0,01). Celá operace probíhá následovně: Bereme postupně z generace jeden řetězec po druhém. Každý řetězec procházíme postupně po jednotlivých pozicích (nulách a jedničkách). Dle hodnoty pravděpodobnosti mutace měníme hodnotu na jednotlivých pozicích řetězce. Tzn. je-li na této pozici hodnota 1, změníme ji na nulu a naopak. Mutace pomáhá v situaci, kdy jsou si všechny řetězce velmi podobné. Extrémním případem takové situace je například stav, kdy se do první, náhodně vylosované generace dostane jeden velmi silný řetězec a zbytek řetězců je slabý. V takovém případě může nastat situace, kdy se do další generace dostanou pouze exempláře jediného silného řetězce. Nastane-li taková situace, můžeme dostat jiný řetězec pouze tak, že některý z exemplářů zmutujeme. Funkce mutace pomáhá i v neextrémních případech, kdy se snaží udržet různorodost generace. Mutace je taková operace, při které náhodné zvolený gen (více génů) náhodného řetězce (více řetězců) v populáci změní svoji hodnotu na jinou náhodnou hodnotu z ohraničeného rozsahu hodnot z prohledávaného prostoru. Mutace umožňuje nacházet nové řešení, které se v populaci zatím ještě nevyskytli. Mutace je základní hybnou silou GA resp. EV. Mutace je náhodná změna jednoho anebo více génů v jednom anebo více řetězců v populaci. Ve své běžné podobě se při mutaci náhodně vybere jeden gen náhodného řetězce a jeho hodnota se náhodně změní na jinou hodnotu z přípustného rozsahu R=[g 1, g 2, g 3,, g i-1, gi, g i+1,, g n ] P=[ g 1, g 2, g 3,, g i-1, γ, g i+1,, g n ] γ (g i,min ; g i,max ) kde R je rodičovský řetězec, P je potomek, g i jsou jednotlivé geny γ je zmutovaný gen. 42
V závislosti dle povahy řešeného problému má význam mutaci uskutečňovat více způsoby: a) Všeobecná mutace: hodnota vybraného genu se změní na náhodnou hodnotu z jeho odpovídajícího rozsahu γ (gi,min; gi,max), kde i je pořadové číslo genu v řetězci. Při binárním kódování řetězců se hodnota jednoho bitu změní na jeho doplňkovou hodnotu. b) Aditívní mutace: je použitelná jen při celočíselném anebo reálně-čiselném kódovaní. K hodnotě vybraného genu se připočte (odečte) náhodné číslo z definovaného rozsahu: γ=g i + α; α (αmin; αmax) c) Multiplikativní mutace: je také použitelná jen při celočíselném anebo reálně-čiselném kódovaní. Hodnota vybraného genu se vynásobí náhodným číslom z definovaného rozsahu: γ=g i * α; α (αmin; αmax) Mutace je právě tím prostředkem v GA, který umož%nuje odpoutat se z lokálního extrému anebo ze stagnujícího řešení. Mutace z pohledu celé generace je na obr. 10. Mutované geny Obr. 10 Mutace v populaci Pravděpodobnost mutace jednoho genu v rámci všech genů celé populace se běžně pohybuje v rozsahu od 0,001 do 0,1 (resp. 0,1% až 10%) podle typu aplikace. Ve všeobecnosti příliš nízká míra mutace způsobuje nedostatek nových hodnot potřebných pro pokrok. Příliš vysoká míra mutace zase způsobuje zvýšené riziko znehodnocování úspěšných anebo perspektivních jedinců a zbytečné rozptylování genů v řetězci. Algoritmus se v tomto případě začíná podobat náhodnému hledání a konverguje pomaleji. Mutace je v GA nevyhnutelnou operací. Bez ní není možná inovace hodnot genů. Naproti tomu křížení nevyhnutelnou operací není (některé verze evolučních algoritmů křížení vůbec nepoužívají). Pouze pomocí krížení, bez mutace se konvergence procesu optimalizace po určitém čase zastaví. To nastane tehdy, když najdeme nejlepší možnou kombinaci genů, které jsme měli k dispozici z počáteční populace. Nejlepší výkon dosahuje GA tehdy, když se mutace a křížení kombinují. Mutace přináší nové hodnoty a křížení urýchluje hledání. Příklad: Uvažujme situaci z příkladu (viz. kap. 4.3.4), když všechny geny nejúspěšnějších řešení (řetězce č.1, 3, 4, 8) už obsahují správné hodnoty kromě 2. genu. Dalším křížením však už není možné dosáhnout, aby se na toto místo dostala správná hodnota 2, z důvodu nevyskytující se hodnoty 2 v žádném řetězci na této pozici. 43
Č Fit 1. 1 6 3 4 5 4 2. 1 0 3 4 8 3 3. 1 7 3 4 5 4 4. 1 4 3 4 5 4 5. 8 1 3 4 5 3 6. 1 3 3 4 0 3 7. 1 1 9 4 5 3 8. 1 9 3 4 5 4 Správné řešení se tedy má šanci objevit pouze po mutaci některého řetězce v 2. genu na hodnotu 2. 4.6 Mezilehlé křížení Zaujímavou operací především v numerických typech úloh (optimalizace v spojitém prostoru) je jistá kombinace křížení a mutace -mezilehlé křížení, které bylo převzaté z evolučných strategií. Je použitelné jen při reálně-číselném kódovaní řetězců. Předpokladejme dva rodičovské řetězce g a =[g a,1, g a,2,, g a,n ] T a g b =[g b,1, g b,2,, g b,n ] T Nový potomek vznikne operací podle vztahu p = g a + α*(g b -g a ) kde α je matice velikosti n x n, která má v diagonále náhodné čísla z rozsahu typicky od 0.25 do 1.25 a mimo diagonály má nuly. Geometrická interpretace této operace je na obr. 11. 8 g b2 P3 Rb 6 P1 2. gen 4 g a2 2 Ra P2 P4 0 g a1 0 2 4 6 8 1. gen g b1 Rodiče Ra = [g a1, g a2 ] Rb = [g b1, g b2 ] Potomci P1, P2, P3, P4 Obr.11 Geometrická interpretáce mezilehlého křížení Poznámka: Někdy se používá tzv. aritmetické křížení, které je podobné mezilehlému křížení s tím rozdílem, že některé geny (připadně všechny geny řetězce) vzniknou jako aritmetický průměr 44
odpovídajících genů rodičů. 4.7 Varianty genetických algoritmů Od roku 1989, kdy D. E. Goldberg svou publikací [3] upozornil na možnost použití genetických algoritmů, a to nejen pro biologické simulace, ale i pro technické aplikace, nastává exponenciální nárůst publikací týkajících se teoretických problémů GA, tak i jejich praktických aplikací. Zpočátku byla velká pozornost věnována různým variantám standardního GA, tj. vlivu různých variant základních operátorů selekce, křížení a mutace. Velice důležitým problémem je presentace problému, tj. zakódování pomocí jednotlivých genů. Dále je třeba vhodně zvolit účelovou funkci a též vhodně zvolit nastavení parametrů GA, jako jsou velikost populace, pravděpodobnost křížení, pravděpodobnost mutace atd. Lze také využít tzv. metaoptimalizace, kdy nastavení parametrů GA je uskutečňováno např. jiným GA ve vyšší vrstvě nebo pomocí fuzzy pravidel. Běžně se počáteční populace generuje náhodně. Pro urychlení výpočtu je velice výhodné generovat počáteční populaci pomocí heuristik, tj. využít maximálně informace o řešeném problému. 4.7.1 Hybridní GA Velkou skupinu genetických algoritmů tvoří tzv. hybridní GA, kdy se kombinují jiné známé metody s GA. Například pomocí jiných negenetických metod optimalizace (např. metodou simulovaného žíhání) generujeme počáteční populaci a potom se pomocí GA snažíme najít ještě lepší řešení. Jinou variantou je hierarchická struktura GA, kdy na nejnižší úrovni GA se nacházejí skupiny paralelně běžících negenetických metod. 4.7.2 Paralelní GA Populační způsob prohledávání stavového prostoru obsahuje již ve svém principu paralelnost, kterou lze využít, pokud je výpočet prováděn na odpovídajícím technickém vybavení a s příslušným programovým vybavením. Pokud řešíme velice obtížné a časově náročné problémy optimalizace, je výhodné použít paralelní GA. Výrazným zlepšením klasického GA je zavedení operátoru migrace, který urychluje nalezení globálního extrému řešené úlohy. Podstata je následující. Řešená úloha je pomocí GA řešena nezávisle v několika malých populacích, z nichž někteří (např. nejlepší) jedinci předávají své genetické informace do společné populace, a tak vytvářejí bohatý genofond, který podstatně rychleji konverguje k cílovému řešení. Tato metoda byla např. ověřována na problému nalezení cesty bludištěm, kde pohyb byl omezen na dva směry (dolů a doprava), čímž byla při známém rozmístění překážek snadno patrná i lokální minima. Tak bylo možné velice snadno sledovat vliv operace migrace na úspěšnost celého řešení. Problém je sice řešitelný pomocí klasického GA také, ale za cenu podstatného zvětšení velikosti populace (rozsáhlejší genofond) a v důsledku toho dojde k podstatnému prodloužení výpočtu. 4.7.3 Víceúrovňové distribuované GA Vzhledem k tomu, že průběh práce algoritmu závisí na počáteční populaci a že chování GA je silně ovlivněno celou řadou implementačních detailů, byl vyzkoušen i tzv. víceúrovňový distribuovaný GA. V této variantě je spuštěno současně několik GA ( s různou počáteční populací s různě nastavenými parametry, s různou implementací). Za řešení úlohy se považuje řešení dosažené algoritmem hierarchicky nejvyšší úrovně. U víceúrovňových distribuovaných algoritmů se s výhodou zavádí restart podřízených algoritmů v případě, že po jistý stanovený počet iterací nedosáhnou zlepšení řešení, případně nenabídnou GA vyšší struktury žádné řešení nebo žádné jimi nabídnuté řešení není přijato. Porovnání časové náročnosti výpočtu, 45
resp. počtu iterací potřebných k nalezení řešení obyčejným a disribuovaným GA (počet iterací se u víceúrovňových distribuovaných GA stanovuje podle počtu iterací provedených algoritmem v nejvyšší hierarchické úrovni) výrazně hovoří ve prospěch tohoto uspořádání. Jako významný lze označit vliv uspořádání hierarchické struktury počet vrstev, počet algoritmů v jednotlivých vrstvách, atd. Hlavní přínos migrace je, že lze řešit i relativně složité problémy na PC, kde jsme ještě pořád limitováni rozsahem paměti. Součet všech jedinců malých populací může být menší než počet jedinců jedné velké populace. Další velice důležitou vlastností operátoru migrace je, že může být použito paralelní zpracování řešené úlohy. Úloha může být řešena na více paralelně pracujících počítačích, které jsou zapojeny do počítačové sítě. Jednotlivé počítače reprezentují izolované malé populace, v nichž probíhá nezávislý, náhodou ovlivněný vývoj. Nejlepší dosahovaní potomci jsou prostřednictvím počítačové sítě posíláni jednomu centrálnímu počítači, který obsahuje společnou populaci nejlepších jedinců. I na tomto centrálním počítači probíhá GA. Tak lze dosáhnout podstatné urychlení výpočtu i při omezených paměťových možnostech jednotlivých PC. V této souvislosti mne napadá srovnání se sportovními mistrovstvími světa nebo olympijskými hrami, kdy v průběhu stanoveného času probíhají lokální soutěže (kvalifikace) a nakonec se nejlepší z těchto soutěží utkají mezi sebou a nejsilnější jedinec ve svém oboru je vyhlášen nejlepším. 5 DALŠÍ EVOLUČNÍ ALGORITMY I když jsou genetické algoritmy mocným nástrojem pro globální optimalizaci a pyšní se tím, že využívají nejzákladnější evoluční postupy, ověřované bezmála čtyři miliardy let na vývoji rostlin a živočichů z prvotních jednobuněčných organismů, nebylo by to potvrzení vývojových tendencí, kdyby věda ustrnula jen na této aplikaci poznatků z biologie. Proto od devadesátých let minulého století započala geneze dalších optimalizačních algoritmů, kdy se vědcům již nechtělo přicházet na pouhé zdokonalování základních operací evoluce (výběr, křížení, mutace), ale začali tyto operace zařazovat do zcela jiných postupů a začaly vznikat nové verze těchto nástrojů. Dále se upouští od striktního dodržování analogie s přírodou. Jako příklad lze uvést přítomnost několika (!) rodičů při vzniku jednoho potomka. Příklady dalších z mnoha evolučních algoritmů následují. 5.1 Evoluční strategie Za zakladatele v přístupu, který se nazývá evoluční strategie (ES), jsou považovani Němci I. Rechenberg a H.P.Schwefel z Technické univerzity v Berlíně. Jejich původní aplikační oblastí byla začátkem 60. let optimalizace aerodynamického tvaru předmětů při jejich vývoji ve vzduchových tunelech. První verze ES uvažovala jedného aktuálního jedince, který byl reprezentovaný dvojicí vektorů v =(x, σ), kde x je vektor hledaných parametrů (souřadnice bodu v prohledávaném prostoru) a σ je vektor směrodatných odchylek možných změn prvků vektoru x.. Změny byly uskutečňované díky jedinému operátoru mutaci. t+ 1 t x = x + N(0, σ ) (X3,1) kde N je vektor nezávislých náhodných čísel, které mají normální rozdělení pravděpodobnosti s nulovou střední hodnotou a směrodatnou odchylkou σ. Funkce hustoty normálního rozdělení pravděpodobnosti náhodné proměnné je ve tvaru h( x) = 1 2 2πσ e ( x 2 2 / 2σ ) 46
Protože σ ovlivňuje šířku Gaussové křivky, zjednodušeně je označována jako velikost kroku mutace. Změny jedinců jsou v souladě s pozorováním, že v přírodě probíhají malé změny častěji než velké. Do nasledujícího kroku (generace) se dostane ten z dvojice rodič + potomek, který dosahuje lepší hodnotu účelové funkce, připadně ten, který splňuje všechny omezení. Tato verze algoritmu se nazývá (1+1)"- 1 rodič + 1 potomok. Ze začátku bylo σ uvažované jako vektor konstant. Na základě statistických pozorovaní, ale bylo zjištěné, že počet mutací, které vedou k zlepšení účelové funkce, představuje ze všech mutací asi 1/5. To vedlo k nasledující úpravě algoritmu. Po každých k generacích, během kterých se vyhodnocuje míra úspěšnosti mutací ϕ, se uskuteční korekce parametru σ t+ t σ 1 = σ c, jestliže ϕ<1/5; t+ 1 t σ = σ / c, jestliže ϕ>1/5; t+1 t σ = σ, jestliže ϕ=1/5; kde 0.817<c<1 byla empiricky získaná konstanta. Tato úprava zapříčinila, že jestliže mutace jsou úspěšné, krok změn se zvětšuje, jestliže ne, krok změn se zmenšuje. Přes tuto úpravu algoritmus často vedl k uvíznutí řešení v lokálním optimu. Proto byla velikost populace (podobně jako u GA) zvětšena z 1 na n jedinců, což přineslo více paralelních směrů hledání. Kromě toho byl zavedený i operátor křížení, který se aplikoval na složky vektora x, tak současně na složky vektoru σ. Křížením dvou rodičů Xa a Xb Xa={x a, σ a }={x a1,x a2,...,x an, σ a1, σ a2,, σ an } Xb={x b, σ b }={x b1,x b2,...,x bn, σ b1, σ b2,, σ bn } vznikne potomek Xp={x p, σ p }={x p1,x p2,...,x pn, σ p1, σ p2,, σ pn } jehož prvky jsou kombinací rodičů Ra a Rb. Způsob křížení oproti původnímu typu použitému v GA byl zmodifikovaný na diskrétně kríženie (pozn. není probíráno) nebo mezilehlé křížení (viz. kap. 4.6). Později se tyto typy křížení začali používat i v GA. Při verzích ES s více jedinci v populaci se přestala používat deterministická adaptace vektora σ pravidly založenými na 1/5 úspěšnosti (viz. výše uvedené vztahy). Namísto toho se i tato část řetězce začala podrobovat mutaci podobné jako v případě (X3.1). Při víceprvkových populacích se začali používat dvě strategie výběru. Nejprve se z náhodně vybraných dvojic rodičů křížením a mutací vyprodukuje λ potomků (pozn. λ>µ, λ - počet potomků, µ - počet rodičů). Při tzv. typu (µ+λ)" se rodiče a potomci spojí do jedné skupiny, ze které se deterministicky opět vybere µ nejúspěšnějších jedinců. Při typu,,(µ,λ)" se vybere také µ nejúspěšnějších jedinců, ale pouze ze skupiny λ potomků. Díky tomuto způsobu výběru se život každého jedince omezí pouze na jednu generaci. Navíc se nezaručí přechod nejlepšího jedince předcházející generace do populace v nové generaci. Na druhé straně, ale tento typ vykazuje jisté přednosti při úlohách, kde se poloha globálního optima v čase mění, připadně je zašuměná. Poměr µ : λ se běžné doporučuje volit okolo 1:7 (např. 15 rodičů ku 100 potomkům). Jestliže chceme urychlit lokální konvergenci, můžeme tento poměr změnit až na hodnotu 1: 20 (např. 5 rodičů, 100 potomků). Jak vyplývá z použitých operácí, evoluční strategie jsou určené především na optimalizaci numerických problémů. Poznámka: Skutečnost, že součastí optimalizovaného řetězce jsou i strategické parametry σ, které ovlivňují proces evoluce, vlastně způsobuje, že u ES se projevuje jev, který se označuje jako samoadaptace. Toto bylo původně specifikem ES, ale postupně se podobné mechanismy 47
adaptace řídících parametrů algoritmu začali v různých formách používat i jiných evolučních přístupech. 5.2 Diferenciální evoluce Diferenciální evoluce je název poměrné jednoduchého, ale výkonného optimalizačního algoritmu. Přestože používá jen málo řídících parametrů, je schopná úspěšné řešit numerické úlohy. Diferenciální evoluce pracuje podobně jako jiné evoluční přístupy s populací potenciálních řešení (jedinců). Schéma diferenciální evoluce (DE) je dost podobné algoritmům genetickým, s nimiž má několik společných rysů, jako je například tvorba potomků (zde však pomocí 4 rodičů a ne 2, jak je tomu u genetických algoritmů), používání tzv. generací apod. V této kapitole bude popsán princip tohoto algoritmu včetně odlišností od GA. DE pracuje s populacemi stejně jako ostatní evoluční algoritmy. Princip její tvorby a ošetření parametrů v jedincích je stejný jako pro ostatní evoluční algoitmy. V evolučních algoritmech, stejně jako v klasické evoluční teorii hraje, životně důležitou úlohu tzv. mutace. DE má tu zvláštnost, že k vytvoření dalšího potomka je potřeba ne dvou, ale čtyř rodičů. Pro každého jedince jsou náhodně vybráni tři další nestejní jedinci z populace (r1, r2, r3). Pomocí těchto tří jedinců se pak vytvoří tzv. šumový vektor v, který není ničím jiným, nežli mutací kombinace oněch tří vybraných rodičů. Konkrétně je mutace provedena tak, že se rozdíl dvou prvních rodičů vynásobí mutační konstantou F a výsledný vektor se přičte ke zbývajícímu třetímu (viz následující rovnice). v j = x G r3,j + F. (x G r1,j - x G r2,j) (3.6) V případě diferenciální evoluce je další zvláštností to, že křížení nastává až po mutačním procesu, zatímco např. u genetických algoritmů je prvně vytvořen potomek křížením a teprve poté dochází k jeho případné mutaci. Proces křížení u DE znamená, že se ze čtvrtého doposud nepoužitého rodiče a šumového (zmutovaného) vektoru vytvoří nový jedinec tzv. zkušební (trial) vektor. Ten se vytváří za pomoci tzv. konstanty křížení CR tak, že se v cyklu vybírají korespondující parametry ze čtvrtého a šumového jedince a pro každou takto vybranou dvojici je generováno náhodné číslo. Pokud je menší nežli CR, pak se do příslušného parametru ve zkušebním vektoru přesune parametr z jedince šumového. Tímto způsobem se vytvoří nový jedinec, který poté soutěží o místo v nové populaci s aktuálním - čtvrtým jedincem z populace staré. Kdybychom tu variantu vzali v doslovné analogii s běžným životem, pak čtvrtý rodič je vlastně synem ostatních tří rodičů a zároveň otcem svého bratra. Zde se již DE značně odchylují od běžných pravidel evoluce a z morálních hledisek již od dalších analogií raději upustím. Další odlišností DE od GA je testování naplnění ukončovacích parametrů. DE je totiž ukončena pouze tehdy, provede-li se uživatelem zadaný počet generací. Jiný ukončovací parametr tento algoritmus nemá, ovšem není vyloučeno, že programátorská fantazie dá vzniknout dalším verzím ukončovacích podmínek. Během každé generace se uschová hodnota účelové funkce nejlepšího jedince do vektoru historie, který po ukončení znázorňuje průběh evolučního procesu. DE nemá jen samé výhody. Jednou z nevýhod je tzv. stagnace, která je vlastní tomuto algoritmu. Popis a důvody stagnace diferenciální evoluce se nijak neliší od toho samého jevu ostatních evolučních technik, tedy ani od stagnace genetických algoritmů, proto lze v tomto místě odkázat na kapitolu 3.7.3. Narozdíl od obecných poznatků probraných v této kapitole optimalizační proces běžící pod diferenciální evolucí vykazuje za určitých podmínek stagnaci navzdory faktu, že : - populace nezkonvergovala do lokálního extrému, 48
- populace neztratila diverzibilitu, - vznikají i nadále noví jedinci. Tento problém vzniká u DE při určité vhodné velikosti populace a řídících parametrů. Tyto poznatky je tudíž dobré využít při návrhu populace a řídících parametrů. Riziko stagnace je nepřímo úměrné počtu nových možných řešení, nových jedinců kandidátů, které je algoritmus schopen vygenerovat během jedné generace. Jinými slovy, čím je větší počet možných řešení během jedné generace, tím je menší riziko stagnace. 5.2.1 Algoritmus diferencialní evoluce Nechť každý jedinec populace je ve formě vektoru hledaných parametrů x i = {x i,1 ; x i,2 ;...,x i,n }, kde i je jeho pořadové číslo v populaci. Základem algoritmu je specifický způsob tvorby tzv. zkušebních jedinců". Jsou to nově vytvoření potomci, kteří soupeří o přežití se svými rodiči. Algoritmus DE výpočtu jedné generace je nasledující: 1. Pro jedince x i. Aktuální populace o velikosti N řetězců, kde i je pořadové číslo jedince v populaci se vygeneruje vektor v v = x + F( x x ) 3 r1 r 2 r kde r 1, r 2, r 3 jsou různe náhodné pořadové čísla v populaci (od 1 do N), současně jsou různe i od i a 0<F<2 je konstanta. Slovně vyjádřené: vybereme jeden náhodný řetězec populace jiný jak x i, a připočítáme k němu rozdíl vektorů dvou dalších, náhodně vybraných řetězců vynásobený číslem F. 2. Vytvoříme tzv. zkušební řetězec u. Pro každý index j=1,...,n u j = v j jestliže ρ < CR anebo u j = v i, j jestliže ρ CR kde j je pořadové číslo prvků vektora u a v, ρ je náhodné číslo z intervalu (0;1), CR je parametr pravděpodobnosti křížení ze stejného intervalu. Jedná se vlastně o vytvoření řetězce u pomocí diskrétního křížení řetězců v a x i. 3. V posledním kroku se vygeneruje i-tý jedinec nové populace (uvažujme případ minimalizácie) x t +1 t i = u jestliže f ( u) < f ( x i ) anebo t+1 t t x i = xi jestliže f ( u) f ( x i ) kde t je číslo aktuální populace. To znamená, že do nové generáce postoupí jako i-tý jedinec úspěšnější z dvojice x t i - původní jedinec a u- zkušební řetězec. 4. Postupnost' kroků 1-3 se opakuje pro všechny řetězce aktuální populace (i=1,2,...,n). Jak je zřejmé, algoritmus DE je jednoduchý, vyžaduje pouze dva parametre CR a F, které se určují experimentálně. Jejich hodnoty ovplivňují správnou činnost a rychlost konvergence algoritmu. DE je vhodná při numerické optimalizáci běžných funkcií, přičemž většinou poměrně rychle konverguje. Někdy, zejména v případě velmi členitých, 49
multimodálních účelových funkcií může uvíznout v některém lokálním extrémů. 5.3 Samoorganizující se migrační algoritmus SOMA Činnost algoritmu SOMA je založena na geometrických principech. Vzhledem k tomu, že pracuje s populacemi podobně jako např. genetické algoritmy a výsledek po jednom evolučním cyklu, migračním kole je totožný s genetickými algoritmy či diferenciální evolucí, lze jej řadit např. mezi evoluční algoritmy navzdoru faktu, že během jeho běhu nejsou vytvářeni noví potomci, jak je tomu u jiných evolučních algoritmů. Pokud by se hledala biologická analogie, pak by se dal tento algoritmus spíš přirovnat k harémové tvorbě potomků ve stádu (jelen a laně,...) než ke klasickému výběru rodičů z populace. Původní myšlenka, která vedla k jeho vytvoření, spočívá v napodobení chování skupiny jedinců, kteří kooperují při řešení společného problému, jako je např. hledání zdroje potravy apod. Tyto kooperační principy, kterými se inteligentní jedinci v sociálně-biologickém prostředí řídí, lze také odpozorovat v přírodě (chování mravenců, včel, predátoři vlci ve smečce atp.), což je jedním z důvodů uvedení SOMA algoritmu v tomto pojednání. Narozdíl od ostatních evolučních algoritmů v algoritmu SOMA neprobíhá tvorba nových řešení (jedinců, potomků) filosofií křížení rodičů, ale je založena na kooperativním prohledávání (migraci) prostoru možných řešení daného problému. Vzhledem k tomu, že vlastní jádro SOMA nekopíruje již zmíněné evoluční principy, ale řídí se principy vycházejícími ze spolupráce inteligentních jedinců migrujících v prostoru možných řešení tak jako jejich biologické protějšky po krajině, byl pro evoluční cyklus známý jako generace zvolen název migrační kolo. Vzhledem k tomu, že hlavní myšlenka algoritmu SOMA není založena na principu evoluce jako takové, ale je založena na již zmíněných principech smečky, není klasifikován jako algoritmus evoluční, ale tzv. memetický. Ve své čisté matematické podstatě je to vcelku jedno, protože smyslem jakéhokoliv paralelního algoritmu (tzn. algoritmu pracujícího s množinou řešení najednou) je nalezení nových lepších řešení pozic na dané hyperploše. V případě, že je pro výpočet nových pozic použito evolučních principů na úrovni např. genomu, jsou tyto algoritmy nazývány jako genetické apod. Vlastnost samoorganizace u SOMA algoritmu plyne z faktu, že se jedinci ovlivňují navzájem během hledání lepšího řešení, což mnohdy vede k tomu, že v prostoru možných řešení vznikají skupiny jedinců, které se rozpadají či spojují, putují přes prohledávaný prostor. Jinými slovy si skupina jedinců neboli populace sama organizuje vzájemný pohyb jedinců odtud samoorgaizace. Následující text přiblíží změny v názvosloví a významu jednotlivých operací SOMA vůči ostatním podobným metodám. Životně důležitou roli ve všech evolučních procesech hraje tzv. mutace. Mutační procedury se u jednotlivých algoritmů od sebe liší, neméně mají společné to, že se využívá náhody generované pomocí generátoru náhodných čísel. V případě SOMA je mutace přejmenována na tzv. perturgaci. Důvod k použití dalšího nového termínu je prozaický. Při pohybu jedinců skrz prostor možných řešení je jejich pohyb náhodou rušen (tzn. perturbován) a nikoli mutován. To, jak silně bude perturbace probíhat (jak moc parametrů jedince bude změněno), záleží na nastavení parametru PRT, který je jedním z uživatelsky nastavitelných parametrů pro SOMA algoritmus. Pomocí tohoto parametru se generuje perturbační vektor (PRT vektor), který je pro každého jedince generován zvlášť a je platný jen pro jeden aktuální běh aktivního jedince. PRT parametr je v podstatě ekvivalentem parametru pravděpodobnost mutace v genetických algoritmech. U klasických evolučních algoritmů znamená pojem křížení tvorbu nového potomka, neboli vygenerování nové pozice na dané hyperploše pomocí dvou již existujících pozic (rodičů). Jde 50
o jednorázové vygenerování pozice, která může být lepší, ale také horší kvality nežli rodiče. To pak vede k jejímu potvrzení či zamítnutí v nové populaci. SOMA je v tomto bodě opět odlišný. Při putování aktuálního jedince po hyperploše totiž dochází k mapování tohoto prostoru po diskrétních skocích, na což se dá nahlížet jako na vygenerování sekvence potomků, z nichž přežije jen ten nejlepší. Je tedy generována sekvence potomků a ne dva, jak je tomu např u genetických algoritmů. Jak už bylo naznačeno, křížení je u SOMA nahrazeno putováním jedinců po dané hyperploše. Při tomto pohybu si každý jedinec pamatuje souřadnice pozice na níž nalezl nejlepší řešení v rámci své cesty a toto řešení pak postupuje do dalších migračních kol. Principem algoritmu SOMA je soutěživě-kooperativní chování jedinců řešících společný problém. Jako příklad může sloužit chování smečky lovících vlků při hledání potravy. Ve fázi spolupráce si navzájem jednotliví jedinci sdělují, jakou kvalitu hledaného momentálně nalezli a na základě toho se snaží prizpůsobovat své chování. Ve fázi soutěžení se každý jedinec snaží vyhrát nad ostatními snaží se nalézt co nejlepší zdroj potravy. Po ukončení fáze soutěže nastatne opět fáze spolupráce a jedinci si vymění informace o tom, který z nich má nejlepší zdroj potravy. Ostatní opustí své nalezené zdroje potravy a migrují (fáze soutěžení) směrem k jedinci s nejlepším zdrojem potravy a během této migrace se snaží nalézt ještě zdroj. To se opakuje, dokud se všichni nesejdou u nejvydatnějšího zdroje potravy. Na tomto silně zjednodušeném principu funguje i algoritmus SOMA. SOMA se svou robustností ve smyslu nalezení globálního extrému vyrovná takovým algoritmům, jako je např. diferenciální evoluce a jsou schopny nalézat i velmi hluboké globální extrémy daných účelových funkcí. V knize [21] se autor algoritmu SOMA věnuje dostatečně podrobně a také probírá různé varianty tohoto principu globální optimalizace. 5.4 Srovnání s genetickými algoritmy Podobnost i rozdílnost SOMA a jiných algoritmů lze shrnout [21]: Tvorba nové populace: GA pomocí dvou rodičů. DE pomocí čtyř rodičů. SOMA pomocí jednoho se všemi (varianta AllToOne), nebo všech se všemi (AllToAll) Náhoda: GA pomocí mutačního operátoru, jedinec se pohybuje v N rozměrném prostoru. DE stejně jako GA SOMA pomocí PRT vektoru, jedinec se pohybuje v N-k rozměrném podprostoru, který je kolmý na původní N rozměrný prostor. Výběr rodičů: GA pomocí různých technik (ruleta, vhodnost turnaj, náhodně,...) DE 3 ze 4 čirá náhoda, čtvrtý vypočítáván z prvních 3, 51
SOMA nevybírá (s výjimkou verze AllToRand nebo AllToAll Adaptive). 5.5 Umělý imunitní systém Podobně jako jiné druhy evolučních výpočetních technik (EVT), inspiraci v přírodě našel i přístup, který napodobnuje princip imunitného systému živých organizmů. Podle toho ziskal i název Umělý imunitný systém (UIS) [Castro 02], [Dasgupta 99], [Koster 03]. Nejprve si velmi zjednodušené přibližme biologické pozadí tohoto mechanizmu. Když do lidského těla vnikne cizí antigén, imunitný systém začne produkovat protilátky. Jsou to specifické molekuly, které jsou schopné rozpoznat tyto cizorodé látky a vázat se na jejich jisté časti, které se nazývají epitopy, a kterých má každý antigén více. To znamená, že každý druh antigénu může být rozpoznaný více druhy protilátok. Jestliže je delegovaná přítomnost antigénů, imunitní systém začne intenzívně rozmnožovat (klonovat) tyto protilátky, které daného vetřelce objevili. Při tomto procese nověvznikající molekuly protilátek mutují, čímž se některé ještě lepší dokáží specializovat"' na cizí antigény. Ty dále inicializují produkci svojich klonů, ostatní zůstanou nevyužité. Pomocí tohoto procesu se jejich vlastnosti začínají čím více přizpůsobovat na boj s daným typem antigénů. Na základě tohoto byl v [Castro 02] navrhnut algoritmus, který byl aplikovaný na optimalizáci multimodálních funkcí. Nejprve si uveďme některé pojmy, které se zde používají. Buňka je jedno potenciální řešení (podobně jako řetězec anebo chromozóm), reprezentující vektor reálně číselných hodnot x R n. Populace je skupina buněk. Afinita je míra podobnosti dvou buněk vyjádřená euklidovskou vzdáleností příslušných numerických vektorů. Klon je identická kópie rodičovské buňky. Algoritmus UIS je nasledovný: 1. Náhodná inicializace populace n pop buněk a vyhodnocení jejich fitness. 2. Test ukončovacích podmínek. 3. Vyhodnocení vektoru fitness celé populace. 4. Vygenerování n c klonů každé buňky populace, čímž vznikne rozšířená populace. 5. Mutace každého klonu, nepřímo úměrné jeho úspěšnosti podle vztahu (5.1) (úspěšné buňky jsou málo zmutované, neúspěšné jsou více zmutované). 6. Když je nejúspěšnější zmutovaný klon daného rodiča lepší než tento rodič, nahradí jej v populaci. 7. Jestliže se průměrná hodnota fitness nové populace v porovnaní s aktuální populací výrazně zlepšila (řekněme o hodnotu ε fit ), pokračuje se v bodem 4. 8. Určení vzájemné afinity (vzdálenosti) všech buněk rozšířené populace. Likvidace všech buněk, jejichž afinita vůči nejlepším buňkám je menší než vhodně zvolená malá hodnota ε a (čímž se odstraní mnoho přebytečných podobných buněk). 9. Náhodný výběr počtu α.n pop buněk a doplnění počtu (1-α).n pop vybraných původních buněk do nové populace; 0<α<1, (můžeme také použít některou z jiných metod výběru uvedených v časti 4.3). Pro mutaci platí vztah x = x N + e β t+ 1 t f ( x) n 52
Kde x t+1 je nová, mutovaná buňka původního rodiče x t, 0<N<1 je náhodné číslo s normálním rozdělením pravděpodobnosti, β je konstanta přizpůsobující velikost mutace dané aplikáci, f n (x) je normalizovaná fitness funkce, pro kterou platí f ( x) min f ( x) f n ( x) = max f ( x) min f ( x) kde f(x) je fitness v případě maximalizace. Poznámka: Pokud nemáme jiné zkušenosti, n c se může zvolit např. 10 až 20, α může být zvoleno okolo 0.8. Algoritmus UIS kombinuje lokální i globální hledaní. Je zřejmé, že v tomto algoritmu je potřebné v každé generaci vícekrát vyhodnocovat fitness, než je tomu v bežném genetickém algoritmu (GA), evoluční strategii (ES) nebo diferencialní evoluci (DE). Kromě toho je použitá výpočtově náročná operáce určení vzájemných afinit všech buněk populace. Z těchto důvodů je UIS výpočtově náročnější algoritmus, než předcházející typy evolučních výpočtů (EV). Přesto může být UIS v některých typech aplikací velmi přínosný. Kromě celého algoritmu UIS jako takového, může být užitečné využít jen některé jeho časti na zdokonalení jiného typu evolučního algoritmu. Z tohoto pohledu mohou být zajímavé například kroky 4 až 6 anebo krok 8. 53
6 MATLAB TOOLBOX GENETICKÉ ALGORITMY Máme dvě možnosti jak používat toolbox genetických algoritmů: Použití Genetic Algorithm Tool, což je grafické rozhraní genetických algoritmů nebo použití příkazové řádky. Vzhledem k lepšímu pochopení toolboxu je návod na použití zpracován pro grafické rozhraní. 6.1 Užití Genetic Algorithm Tool Toolbox Genetic Algorithm využívá grafické rozhraní, které umožní používat genetické algoritmy bez používání příkazové řádky. Pro otevření toolboxu Genetic Algorithm napíšeme příkaz gatool, tím to příkazem se otevře pracovní okno které vidíme na obrázku otevře pracovní okno které vidíme na obrázku Zadání fitnes funkce Zmáčknutím se zobrazí možností nastavení Zadání počtu proměnných fitnes funkce Spuštění genetického algoritmu Zde se zobrazí výsledek K využití toolboxu genetických algoritmů musíme nejprve zadat Fitness function a Number of variables. Fitness function - cílem funkce je nalézt minimum. Fitness funkci musíme zadat ve formátu @fitnessfun, kde fitnessfun.m je M-file, který počítá Fitness funkci. Znak @ vytváří funkci, 54
která určuje, že se jedná Fitness funkci. Number of variable počet proměnných ze vstupního vektoru do fines funkce. Pro spuštění genetického algoritmu zmáčkneme tlačítko Start. Toolbox zobrazí výsledek optimalizace v okně Status and Results. Položka Options nám umožňuje měnit nastavení genetic algorithm tool. V této položce se zobrazí možnosti nastavení z mnoha kategorií. Ke zobrazeni nastavení v jedné z kategorií uvedených v okně zmačknout znaménko plus vedle. Pro funkce, které chceme optimalizovat musíme nejprve napsat M-file. Příklad: f(x 1, x 2 ) = x 1 2-2 x 1 x 2 + 6x 1 + x 2 2-6x 2 1. vybereme New z hlavního menu 2. vybereme M-file, otevře se nový M-file 3. v M-file zadáme následující dva řádky kódu function z = my_fun() z = x(1)^2 2*x(1)*x(2) + 6*x(1) + x(2)^2 6*x(2); 4. uložíme M-file pro kontrolu správnosti M-file zadáme: my_fun ( [2 3] ) zobrazí se výsledek ans = -5 Nalezení minima Příklad Rastrigin s Funkce Cílem tohoto příkladu je nalezení minima z Rastrigin s funkce. Tato funkce se často používá k testování genetických algoritmů. Rastrigin s Funkce je pro dvě nezávislé proměnné definovaná Ras(x) = 20 + x 1 2 + x 2 2 10( cos2*x 1 + cos2*x 2 ) Toolbox obsahuje M-file rastriginsfcn.m., který spočítá hodnoty Rastrigin s funkce. Na následujícím obrázku je zobrazeno vykreslení Rastrigin s Function 55
Globální minimum v [00] Z obrázku vyplývá, že funkce Rastrigin má mnoho lokálních minim. Má ale právě jedno globální minimum, které nastane v bodě [0 0] v rovině x-y. Rastrigins Function je často používaná k testování genetických algoritmů, protože obsahuje mnoho lokálních minim, které jsou obtížné pro standardní gradientní metody pro nalezení globálního minima Nalezeni minima rastrigin s function Tato část vysvětluje jak najít minimum rastrigin s function použitím genetického algoritmu Následující forma vykresleni Rastrigins Function ukazuje střídavě maxima a minima Lokální maximum Lokální minimum Globální minimum [0 0] 56
Příklad: Nalezeni minima Rastrigin function. Tato část vysvětluje jak najít minimum Rastrigin s function použitím genetických algoritmů. Pro nalezení minima funkce musím provést následující kroky: 1. zadat v příkazové řádce gatool tím se otevře genetic algorithm tool 2. v genetic algorithm tool zadáme následující instrukce: v poli Fitness function zadáme @rastriginsfcn v poli Numbers of variables zadáme 2, což je číslo nezávisle proměnných pro Rastrigins Function Jak správně zapsat Fitness function a Numer of variables je zobrazeno na obrázku. 3. zmáčkneme tlačítko start jak je zobrazeno na následujícím obrázku. Spouštěcí tlačítko Pokud algoritmus probíhá pole Current generation ukazuje číslo aktuální generace. Můžeme dočasně pozastavit běh algoritmu stisknutím tlačítka Pause. Když tlačítko Pause zmáčkneme název tlačítka se změní na Resume. Když zmáčkneme tlačítko Resume algoritmus začne znovu probíhat z bodu přerušení. Po skončení běhu algoritmu panel Status and results zobrazí výsledek jehož obsah je na následujícím obrázku Fitness hodnota v konečném bodě Konečný bod Status an results zobrazí následující informace: Konečná hodnota fitness function, kdy byl algoritmus ukončen, 57
funkční hodnota 0,0067749206244585025 Příčina ukončení algoritmu, Exit: Optimization terminated: Maximum numer of generations exceeded. v tomto příkladě byl algoritmus ukončen po 100 generacích, standardní hodnota volby generace, která specifikuje maximální množství generací algoritmus vypočítá. Konečná hodnota, která je v tomto příkladu [0.00274-0.00516]. Zobrazovaní grafů Panel grafu umožňuje zobrazit různé grafy poskytující informace o genetických algoritmech zatím co probíhají. Tato informace vám pomůže zenit nastavení,aby se zlepšilo vykonávaní algoritmu. Na příklad ke zobrazení nejlepší a průměrné hodnoty fitness function v každé generaci, vybereme poličko Best fitness value jak je ukázáno na obrázku. Výběr Best fitness Když zmačkneme start Genetic Algorithm Tool zobrazí graf nejlepší a průměrné hodnoty fitnes funkce každé generace. Když algoritmus se zastaví objeví se graf jak je ukázáno na následujícím obrázku. 58
Pro zlepšení vzhledu grafu můžeme změnit měřítko osy y na logaritmické a to následně: 1. vybere Axes Properties z menu Edit 2. zmáčkneme záložku osy Y 3. v poličku Scale vyberte Log Výběr osy Y 1 vyber Axes Properties z menu Edit 2 zmačkni Y 3 v poličku Scale vyberte Long Výběr logaritmického měřítka Zobrazení upraveného grafu s logaritmickým měřítkem y osy. 59
Terminologie genetických algoritmů Fitness function je funkce, kterou chceme optimalizovat. Toolbox zkouší najít minimum fitness function. Musíte napsat fitness function jako M-file a vložit jako vstupní argument hlaví funkci genetického algoritmu. Individuals Jedinec je nějaký bod, kterému můžeme přiřadit fitness funkci. Hodnota z fitness funkce pro jedince je výsledek. Na příklad když fitness funkce je f (x 1, x 2, x 3,) = (2x 1 + 1) 2 + (3x 2 + 4) 2 + ( x 3-2) 2 vektor(2,3,1) jehož délka je počet proměnných v úloze, je odlišná. Population and Generation populace je matice jednotlivce na přiklad velikost populace je 100 a počet proměnných ve fines funkci je 3 to představuje matici populace 100 na 3. Diversity Diversity týká se průměrné vzdálenosti mezi jednotlivci v populaci. Na obrázku je v levé části populace s vysokou diversitou, zatímco populace na pravé části má nízkou diversitu. Rodiče a potomci vytvoření další generace, genetický algoritmus vybírá spolehlivé jedince v počáteční populaci, které nazývá rodiče a používá je k vytvoření další generace nazvané potomci. Typické je, že algoritmus pravděpodobněji vybere rodiče, kteří mají lepší fitness hodnotu. Jak genetic algorithm pracuje: 1 algoritmus začíná vytvořením náhodné počáteční populace 2 algoritmus vytváří sekvence nových populací nebo generací. Každý krok algoritmů používá individuální aktuální generaci k vytvoření další generaci. 3 algoritmus se ukončí když jedno ze stop kriterii je splněno. 60
Creating the next Generation reprodukce jedinci jsou kopírováni do nové populace podle výše své hodnotící funkce (jedinci s lepšími vlastnostmi s větší pravděpodobností) křížení ze dvou jedinců vzniknou dva noví, každý má část genů od prvního jedince a část od druhého mutace náhodná změna jednoho genu některého jedince Reprodukce Křížení Mutace Ukončovací podmínky algoritmu Genetický algoritmus používá následujících 5 podmínek přerušení nebo zastavení. Generations algoritmus zastaví, když počet generací dosáhne platné hodnoty generace Time limit algoritmus zastaví po uběhnutí doby v sekundách odpovídající časovému limitu Fitness limit algoritmus se zastaví když hodnota fitness function pro nejlepší bod v současné populaci je menší než nebo rovný fitness limitu Stall generations - algoritmus se zastaví jestli není tam žádné zlepšení v účelové funkci pro následné pořadí generací z délky zastavení (přetížení)generace Stall time limit - algoritmus se zastaví když nedojde ke zlepšení v účelové funkci v průběhu intervalu času ve vteřině rovnající se stall time limit Algoritmus se zastaví jakmile jedna z těchto pěti podmínek splněna. Vy můžete specifikovat hodnotu daného kritéria ve stoing kriteria volby v genetic algorithm tool Volby stall time limit a time limit zabraňují tomu, aby algoritmu běžel přiliž dlouho. 61
Když algoritmus zastaví kvůli jedné z těchto podmínek, můžete zlepšit výsledky zvyšováním hodnoty stall time limit a time limit Zastavení a přerušení algoritmu Pokud algoritmus běží můžeme zmáčknutím tlačítko pause, které dočasně přeruší algoritmus. Po stlačení tlačítka resume bude algoritmus dále pokračovat. Zmačknutí tlačítka stop se algoritmus zastaví a v okně status and results se zobrazí hodnota fitness funkce, z nejlepšího bodu v současné generaci v okamžiku zmáčknutí stop. Nastavení stop kriteria Běh genetického algoritmu můžeme přerušit manuálně zmáčknutím stop, nebo využít přerušovací kritéria. Genetický algoritmus používá pět kriterií uvedených v okně Stoing criteria. Algoritmus se zastaví když některá z následujících podmínek je splněna. Generation - algoritmus dosáhne předepsaný počet generací Time algoritmus běží po specifikovanou dobu, doba běhu je zadávána v sekundách Finess limit nejlepší finess hodnota v aktuální generaci je nižší nebo rovna požadované hodnotě Stall generation - algoritmus počítá specifikovaný počet generací bez zlepšením ve fitness function Stall time limit algoritmus běží po specifikované množství času v sekundách bez zlepšením ve fitness function Jestliže chcete, aby genetický algoritmus běžel dokud nezmáčknete pause nebo stop měli byste změnit standardně nastavené hodnoty těchto nastavení jako následující: Set Generation to inf Set Time to inf Set Fitness limit to inf Set Stall generation to inf Set Stall time limit to inf 62
Zobrazení grafů Panel plots, který je zobrazen v následujícím obrázku umožňuje zobrazit různé vykreslení výsledků genetického algoritmu. Pomocí zatrhavácího čtverečku vykreslíme požadované zobrazení. Pro příklad vybereme Best fitness a Best individua. 63
Horní graf zobrazuje nejlepší a střední fitness hodnotu v každé generaci. Spodní graf zobrazuje souřadnice bodů s nejlepší fines hodnotou v aktuální generaci. Příklad : Vytvoření speciálního grafu dané funkce Když žádný z grafů funkce není v nástrojové sadě vhodný pro výstup, který potřebujete k vykreslení můžete si napsat vlastní uživatelský graf funkce, který genetický algoritmus zavolá v každé generaci k vytvoření grafu. Tento příklad ukazuje jak vytvořit graf funkce zobrazující změny v nejlepší fitness hodnotě z předchozí generace k nynější generaci. Vytvoření grafu funkce Napište tento následující kód v matlab editoru do M-filu. function state = gaplotchange(options, state, flag) %GAPLOTCHANGE Plots the change in the best score from the previous generation. persistent last_best %Best score in the previous generation if (strcmp(flag, init ))% Set up the plot set (gca, xlim,[1, options.generations], Yscale,ĺog); hold on; xlabel Generation title ( Change in Best Fitness Value ) end best = min(state.score); % Best score in the current generation if state.generation = = 0% Set last_best to best. else change = last_best best; % Change in best score last_best = best; plot (state.gemeration, change,.r ); title ([ Change in Best Fitness Value ]) end uložte M-file jako gaplotchange.m v adresáři v cestě matlabu. Použití grafu funkce K použití uživatelského grafu funkce, vyberte Custom v Plots panelu a vložte @gaplotchange v poli napravo. K porovnání uživatelského grafu s nejlepší vykreslenou fitness hodnotou, vyberte Best fitness. Na následujících obrázcích jsou uvedeny výsledné grafy. 64
Všimněte si, že pro měřítko v y ose ve spodním uživatelském grafu je logaritmické, graf pouze ukazuje změny které jsou větší než 0. Logaritmické měřítko umožňuje vidět malé změny ve fines funkci, které horní graf neumožňuje odhalit. Příklad: nastavení počátečního rozsahu Standardně Genetic Algorithm Tool vytváří náhodnou populaci, ale můžete specifikovat rozsah řízení počáteční populace a to v panelu nastavení - population, poli Initial range. V následujícím příkladu ukážeme jak počáteční rozsah ovlivňuje výkon genetických algoritmů. Příklad používá Rastrigins Function. Minimální hodnota funkce je 0. Která nastane v počátku. Pro běh příkladu vytvořte následující nastavení v Genetic Algorithm Tool Nastavte Fitness function @Rastriginsfcn. Nastavte Number of variable na 2 Vyberte Best fitness v panelu Plots Vyberte Range v panelu Plots Nastavte Initial range na [1;1.1] Zmačkneme start, a genetický algoritmus vrátí nejlepší hodnotu fitnes funkce přibližně 2 a zobrazí graf na následujícím obrázku 65
Horní graf nejlepších fines hodnota každé generace ukazuje malý postup ve snižování fitness function nižší graf ukazuje průměrnou vzdálenost mezi jednotlivci v každé generaci, což je dobrý rozsah rozmanitosti populace. Pro toto nastavení počátečního rozsahu je příliš málo rozmanitosti pro algoritmus k vytvoření pokroku Dále zkuste nastavit initial range na (1;100) a spusťte algoritmus. Genetický algoritmus navrátí nejlepší fitness hodnotu přibližně 3,9 a zobrazí nasledující grafy 66
nyní genetický algoritmus vytvořil pokrok, ale protože průměrná vzdálenost mezi jedinci je velmi velká tak nejlepší jedinci jsou daleko z optimálního řešení. Nyní genetický algoritmus vytváří pokrok, ale protože průměrná vzdálenost mezi jednotlivci je tak velká, nejlepší jednotlivci jsou daleko z optimálního řešení. Nakonec nastavte initial range 1,2 a spusťte genetický algoritmus. To vrátí nejlepší fitness hodnotu přibližně 0,12 a zobrazí následující grafy. 67
Rozmanitost v tomto případě je vhodnější k tomuto problému tak že genetický algoritmus navrací o mnoho lepší výsledek než v předchozích dvou případech Nastavení velikosti populace Pole Size v nastavení Population určuje velikost populace každé generace. Zvyšovaní velikosti populace umožňuje genetickému algoritmu hledat více bodů a tím získat lepší výsledky. Příklad: globální proti lokálnímu minimu někdy cílem optimalizace je najít globální minimu nebo maximum funkce bod kde funkční hodnota je menší nebo větší než nějaký další bod v hledaném prostoru. Nicméně, optimalizační algoritmus někdy navrací lokální minimum bod kde funkční hodnota je nižší než nejbližší bod, ale možnost větší než vzdálenost bodu ve hledaném prostoru. Genetický algoritmus může někdy překonat nedostatek správným nastavením. Jako příklad použijeme následující funkce 68
Následující obrázek zobrazuje graf funkce Lokální minimum Funkce má dvě lokální minima první x=0 kde funkční hodnota = -1 a další x=21 funkční hodnota -1-1/e. Od druhé hodnoty je nižší, globální minimum nastane pro x=21. Průběh genetického algoritmu v příkladu 1.zkopírujte a vložte následující kód do nového M-filu v matlab editoru function y = two_min(x) if x<20 y = -exp(-(x/20).^2); else y = -exp(-1)+(x-20)*(x-22); end 2. uložte soubor jako two_min.m v adresáři matlabu 3. v genetic algorithm tool nastavte fitness function @two_min. nastavte numer of variables na 1 zmačkněte start genetický algoritmus navrátí bod velmi blízký lokálního minima x = 0 69
Následující uživatelský graf ukáže proč algoritmus našel lokální minimum dříve než globální minimum. Graf ukazuje rozsah jednotlivců v každé generaci a nejlepší jednotlivce. Všimněte si, že všichni jednotlivci jsou mezi -2 a 2,5. Pokud tento rozsah je větší než standardní initial range z 0;1 očekávaná mutace není dostatečně rozsáhlá k prozkoumaní bodů blízko globálního minima x=21 Jednou cestou k vytvoření genetického algoritmu prozkoumávající širší rozsah bodů je zvyšující rozmanitost populace. je zvyšování inital range. Initial range nemusí zahrnovat bod x=21, ale to musí být dostatečně rozsáhlejší tak že algoritmus zobrazí jednotlivce blízko x=21, nastav initial range na 0;15 jak je ukázáno na obr 70
Zmačkni start. genetic algorithm navrátí bod velmi blízký 21 Teď graf ukazuje mnohem širší rozsah jednotlivců. Při druhé generaci tam jsou jednotlivci větší než 21 a u 12 generace algoritmus nalezne nejlepšího jednotlivce, který je přibližně rovny 21 71
Požívání smíšených funkcí hybrid Smíšená funkce je optimalizační funkcí, která běží po ukončení genetického algoritmu aby zlepšila hodnotu fitness funkce. Smíšená funkce používá konečný bod z genetických algoritmů jako svůj počáteční bod. Můžeme specifikovat smíšenou funkci v nastavení hybrid function. Tento příklad používá funkci fminunc, neomezena minimalizace funkce v optimization toolbox.. V příklad běží nejprve genetický algoritmus aby našel nejbližší bod k optimálnímu bodu a po té použije tento bod jako počáteční bod pro fminunc Příklad : nalezení minima rosenbrocks function definovanou f(x 1,x 2 ) = 100(x 2 - x 1 2 ) 2 + (1 x 1 ) 2 Minimum v (1,1) 72
Toolbox připraví m-file dejong2fcn.m který vypočítat funkci. Abyste viděli demo tohoto příkladu zadejte: hybriddemo K prozkoumaní příkladu nejprve zadejte genetic algorithm tool k otevření genetic algorithm tool a zadejte nasedající nastavení Nastavení fitness function na @ dejong2fcn Numer of variables 2 Population size 10 Před přidáním hybridní funkce zkuste běh genetic algorithm sám zmačkněte start. genetic algorithm zobrazí následující výsledek ve status and results okne. Konečný bod je blízký pravému minimu 1,1 můžeme zlepšit tento výsledek nastavením hybrid function na fminunc v nastavení hybrid function. Nastavení Hybrid function Když genetický algoritmus skončí funkce fminunc vezme konečný bod z genetického algoritmu a jako jeho počáteční bod a navrátí více přesný výsledek, jak můžeme vidět na status a results okně. 73
Pastavení maximální počtu generací Nastavení generací je ve stoing kriteria určuje maximální počet generací, pro který genetického algoritmu poběží. Příklad: Pro příklad změň nastavení genetic algorithm tool následovně Fitness function @rastriginsfcn Number of variables 10 Best fitness v plots Generation inf Stall generation inf Stall time inf Genetický algoritmus necháme běžet pro přibližně 300 generací a zmačkneme stop. V následujícím obrázku je výsledek grafu best fitness po 300 generacích. Genetický algoritmus se zastavil 74
Všimněte si, že algoritmus se zastaví přibližně při 170 generace, tak že po 170 generaci není patrné žádné bezprostřední zlepšení. Jestliže nastavíte stall generation aby jeho standardní hodnotu byla 50 algoritmus může skončit přibližně 230 generací. Když genetický algoritmus zastaví opakování s aktuálním nastavením pro generaci můžeme zkoušet zvyšovat oba generation a stall generation k zlepšení vašeho výsledku. Nicméně změna jiných nastavení může být více efektivní. Vektorizování fitness funkce Genetický algoritmus obvykle běží rychleji když zvektorizujeme fines funkci. To znamená, že genetický algoritmus pouze volá fitness funkci jednou, ale očekává že fitness funkce spočítá fitness pro všechny jedince v současné populaci najednou. K vektorizaci fines funkce, Napište m-file tak, že počítá funkci tak, že přijímá matici s libovolně mnoho řádky odpovídající jedinci v populaci Pro příklad vektorizujeme funkci f(x 1,x 2 ) = x 1 2 2x 1 x 2 + 6x 1 + x 2 2 6x 2 Napíšeme m-file používající následující kód z = x ( :,1 ).^2 2*x ( :,1 ).*x ( :,2 ) + 6*x ( :,1 ) + x ( :,2 ).^2 6*x ( :,2 ); Dvojtečka v první údaj u x označuje všechny řádky x tak že x(:,1)je vektor.^ a.* operátor vykonává prvek po prvku operace na vektoru Nastavení možnosti volby vektorizace na On Population Options Nastavení Population vám umožňuje specifikovat parametry populace, které genetické algoritmy používají. Populační model specifikuje datový typ ze vstupu do fitness funkce. Můžete nastavit populační model tak, aby byl jeden z následující. Double Vector Bit string Custom Když použijete uživatelský populační model, musíte napsat vlastní tvorbu, mutace a přechodovou funkci, která přijme vstupy z tohoto populačního modelu a blíže určit tuto funkci v následujících oblastech Creation function Mutation function Crossover function Velikost populace: Specifikuje kolik jedinců je v každé generaci. U rozsáhlých populací, genetický algoritmus hledá prostor pro řešení důkladněji, proto snižuje šanci, že algoritmus bude navracet lokální minimum, jenž není globální minimum. Nicméně rozsáhlá populace také způsobuje, že algoritmus běží pomaleji. Fitness Scaling Options Fitness Scaling přeměňuje nezpracované fitness výsledky, které jsou vraceny fitness funkcí na hodnoty v rozsahu, který je vhodný pro výběrovou funkci. Můžete blíže určit nastavení pro fitness scaling v okně Fitness Scaling 75
Scaling function blíže určuje funkci, která vykonává změnu měřítka. Nastavení jsou Rank standardní fitness změna měřítka funkce Proporcionální - proporcionální měřítko způsobuje měřítko hodnotu z individuální proporcionální k jeho základnímu fitness množství Top - vrchol měřítka váhy vrchol individuální rovná se. Shift linear - změna lineárního měřítka váhy základní množství Standardní hodnota je 2. Selection Options Nastavení Selection blíže určuje jak genetický algoritmus vybírá rodiče pro další generaci. Můžete blíže určit funkci, kterou algoritmus používá v poli selection function v nabídkovém okně selection options. Nastavení jsou: Stochastic uniform Remainder Uniform Roulette Tournament Reproduction Options nastavení Reproduction blíže určuje jak GA vytváří potomky pro příští generaci. Elite count - specifikuje počet z jednotlivců jenž jsou zaručený k přežití další generací. Hodnoty elite count jsou kladná celá čísla menší než nebo rovno velikosti populace. Standardní hodnota je 2 Crossover fraction - blíže určuje část z příští generace jiný než nejlepší děti jenž jsou vytvořený vyměnou genu mezi páry chromozomů. Nastavení crossover fraction tak, aby byla částí mezi 0 a 1 buď zapsáním části do textového okénka nebo posunem kurzoru. Standardní hodnota je nastavena na hodnotu 0,8. Mutation options Nastavení Mutation blíže specifikuje jak genetický algoritmus vytváří malé náhodné změny v jednotlivcích v populaci k vytvoření mutace potomků. Mutace poskytne genetickou rozmanitost a umožní genetickým algoritmům vyhledat široký prostor. Můžete blíže určit mutaci funkce v mutation function poli v mutation optiona oblasti. Můžete vybírat z následujících funkcí. Gausian standardní mutace funkce gaussian přidává náhodný počet vzatý z gaussian rozdělení s mínit(znamenat) 0 až kážé vstup z rodičovského vektoru. Změna tohoto rozdělení je přiřazena parametry scale a hrink, které jsou zobrazeny když vybereme gaussian a pomocí initial range nastavíme v population nastavení Scale parametr přiřazuje rozdíl v první generaci. Když nastavíme initial range 2-1 vektor v počáteční rozdíl je stejný v celé souřadnici z rodičovského vektoru je dáno scale (v(i,2)- v(i,1)) Shrink parametr ovládá jak rozdíl zmenšovat se ačkoliv(jak) generace jede. Když nastavíte initial range2-1 vektor rozdíl v kth generaci vark je stejný v celém souřadnici z rodičovského vektoru a je dáván rekurzivním vzorcem Když nastavíme initial range vektor s 2 řádky a numer of variables sloupce rozdíl v souřadnici i z rodičovského vektoru v kth generaci var ik je dáno rekurzivním vzorcem Když nastavíte hrink na 1 algoritmus zmenšovat se rozdíl v každé souřadnici lineárně dokud dosáhne 0 v poslední generaci je dosažený. Negativní hodnota hrink způsobuje změnu růstu. Standardní hodnota v scale a shrink je 0,5-0,75 76
Uniform Rovnoměrná mutace je dvou krokový proces. Zaprvé algoritmus vybere část z vektoru Custom Crossover options Nastavení Crossover blíže určuje jak genetický algoritmus kombinuje dva jedince nebo rodiče, aby zformovat výměna genů mezi páry chromozomů potomeků pro příští generace. Crossover function specifikuje funkci, která vykonává výměnu genů mezi páry chromozomů. Můžeme vybrat z následujících funkcí. Scattered Single point Two point Intermediate Heuristik Migration options Nastavení Migration blíže určuje jak jedinci se pohybují mezi podpopulacemi. Migrace nastane když nastavíte population size tak aby vektor délky byl větší než 1. Když migrace nastane, nejlepší jedinci z jedné podpopulace nahradí nejhorší jedince v další podpopulaci. Jedinci, kteří migrují z jedné podpopulace k další jsou kopírovány. Nejsou odstraněny ze zdrojové podpopulace. Můžete ovládat jak migrace nastane pomocí následujících 3 polí v migration option Direction Interval Fraction Hybrid function option Hybrid function je další minimalizační funkce jenž běží po ukončení genetického algoritmu. Můžete blíže určit hybridní funkci v nastavení hybrid function options. Z výběru jsou [] - No hybrid function Fminsearch Patternsearch Fminuc Stoing criteria options Nastavení Stoing criteria určují jaké příčiny algoritmus ukončí. Můžeme blíže určit následující nastavení Generations Time limit Fitness limit Stall generation Stall time Output function options Nastavení Output function navrací výstup z genetického algoritmu do příkazové řádky v každé generaci. History to new Windows (@agaoutputgen)zobrazí historii bodů vypočteného algoritmem v novém okně z každého mnohonásobného intervalového opakování. Custom vám umožňuje napsat vlastní výstupní funkci. K bližšímu určení výstupní funkce se 77
používá genetic algoritm tool. Výběr Cystom function Zapsáním @myfun v textovém okně kde myfun je jméno vaše funkce. Struktura výstupní funkce Výstupní funkce má následující volanou skladbu. Funkce má nasledující vstupní argumenty Options - nastavení struktury State struktura obsahující informace o aktuální generaci Flag řetězec ukazující aktuální stav z algoritmu jako nasledné - init počáteční stupeň - iter algoritmus činnosti - done algoritmus ukončení interval nastavení intervalového argumentu výstupní funkce navrací následující argumenty state struktura obsahující informace o současné generaci options možnost nastavení struktury upravené výstupní funkcí tento argument je nepovinný optchanged znamení ukazující změny nastavení Display to command Window options Level of display blíže určuje jak moc informace je zobrazena na příkazové řádce zatímco genetický algoritmus běží. Dosažitelná nastavení jsou Off pouze konečná odpověď je zobrazena Intrative (iter) informace je zobrazena z každé iterace Diagnose informace je zobrazena z každé iterace v přidání nastavení jenž jsou změněny z standardní jsou zaznamenány Final výsledek z genetických algoritmu (úspěšný nebo neúspěšný ) důvod pro zastavení a konečný bod. Obojí iterative a diagnose zobrazují následující informace Generation počet generace f-count narůstající počet fitness funkce vyhodnocení Best f(x) nejlepší hodnota fitnes funkce Mean f(x) střední hodnota fitnes funkce Stall generations počet generací od poslední zlepšení fitness function standardní hodnota level of display je off v Genetic algorithm toolbox final v nastavení struktury vytvaření použivaní gaoptimset Vektorize option Nastavení Vektorize blíže určuje zda výpočet fitness funkce je vektor. Když nastavení fitness function is vektorized na off, genetický algoritmus počítá hodnoty fitness funkce nové generace v cyklu. Když nastavíme fitness function is vectorized na on algoritmus počítá hodnoty fitness funkce nové generace s jedním voláním fitness funkce, která je rychlejší než počítaní hodnot v cyklu. Nicméně použití tohoto nastavení vaše fitness funkce musí být schopna akceptovat vstup m 78
7 DATOVÉ SKLADY ZDROJ ZNALOSTÍ A INFORMACÍ Oblasti Business Intelligence (BI) a Data Warehousing (DW) jsou jedním z nejrychleji se rozvíjejících odvětví softwarového průmyslu, jak v zahraničí, tak v podmínkách českého a slovenského trhu. Je to dáno především významnými změnami v podnikání v posledních letech, které pravděpodobně nejvýstižněji popisuje citát Petera Druckera: Znalosti a informace jsou dnes jediným smysluplným zdrojem. Tradiční výrobní faktory půda, práce a kapitál nezmizely, ale staly se druhořadými. Hlavním producentem bohatství jsou informace a znalosti. Obsažná, přesná a včas dodaná informace se stává v rukou manažera tou nejdůležitější zbraní v boji s konkurencí na současném, velmi liberalizovaném trhu. Změna v podmínkách podnikání a vysoce konkurenční prostředí mají bezprostřední vliv na vývoj informačních systémů a služeb. Ještě před několika lety byl za nejdůležitější považován systematický sběr a uchovávání informací pro zabezpečení základních provozních funkcí podniku, jako je účetnictví nebo výroba (typickými představiteli jsou tradiční systémy ERP). Toto období se však stává již minulostí. Není totiž podstatné, kolik gigabytů dat uchovává společnost na svých serverech, ale jak je schopna z tohoto ohromného objemu získat smysluplnou informaci, která je použitelná pro řízení. Proto se do popředí zájmu dostávají informační systémy, které umožňují společnostem data z primárních systémů (např. již citovaných ERP) zpracovat (transformovat, validovat a agregovat) do podoby, se kterou může pohodlně pracovat koncový uživatel manažer nebo analytik. Touto problematikou se zabývají informační systémy, které se řadí do oblasti Data Warehousing a Business Intelligence. 7.1 Proč investovat do vybudování datových skladů? Odpověď na tuto otázku mohou naznačit následují situace, které se vyskytují ve většině společností. Problémem dnešního manažera často není nedostatek dat, ale jejich nadbytek. Gigabyty dat bez rozumně zpracovaného výstupu jsou pro podporu rozhodovacího procesu v podstatě nepoužitelné. Data z různých oblastí jsou umístěna v odlišných informačních systémech. Pro analýzu je však třeba mít data pohromadě a navzájem je porovnávat. Například pro to, aby bylo možné zjistit rentabilitu jednotlivých prodávaných výrobků, je třeba data o prodeji porovnávat s náklady na výrobu a obchodní činnost (účetnictví). Nic nenaruší strategickou poradu managementu lépe než dvě a více verzí výsledků totožných rozborů pocházejících z různých oddělení společnosti. Kromě spolehlivosti samotných dat je otázkou, zda všichni použili pro výpočet stejnou definici. Pro kvalifikované rozhodnutí je třeba data důkladně analyzovat. Na to všem jedna sestava nestačí, protože při pohledu na sadu výsledků se objevuje množství otázek, např. jak přispěly jednotlivé výrobky do celkového objemu prodeje, zda je nejprodávanější výrobek zároveň nejvýnosnější, jak se vyvíjel stav zásob v posledních šesti měsících a další. Data jsou analyzována v uzavřeném cyklu: získání a zobrazení informace myšlenkový pochod objevení souvislostí a zpět Dobu tohoto procesu je nutné měřit v sekundách či minutách. Nelze čekat dny a týdny, než v oddělení informatiky vznikne nová sestava. Že ne všechna data ve společnosti jsou v dobrém stavu, ví každý, nebo to alespoň tuší. Jaká je jejich skutečná kvalita a jak mnoho na ně lze spoléhat v kritických chvílích rozhodování, obvykle neví nikdo. Odpovědí na popsané situace je implementace celopodnikového datového skladu (DS). Ze 79
všech známých definic pojmu DS je nejbližší šestibodová definice Ralpha Kimballa, celosvětově uznávaného odborníka na problematiku datových skladů, jež je uvedena v tab. 1. Tab. 1. Definice datového skladu podle R. Kimballa 1. Odstavec definice DS poskytuje uživatelům přístup k datům společnosti 2. DS je konzistentní 3. 4. 5. 6. data v DS mohou být filtrována a kom-binována podle všech možných měřítek v podniku nebo organizaci (slice and dice) projekt datového skladu nezahrnuje jen data v databázi, ale i nástroje pro jejich dotazování, analýzu a prezentaci DS je místo, kde se publikují kvalitní a zkontrolovaná data kvalita DS je motivací pro reinženýrink firemních procesů (BPR) Poznámka na přístup lze pohlížet z různých úhlů pohledu: - uživatelé musí mít přístup k DS ze svých osobních počítačů, - přístup musí být kdykoli realizovatelný, spolehlivý a výkonný, - přístup musí být pro uživatele jednoduchý a uživatelsky příjemný na konzistenci lze opět nazírat více než jedním způsobem: - dva uživatelé dotazující se na tutéž veličinu za stejných podmínek musí dostat shodné výsledky, - DS obsahuje jedinou definici dané veličiny (např. prodej), která je z DS zjistitelná a platná pro všechny uživatele, - data v DS jsou validovaná a stoprocentně čistá tento požadavek vede k zavedení multidimenzionálního modelování; ukazatele (metriky, veličiny) jsou sledovány podle podnikových měřítek (dimenzí); postup slice and dice říká, že je možné vždy sestavit dotaz, který je formulován tak, že libovolná dimenze nebo kombinace dimenzí budou umístěny na řádky pomyslné tabulky, libovolná dimenze nebo kombinace dimenzí do sloupců a pro dimenze, které se pohledu neúčastní, lze aplikovat filtr výsledkem projektu DS nejsou pouze technologie (hardware, RDBMS apod.) a data uložená v databázi, ale také aplikace a nástroje, které k datům přistupují a jsou schopny je prezentovat v uživatelsky příjemné podobě; aplikace mohou přímo přistupovat k relační databázi DS nebo mohou využívat data předem zpracovaná v multidimenzionálních databázích OLAP osoby zodpovědné za plnění databáze DS umožní používání pouze takových dat, která jsou zkontrolovaná a kompletní; neúplná nebo chybná data nejsou povolena k publikování DS nemůže opravovat nekvalitní data; data v DBDS jsou uspořádána tak, aby byla identifikovatelná jejich chyba; uživatel DS může na základě toho, co vidí, iniciovat změnu procesů pořizování dat tak, aby se dosáhlo menší chyb Z technického hlediska je projekt datového skladu považován za tvorbu informačního systému, který zahrnuje více technologií. Mezi ně jsou řazeny: databáze DS typicky relační databáze, nástroje ETL (Extraction, Transformation, Loading) datové pumpy pro přenos dat do DS, datová tržiště, jednotné úložiště metadat jednotlivých komponent datového skladu (metadata repository), nástroje OLAP, aplikace pro koncové uživatele (MIS), nástroje pro analýzu, dotazování a tvorbu zpráv. 80
V posledních několika letech význam datového skladu značně přerůstá jeho původní určení tedy datová základna pro MIS, tvorbu zpráv a analýz. DS se nyní stává srdcem pro moderní disciplíny informatiky, jako jsou Data Minning (DM, získávání informací z DS), Customer Relation Management (CRM, řízení podle požadavků zákazníků), Suly Chain Management (SCM, řízení dodavatelských řetězců) nebo e-business. Všechny aplikace tohoto typu používají DS jako datovou základnu a umožňují společnostem navázat užší a intenzivnější vztah se zákazníky. Ze zkušeností při budování DS vyplývá, že je nezbytné (pozn. většinou) použít nejen celou řadu technologií od různých dodavatelů, ale především uplatnit správný metodický postup. Tato zkušenost je zcela v souladu s přístupem R. Kimballa. Říká se, že data jsou největším pokladem každé firmy. Na jejich podkladě se management rozhoduje o tom, zda pokračovat v nastolené vizi a strategii firmy konkrétní operativou a spustit produktové či marketingové kampaně, nebo zda ji přehodnotit a definovat novou. Samotná data však nestačí. Management při svém rozhodování potřebuje znát jejich obsah a význam, dokázat je správně analyzovat a především interpretovat. Firmy musí umět dolovat data ze všech svých systémů, musí znát své zákazníky, chápat a utvářet jejich chování. Jaké postupy se přitom používají, odkud se čerpají data a jakými metodami se zpracovávají a analyzují, v jakých průmyslových segmentech jsou jednotlivé metody analýzy dat nejefektivnější, a tudíž se zde prosadily, jaké jsou typické data miningové projekty a jaká je návratnost investic do nich vložených -- to vše vysvětluje tato mladá vědecká disciplína v oblasti informačních technologií. Téměř každá organizace produkuje velké množství dat, většinou jako důsledek různých procesů jako je obsluha zákazníků či účetní systém. Většinou se tato data uchovávají v primárních systémech, které jsou optimalizovány na rychlost vyřízení různých transakcí a uchovávají pouze aktuální stav. Pro tyto IT systémy je typické normalizované datové schéma, které umožňuje jednoduchým způsobem provádět změny údajů. Na druhou stranu tyto systémy nejsou připraveny na zodpovídání většího množství analytických dotazů, které typicky vyžadují spojení mnoha tabulek pro nalezení všech požadovaných údajů včetně historie. Podle své definice je data mining netriviální proces zjišťování platných, neznámých, potenciálně užitečných a snadno pochopitelných znalostí z dat. Začíná se o něm hovořit až v osmdesátých letech 20. století a jeho výraznější rozvoj nastal v letech devadesátých. Na konci 90. let minulého století můžeme hovořit o exponenciálním růstu trhu poptávajícím data mining a boomu této dosud čistě akademické vědní disciplíny. V současnosti se největší pozornost věnuje využívání poznatků data miningu v praxi. 7.1.1 Data mining v kontextu Business Intelligence Analytické potřeby v organizacích rostou, ať již pro podporu strategického rozhodování managementu (manažerský informační systém) či operativního rozhodování pracovníků marketingu, call centra či riziko managementu. Tato potřeba vede k uchovávání dat včetně historie v datovém skladu, který se vyznačuje denormalizovaným datovým schématem, kde se stejné informace uchovávají na několika různých místech. To umožňuje rychlé odpovědi na komplikované analytické dotazy. Navíc při nahrávání dat z primárních systémů do datového skladu dochází k čištění dat a odstraňování chyb v datech. Každá skupina uživatelů má typicky v datovém skladu specializovaný data mart, v němž jsou připraveny pouze a právě informace, které tito uživatelé potřebují. Nad těmito data marty jsou používány nástroje OLAP, reporty a další možností je právě dolování dat. 81
V typické architektuře datového skladu lze ještě nalézt Operational Data Store (ODS), která slouží jako datová základna aktuálních dat bez historie pro kontaktní CRM, a staging oblast neboli nultou vrstvu datového skladu, která je čistě technická a slouží k efektivnímu přenosu dat do datového skladu. Architektura datového skladu včetně data miningu. 7.1.2 Co je to data mining? Pojem data mining neboli dolování v datech různí autoři definují různě. Jednou z nejjednodušších a nejkratších může být definice: Data mining je hledání hodnotných informací ve velkých objemech dat. O něco složitěji definuje pojem Fayyad: Data mining je netriviální proces zjišťování platných, neznámých, potenciálně užitečných a snadno pochopitelných závislostí v datech. Přestože vystihuje nosnou myšlenku pojmu data mining, tak osoba neznalá problematiky si pravděpodobně jen těžko dokáže představit, co se během této činnosti děje, popřípadě proč vlastně tato nová vědní disciplína vznikla, když přitom statistika dělá to samé. Data mining není žádná aplikace nebo nástroj. Definic můžeme najít více, ale většinou se shodují v tom, že jde o netriviální proces zjišťování platných, neznámých (skrytých), potenciálně užitečných a snadno pochopitelných závislostí v datech. Ve většině případů ve velkém objemu dat. Metody data miningu jsou založeny na statistice, nových poznatcích z umělé inteligence či strojového učení. Jedná se o metody netriviální, které však mají společné to, že se snaží zjištěné výsledky prezentovat formou co možná nejpřístupnější koncovému uživateli. Jedná se například o shluky dat s podobnými charakteristikami, rozhodovací stromy nebo o jednoduchá pravidla. 82
7.1.3 Proč Data mining vznikl? Řada firem během posledních desetiletí či let vytvořila a nyní spravuje rozsáhlé informační databáze a datové sklady. Velikosti, kterých dosahují, byly ještě před pár lety nepředstavitelné. Často tato data nemohou být analyzována pomocí standardních statistických metod, protože je v nich mnoho chybějících hodnot nebo protože hodnoty jsou v kvalitativních jednotkách. V mnoha případech jsou informace obsažené v databázích znehodnocené nebo nepoužitelné z důvodu nemožnosti snadného přístupu k nim a jejich snadné analýzy. Některé databáze se rozrostly do takových rozměrů, že ani systémový administrátor vždy neví, jaká data databáze obsahují či jak relevantní jsou data pro zodpovězení aktuální otázky. Pro organizaci by bylo přínosné, pokud by dokázala z těchto rozsáhlých databází vytěžit důležité informace nebo struktury chování. Tyto skutečnosti vedly k tomu, že byl data mining, tak jak jej dnes chápeme, vytvořen. 7.1.4 Co data mining umí a k čemu se dá použít? Různé metody data miningu mají společný cíl. Najít nějaké závislosti nebo vzory v datech. Tyto závislosti se pak typicky používají pro predikci, kdy předpokládáme, že pokud se data v minulosti chovala podle nějakého vzoru, budou se podle tohoto vzoru chovat i nadále. Předpovídat lze jak spojité hodnoty (např.: cena akcií), tak hodnoty diskrétní. Typickým příkladem je rozhodování banky, zda přidělit či nepřidělit úvěr na základě dat o novém žadateli (věk, příjem, ). Data mining se používá často ve spojení s CRM. Cenná data o uživatelích lze vhodným způsobem analyzovat a například: Klasifikací zákazníků lze vytipovat zákazníky, kteří zareagují na konkrétní kampaň, a poslat např. katalog pouze jim, a tím snížit náklady na kampaň. Shlukovou analýzou zjistit skupiny zákazníků, kteří jsou vysoce ziskoví, a zaměřit se na získání zákazníků s podobným profilem. Dalším typickým příkladem použití data miningu je analýza nákupního košíku, ať již v retailu, nebo v nějakém e-shopu, kdy na základě zjištění, že 70% uživatelů, kteří si koupili pivo, si koupilo i tyčinky, lze optimalizovat rozložení zboží v regálech či nabízet odpovídající zboží na www. Pro případy, kdy jakékoliv pokusy o resuscitaci dat selžou, používáme unikátní metodu obnovy dat nezávislou na použitém operačním či souborovém systému. Pomocí Data Miningu lze získat data i z médií s velkou mírou fyzikálního poškození či s například zcela smazaným souborovým systémem. Jediným předpokladem úspěšného výsledku je tedy obnovitelnost alespoň části dat na hardwarové úrovni. 7.1.5 Jak Data Mining funguje? Data Mining je založen na znalosti vnitřní struktury typu souboru, který hledáme. Většina používaných formátů obsahuje definovatelné souvztažnosti, které více či méně spolehlivě informují o typu souboru a někdy i o dalších vlastnostech, jako např. délka souboru, datum vytvoření / uložení, atd. Při aplikaci metody Data Mining pak zkoumáme postupně každý sektor na disku a snažíme se najít shodu s částí struktury, používané u hledaného typu dokumentu. 83
Výhodou této metody je její schopnost získat data požadovaného typu i v případě, kdy o nich není v souborovém systému žádná informace. Nevýhodou naopak je nemožnost obnovit data v původní struktuře a s původními názvy. Zachráněné soubory jsou pak umístěny do složek podle typů a pojmenovány sekvenčním číslováním. Někdy je však možné informace, získané "zevnitř" obnoveného souboru, využít ke smysluplnějšímu pojmenování. Například při obnově všech obrázků *.JPG je možné jejich název seskládat z libovolných tzv. metadat (datum pořízení, typ fotoaparátu atp.). Důležitým specifikem Data Miningu je rovněž schopnost obnovit pouze data nefragmentovaná, tedy ta, jež jsou na médiu uložena vcelku Data miningový projekt je proces, který vyžaduje značné množství zdrojů. Od lidských, přes hmotné a datové až po softwarové. Společným jmenovatelem jim jsou peněžní prostředky. Jedním ze způsobů, jak šetřit tyto prostředky, je provádět projekty standardizovaným postupem. Za tímto účelem byly vytvořeny různé metodologie popisující efektivní postup při projektech. Zkratka CRISP-DM znamená CRoss-Industry Standard Proces for Data Mining. CRISP je souhrnná data miningová metodologie. Její model nabízí návody krok po kroku, úkoly a cíle pro každou část celého procesu. CRISP-DM umožňuje provádět rozsáhlé data miningové projekty rychleji, efektivněji a méně nákladně prostřednictví osvědčených postupů. Model pomáhá vyhnout se běžných chybám. Vývoj metodologie CRISP-DM byl zahájen jako projekt Evropské komise definující model standardního postupu při vytváření data miningových projektů. Tato metodologie je majetkem partnerů CRISP-DM konsorcia: NCR Systems Engineering Copenhagen (USA a Dánsko), DaimlerChrysler AG (Německo), SPSS Inc. (USA) and OHRA Verzekeringen en Bank Groep B.V (Holandsko) 7.2 Metodologie CRISP-DM Metodologie CRISP-DM rozděluje celý proces data miningového projektu do šesti základních etap, v rámci nichž dále rozlišuje další kroky. Těmito etapami jsou: 1. Definování cílů 2. Porozumění datům 3. Příprava dat 4. Modelování 5. Hodnocení výsledků 6. Implementace vytvořeného modelu 7.2.1 Definice problému/cílů: Nejprve je třeba definovat oblast, která je pro management zajímavá a je řešitelná pomocí data miningu. Dále je třeba specifikovat, co hledáme, co chceme předvídat a na základě čeho. To znamená, vstupní fáze je zaměřena na definování cílů projektu a požadavků z obchodního hlediska. Poté na převedení znalostí na definici data miningového problému a předběžné navržení plánu, jak dosáhnout cílů. 84
Abychom nebyli od samého počátku odsouzeni k neúspěchu ve smyslu zodpovězení špatné otázky, je zapotřebí správně pochopit, čeho chce klient dosáhnout společně s určením důležitých faktorů, které mohou celkový výstup ovlivnit. Měl by být definován základní cíl projektu z podnikatelského hlediska. K základnímu cíli jsou obvykle připojeny ještě další otázky, na které by klient rád dostal odpověď. Přestože metodologie uvádí jako součást těchto úvah i otázku prostředí firmy a její obchodní situace na trhu, je možné v některých případech tuto oblast vynechat bez negativního vlivu na výsledek projektu. Jedná se o projekty, jejichž výstupy neovlivní přímo okolí organizace. Při definování cíle je zapotřebí definovat rovněž kritéria (z podnikatelského hlediska) pro hodnocení úspěšnosti nebo užitečnosti výstupu projektu. Tato kritéria mohou mít dvě odlišné formy. Mohou být objektivně měřitelná nebo subjektivně vnímatelná. Před započetím projektu by měly být známy všechny vstupy, které budou nutné či dostupné. Tyto vstupy zahrnují jak časové, finanční a hmotné prostředky (prostory, hardware, atd.), tak softwarové, lidské (obchodní experti, datoví specialisté, techničtí pracovníci, data miningoví pracovníci) a datové zdroje (neměnné extrakty, přístup k datovým skladům, provozním datům). Dalším dokumentem, který se v této etapě vypracovává, je analýza přínosů a nákladů. Tento dokument je nezbytnou součástí všech projektů, neboť každá organizace požaduje odpovědi na otázky: Kolik mě projekt bude stát? a Kolik peněž mi přinese nebo umožní ušetřit?. Zatím co doposud byly stanovovány cíle v obchodní terminologii, tak v dalším kroku by měly být cíle stanoveny pomocí technických výrazů (data miningových) a společně s nimi i kritéria pro jejich hodnocení. Na rozdíl však od kritérií pro obchodní cíle, nyní budou definovány technickými pojmy (např. míra přesnosti modelu). Nutnou součástí této etapy je sestavení plánu projektu, ve kterém je popsán způsob dosažení cílů data mining. Měly by být stanoveny kroky, které musí být vykonány, společně s jejich trváním, požadovanými zdroji, vstupy, výstupy a závislostmi. Součástí plánu je rovněž analýza závislostí mezi časovým harmonogramem a riziky. Projektový plán obsahuje detailní plán pro každou fázi. Plán je dynamický, což znamená, že na konci každé fáze je kontrován a aktualizován. 1. Fáze: definice problému (zdroj obrázku: Microsoft) 85
Příklad: Zajímá nás, jestli zákazník, bude-li osloven, zareaguje na nabídku nějakého produktu. Máme údaje o zákaznících (výše příjmů, vzdělaní, bydliště, ) a jejich obchodním chování (co nakoupili, jestli nakupují často, pravidelně, nakupují drobné věci nebo utrácejí občas velké sumy, ). Některým zákazníkům již byla nabídka předána a u těch víme, jak na ni reagovali. Chceme předvídat, jak zareagují ostatní zákazníci, abychom věděli, na které se zaměřit a kterým nabídku ani nepředkládat. Budeme to zkoumat na základě údajů, o kterých si myslíme, že na to mají vliv: věku zákazníka, platu, bydlišti,, a dalších atributů jako třeba: patří k 10% zákazníků, co nejvíce utratili, je jedním z 10% nejčastěji nakupujících, nakupuje hlavně ve středu, koupil si starší model výrobku, zareagoval někdy předtím na podobnou nabídku? 7.2.2 Příprava dat/porozumění datům: Další nepřeskočitelnou částí projektu je získání dat nebo přístupu k datům, která jsou uvedena ve zdrojích. Tento výchozí sběr zahrnuje případně i nahrání dat, pokud je to nutné pro jejich pochopení. Všechny tyto operace by měly být popsány společně s metodami užitými k získání dat. Zaznamenány by rovněž měly být i problémy vzniklé během tohoto procesu a způsoby řešení pro případné použití v budoucnosti (při opakování stejného či podobného projektu). Popsáním charakteristik dat, jako např. formátu, množství dat (počtu záznamů a polí v každé tabulce), popisu polí a dalších znaků, byl měla být zodpovězena otázka, zda-li data uspokojují podstatné požadavky. Již v této části se provádí zběžný průzkum dat. Tato analýza se zaměřuje na data miningové otázky, které mohou být zodpovězeny použitím dotazů, vizualizací a reporty. To zahrnuje: rozdělení klíčových atributů (např. cílová vlastnost pro úlohu predikce), vazby mezi páry nebo malým počtem atributů, výsledky jednoduché agregace, vlastnosti významných podskupin, jednoduché statistické analýzy. Tyto analýzy se mohou zaměřit přímo na cíl data miningového projektu a sloužit tak pro formulaci hypotéz, nebo pouze přispívat k popisu dat. Pokud je to vhodné, mohou být součástí i grafy a diagramy, které vyjadřují datové charakteristiky nebo které jsou vodítkem k zajímavým podskupinám v datech. Je třeba definovat datové zdroje, které by měly být konzistentní a měly by obsahovat čistá data. Data v primárních systémech mohou být uložena v mnoha různých formátech na mnoha různých místech společnosti. V datech se mohou vyskytovat různé chyby typu zákazník nakoupil zboží předtím, než se narodil, prodej se realizoval v obchodě, který ještě neexistoval,. Tyto možné nekonzistence v datech je třeba odhalit a odstranit. Pokud ve firmě existuje datový sklad, který požadovaná data obsahuje, je tento krok výrazně urychlen. V datovém skladu by se měly nalézat už vyčištěná a konzistentní data. Pokud není datový sklad dosud zaveden, bývají právě data miningové problémy dobrým důvodem, proč ho zavést. Na čistých datech se provádějí dále transformace do tvaru vhodného pro použití data miningu. SQL Server 2005 Integration Services pak obsahují veškeré nástroje potřebné pro tento krok data miningového procesu. V případě SQL Serveru 2000 jsou k dispozici služby DTS, které také postačují. Dostat data do potřebné formy není úplně snadný úkol, který může vyžadovat několikastupňové transformace a agregace. 86
2. Fáze: příprava dat (zdroj obrázku: Microsoft) Příklad: V datovém skladu je faktová tabulka, kde každý řádek odpovídá jedné prodané položce. U každého řádku je uveden i datum prodeje položky, obchod, kde se prodej uskutečnil, obsluhující obchodník, způsob platby, cena,. Tato data jsou konzistentní a zkontrolovaná, ale nejsou ve vhodném tvaru pro řešení data miningového problému. Zkoumáme zákazníka, nikoli položku. Potřebujeme data nejlépe ve formě, kdy jeden řádek odpovídá jednomu zákazníkovi a ve sloupcích jsou atributy zákazníka, na základě kterých chceme predikci provádět (věk, plat, bydliště, viz 1.krok DM). 7.2.3 Profilování a popis dat: Než se lze pustit do vytváření a testování modelů, je potřeba plně rozumět připraveným datům a zkontrolovat je. Zjistí se charakteristiky hodnot jednotlivých atributů, statistické parametry jako: minima, maxima, průměry, odchylky atributů, rozložení dat. Poté lze zodpovědně říci, zda připravená jsou bez vady, a případně navrhnout opravu dat. Tato fáze bývá obvykle jednou z nejnáročnějších, neboť data bývají často v různých formátech, v různých tabulkách, obsahují chybějící hodnoty, jiné atributy potřebné pro analýzu chybějí úplně, atd. Musíme rozhodnout, která data budou použita pro analýzu. Kritérii jsou: souvislost s cíli data mining, kvalita a technické podmínky jako např. omezení objemu dat nebo typů. V procesu výběru dat je nutné vybírat jak atributy (sloupečky), tak i záznamy (řádky) v tabulce. Někdy vybraný nástroj či analytická technika vyžaduje, aby data měla určitou kvalitu. Potom je zapotřebí, aby záznamy prošly tzv. čištěním, což může zahrnovat např. vložení vhodných (standardních) hodnot nebo náročnější techniky (určení chybějících dat modelováním). Tyto změny by měly být dokumentovány zároveň se zvážením vlivu na výsledky analýz. Organizace obvykle neshromažďují data s myšlenkou, že s nimi bude následně proveden tento typ analýz. Proto ve struktuře, v které jsou záznamy uloženy, mohou chybět atributy bezpodmínečně nutné pro projekt. Potom musí být provedeny operace, jenž tyto nedostatky odstraní. Zahrnují např.: vytvoření odvozených atributů, úplně nových atributů nebo transformace hodnot stávajících atributů. Jak již bylo uvedeno, tak informace potřebné pro analýzu bývají uloženy v několika 87
tabulkách. S tímto způsobem uložení však nedokáže většina data miningových nástrojů pracovat, a tak je zapotřebí sloučit data z několika tabulek do jediné. Sloučením se rozumí spojení dvou či více tabulek, které obsahují rozdílné informace o stejném objektu. Sloučená data mohou rovněž zahrnovat agregace. Agregací se mají na mysli operace, kde se nová hodnota počítá sumarizací informací z několika záznamů a/nebo tabulek Posledním krokem v přípravě dat je jejich naformátování. Formátovací transformace se týkají v prvé řadě syntaktických změn prováděných na datech, které nemění jejich význam. Některé nástroje mají požadavky na pořadí atributů, jako např. první pole musí být jedinečný identifikátor záznamu nebo poslední pole musí být označení, které má model určovat. Může být nutná i změna pořadí záznamů v datové sadě. Modelovací nástroj může vyžadovat, aby záznamy byly seřazeny podle hodnot výstupního atributu (kterým se označují záznamy při klasifikaci). Běžnou situací je, že záznamy v datové sadě jsou uspořádány určitým způsobem. Modelovací algoritmus však může vyžadovat, aby byly náhodně uspořádány. Např. pokud používáme neuronové sítě, je všeobecně lepší, aby data byla předána síti v náhodném pořadí, ačkoliv některé nástroje tuto změnu pořadí provádějí automaticky bez zásahu uživatele. Navíc se ještě provádějí zcela syntaktické změny odpovídající specifickým požadavkům jednotlivých modelovacích nástrojů. Např. odst ranění čárek z textových polí v souboru, kde byly čárky použity jako oddělovače; zkrácení všech hodnot na maximálně 32 znaků, atd. 3. Fáze: profilování a popis dat (zdroj obrázku: Microsoft) Příklady zjištění v této fázi: Průměrně zákazník koupil 6,12 výrobků 20% zákazníků si koupilo starší model zkoumaného výrobku Profil věku zákazníků vypadá takto:... 7.2.4 Vytváření modelu: Následuje iterativní proces tvorby miningového modelu a jeho kontroly (viz následující kapitola), kdy se hledá co nejlepší možná metoda a její parametry. Data se zde rozdělují na učící a testovací. Na základě učících dat se data miningová metoda naučí předpovídat to, co chceme, a na testovacích datech se potom zkouší, jak dobře je tento model schopný predikce a vhodný k nasazení. Data lze rozdělit náhodně, nebo třeba podle času, kdy se model nechá naučit na prodejích za půl roku a poté je otestován na datech za poslední měsíc. Znalosti dat z předchozího kroku velmi pomůžou při vytváření modelu. 88
Metodologie CRISP v úvodním kroku této fáze doporučuje vybrat konkrétní algoritmus (či algoritmy), který bude použit pro analýzu. Před vlastním sestavením modelu potřebujeme vytvořit postup nebo mechanismus, který bude testovat kvalitu a sílu (správnost) modelu. Např. při klasifikaci používáme běžně jako měřítko kvality data miningového modelu počet chybných klasifikací v procentním vyjádření. Proto obvykle rozdělujeme datovou sadu na sadu učící a testovou. Model je vytvářen na učící datové sadě a jeho kvalita je určována na testové sadě dat. V průběhu samotného modelování je vytvářen jeden nebo více modelů. V používaných nástrojích bývá často množství parametrů, které mohou být různě měněny. Proto je nutné vždy důkladně zaznamenat všechny nastavené hodnoty. Dle CRISP bychom měli zaznamenat rovněž zdůvodnění, proč jsme vybrali zrovna tuto kombinaci nastavení. Zapisování všech nastavení, SQL dotazů apod. usnadňuje potom např. orientaci v datech nebo zabraňuje opakování některých operací. Nezbytnou součástí této etapy je ocenění modelů. Analytik ohodnocuje modely podle hledisek, kterými jsou v prvé řadě kritéria pro přesnost definovaná v první fázi. Pokud je to možné, bere rovněž v úvahu obchodní cíle a kritéria hodnotící obchodní úspěšnost. Protože však je jeho pohled spíše techničtější, spojuje se později s obchodním analytikem a expertem v dané oblasti, aby interpretovali výsledky v obchodních souvislostech. 4. Fáze: vytváření modelu (zdroj obrázku: Microsoft) Příklad: Rozhodneme se pro model Rozhodovací strom, nastavíme vstupní a výstupní atributy, nastavíme parametry modelu a předhodíme mu učící data. 7.2.5 Ověřování modelu: Předtím, než je model převeden do produkčního prostředí, je dobré otestovat, jak dobře je schopen provádět predikce. Lze také postavit takových modelů, které odpovídají definovanému problému a připraveným datům, více, porovnat je mezi sebou a najít ten nejvhodnější. Pokud si žádný model nevede nejlépe, je potřeba vrátit se k předchozím kroku a vytvořit jiný model, nebo předefinovat původní problém. Předešlé hodnotící kroky používali pro hodnocení takové faktory jako přesnost a obecná 89
platnost modelu. Tento krok hodnotí úroveň s jakou model dosahuje obchodních cílů a snaží se určit, zda-li je přítomen nějaký důvod (obchodní), proč je tento model nedostatečný. Vytvořený model je možné ohodnotit tím způsobem, že jej užijeme na reálné situace a sledujeme jeho kvalitu. Je však nutné zvážit časové a rozpočtové podmínky, zda-li umožňují takovéto hodnocení. Pokud je výsledný model označen jako schopným uspokojit obchodní potřeby, následuje důkladná revize celé data miningové úlohy a určuje se, zda-li nebyl přehlédnut nějaký důležitý faktor či úkol. Tato revize rovněž zahrnuje ujištění o kvalitě (o správném sestavení modelu; o použití atributů, které budou dostupné i pro budoucí analýzy). S ohledem na výsledky hodnocení a revize procesu se rozhodne, jak pokračovat dále. Musí být rozhodnuto, zda ukončit tento projekt a přesunout se do fáze Implementace nebo zda zahájit další opakování některých fází nebo dokonce začít zcela nový data miningový projekt. Tento úkol zahrnuje analýzy zbývajících zdrojů a rozpočtu, které ovlivní rozhodnutí. Měly by být sepsány možné kroky společně s důvody pro a proti pro každou volbu a na závěr i rozhodnutí. 5. Fáze: ověřování modelu (zdroj obrázku: Microsoft) Příklad 1: Máme několik odpovídajících modelů a jejich porovnáním na testovacích datech zjistíme, že nejlépe si vede Model 3: Rozhodovací strom s takovými a takovými parametry. Rozhodneme se ho použít v praxi. Příklad 2: Modely nejsou úplně ideální. Po prozkoumání změníme nějaké parametry modelu a vynecháme 2 vstupní atributy (myslíme si, že na nich tolik nezáleží a spíše zkreslují výsledky třeba atribut, jestli uživatel nakupoval nejčastěji ve středu). Pro toto vytvoříme nový model, abychom ho mohli porovnat s původním a zjistit, jestli jsme uvažovali správně a model si povede lépe. 7.2.6 Uvedení modelu do praxe: Pro nasazení data miningových modelů do obchodních činností bere tento úkol výsledky hodnocení a vyvozuje z nich strategii pro implementaci. Pokud byl identifikován obecný postup pro vytvoření platného modelu (modelů), je zde tento postup dokumentován pro pozdější použití. 90
Během zavádění modelů by nemělo být opomenuto vytvoření plánů pro kontrolu a údržbu. Jejich význam roste, pokud se výsledky data miningových analýz mají stát součástí každodenních aktivit organizace. Důkladná příprava strategie údržby pomáhá vyhnout se zbytečně dlouhým obdobím, po která jsou data miningové výsledky špatně užívány. Z důvodu kontroly nasazení výsledků je nutný detailní plán kontrolní činnosti. Tento plán bere do úvahy specifický typ nasazení Na konci projektu by měla být sepsána závěrečná zpráva. Ta může mít podobu buďto stručného shrnutí a nebo může jít o závěrečné a vyčerpávající prezentování všech výsledků, jichž bylo dosaženo během celého procesu. Závěrečným vypracovávaným dokumentem, který CRISP uvádí, je revize projektu. Někomu se možná může zdát, že tato zpráva je zbytečná, neboť se nepředává zákazníkovi ale slouží pro vnitřní potřeby data miningové firmy. Tato část by rozhodně neměla chybět. Jde o shromažďování podnikových znalostí (tzv. řízení znalostí). Pracovníci mají zhodnotit, co šlo dobře a co špatně, co bylo uděláno dobře a co je potřeba zlepšit. Shrnují důležité zkušenosti získané během projektu. Upozorňují na nebezpečná místa v analýze, na zavádějící přístupy nebo ukazatele pro výběr nejvhodnějších data miningových technik. Právě tyto zaznamenané individuální postřehy umožňují pracovníkům sdílet své zkušenosti a pracovat tak v dalších projektech efektivněji. Vytvořený a ověřený model je pak uveden do praxe a na jeho základě lze vytvářet predikce, podle kterých lze poté přijímat obchodní rozhodnutí. Lze například vyplnit sloupec nějaké tabulky na základě predikcí modelu, na základě modelu rozdělovat příchozí data do dvou tabulek, nebo vytvořit report v Reporting Services, který se bude dotazovat do modelu. 6. Fáze: uvedení do praxe (zdroj obrázku: Microsoft) Příklad 1: Model nám vytipuje, které zákazníky je dobré oslovit s nabídkou nového výrobku. Seznam takových zákazníků pak pošleme nějakému obchodníkovi. Příklad 2: Tato informace je uložena ke každému zákazníkovi do tabulky se seznamem zákazníků a obchodník, který si zobrazí v CRM kartu zákazníka, vidí, jestli má tomuto zákazníkovi nabídnout výrobek nebo ne. 91
7.2.7 Závěr: Data mining poskytuje firmě lepší porozumění získaných informací a obchodních procesů. Jedná se o velmi dobře rozjetou technologii, která vám pomůže v boji proti konkurenci. Ideální variantou je spojení data miningu a datového skladu. 7.2.8 Skóring data miningovými modely Skóring je v data miningu standardní termín. Jedná se o přiřazení výsledného skóre, například ohodnocení pravděpodobností nákupu daného zboží nebo pravděpodobnosti odchodu či podvodu pro každý případ/klienta/zákazníka. Výsledkem data miningu mohou být informace pro rozhodování nebo model, který je možné použít pro skórování klientů, žádostí či transakcí. Tyto modely mohou být zprovozněny v zásadě dvěma způsoby: přenosem dat z databáze do data miningového nástroje a po oskórování zpět nebo přenosem modelu z data miningového nástroje do databáze a skórování v databázi. Trend vcelku jasně směřuje ke druhému řešení, kde přenos modelu je dnes často realizován vygenerováním kódu v SQL či jiném programovacím jazyce. V současnosti se nejvíce prosazuje používání XML standardu specifikace modelů zvanému PMML (Predictive Markup Modelling Language). Nasazení modelu v databázi má ještě jeden pozitivní důsledek -- řeší najednou dva různé způsoby použití modelů, jak pro offline, tak pro online skórování. Většina marketinkových aplikací může být realizována offline, zatímco například aplikační kreditní skóring se musí typicky provádět online. 7.3 Členění data miningových úloh V oblasti data mining se setkáme s celou řadou úloh. Úloha Klasifikace Odhady hodnot vysvětlované proměnné Segmentace (shlukování) Analýza vztahů Predikce v časových řadách Detekce odchylek Metoda Diskriminační analýza Logistická regresní analýza Klasifikační (rozhodovací) stromy Neuronové sítě (algoritmus "back propagation") Lineární regresní analýza Nelineární regresní analýza Neuronové sítě (RBF -- "radial basis function") Shluková analýza Genetické algoritmy Neuronové shlukování (Kohonenovy mapy) Asociační algoritmus pro odvozování pravidel typu If X, then Y Boxova-Jenkinsova metodologie Neuronové sítě ("recurrent back propagation") Vizualizace 92
Statistické postupy Další možné rozdělení data miningových problémů vytvořil Weiss. Dvě základní skupiny nazval: Predikce a Objevování znalostí. Stojí za povšimnutí, že v předcházejícím členění je vizualizace označena jako metoda, zatímco u Weisse je postavena na stejnou úroveň jako ostatní úlohy. Predikce Klasifikace Regresní analýza Analýza časových řad Objevování (deskriptivní analýzy) Zjišťování odchylek Segmentace databáze Shlukování Asociační pravidla Sumarizace Vizualizace Dolování v textu znalostí Uvedená členění nejsou jediná správná. Nejenže je možné nalézt v různých publikacích různé pohledy členění, což činí orientaci v této problematice z počátku poněkud složitější, ale dokonce je možné u stejného pohledu členění nalézt rozdíly v zařazení některých analýz do konkrétních skupin. 7.3.1 Přehled základních metod Data mining zahrnuje mnoho metod. Zde popíšeme základní myšlenku nejrozšířenějších z nich. Logistická regrese je statistická metoda, která je v data miningu velmi často využívána. Tato metoda se používá pro predikci/klasifikaci diskrétního cílového atributu (tj. cílový atribut nabývá konečného, často malého počtu hodnot). Predikcí/výsledkem je pravděpodobnost každé možné výsledné hodnoty, tedy číslo mezi 0 a 1. Princip metody je v tom, že se vstupní atributy násobí vahami. Výsledek se následně transformuje na interval od 0 do 1. Ve fázi učení se určují váhy tak, aby predikce byla optimální (vůči nějakému kritériu, obvykle pravděpodobnostnímu). Neuronové sítě jsou metody pocházející z umělé inteligence. V teorii existuje velmi mnoho druhů neuronových sítí. Jen málo z nich má rozšířené implementace. Pro predikci se používá tzv. perceptron, pro segmentaci Kohonenovy neuronové sítě. Predikční neuronové sítě dávají srovnatelně dobré výsledky jako jiné DM metody, jejich nevýhodou však je, že zpravidla nelze interpretovat, proč daná síť predikuje právě takto (jedná se o predikci "černou skříňkou"). Rozhodovací stromy dělí celý soubor na dvě či více částí (vždy podle hodnot vybraného atributu). Atribut, podle kterého se dělí, je vybírán tak, aby se cílová proměnná ve všech částech co nejvíce lišila. V praxi existuje několik druhů rozhodovacích stromů, které se liší zejména ve funkci, která měří odlišnost daných skupin. Takto rozdělené skupiny se dále dělí podle dalších atributů stejným principem. 93
K-means je shlukovací iterační algoritmus. Každý objekt chápe jako bod v mnohorozměrném prostoru (co atribut, to rozměr). Cílem je seskupit vzájemně blízké objekty. K-means je iterační algoritmus. Při inicializaci uživatel definuje počet shluků a generuje se (náhodně) stejný počet centroidů - středů shluku. V každé iteraci jsou dva kroky. V prvním kroku se pak přiřadí každý objekt nejbližšímu centroidu (tak vzniknou shluky) a ve druhém kroku se aktualizují centroidy podle skutečných objektů ve shluku ("zprůměrováním" objektů ve shluku). K-means patří do shlukovacích metod založených na vzdálenosti. Všechny atributy definují shluky se stejnou vahou. K-means je schopen pracovat jen s malým počtem atributů (max. cca 8), jinak začnou vycházet nesmyslné výsledky. EM clustering je pravděpodobnostní metoda shlukování. Pro definici shluku se použijí ty atributy, které ho nejlépe charakterizují. Tedy každý shluk může být definován jinou sadou atributů. Tato metoda je schopna pracovat i s větším počtem atributů (tj. více než 10), avšak je náročnější na přípravu dat. Asociační pravidla jsou metoda pro vyhledávání zajímavých vztahů v datech. Základní tvar hledaných vztahů je "jestliže-pak". Příkladem je pravidlo Počet stížností(vysoký) & Výše účtu (vysoká) Churn (Ano) (21%),které indikuje příčinu odchodu zákazníků. Interpretace je následující: 21% zákazníků s vysokým účtem a vysokým počtem stížností odchází ke konkurenci. 7.3.2 Základní srovnání vybraných metod Základem použití dané metody pro určitý typ úlohy je vždy velmi dobrá znalost dané metody, jejích vlastností a zkušeností s ní. Dané metody mají své předpoklady a jejich nesplnění může znamenat znehodnocení výsledků analýzy. Příkladem může být chybné použití lineární regrese pro analýzu časových řad, kde se porušuje jeden z jejích předpokladů (nezávislost chybové složky). Zde si popíšeme některé odlišnosti často používaných metod pro predikci - rozhodovacích stromů a logistické regrese - a často používaných metod pro shlukování - K- Means a EM clusteringu. V mnoha predikčních modelech jsou použity rozhodovací stromy. Ty mají oproti logistické regresi řadu "výhod", spočívající zejména v nižší citlivosti na chyby v přípravě dat (např. pokud v logistické regresi je v libovolném atributu-prediktoru chybějící hodnota, je celý záznam vyhozen a do učení či skórování vůbec nevstupuje). Často však bývají nesprávně použity i v případě, že počet pozitivních případů není dostatečně velký (vůči počtu všech, případně počtu důležitých proměnných). Pak dochází dle nastavení parametrů buď k přeučení, nebo nevyužití mnoha důležitých proměnných. Pravděpodobně nejastěji používanou metodou pro shlukování je K-means. Tato metoda je ideální při velmi malém počtu atributů; často je však mylně používána i pro mnoho atributů s velmi špatnými výsledky (např. z běžné populace vyjdou 2 shluky a pak se shluku s průměrným věkem 39 let se říká "mladí" a shluku s průměrným věkem 41 říká "staří"). Na druhé straně, EM clustering je velmi citlivý na dobrou přípravu dat, proto je třeba při jeho použití pečlivě znát jeho vlastnosti, principy a vlastnosti konkrétní softwarové implementace. 94
7.4 Rozhodovací stromy Rozhodovací stromy jsou analytické nástroje sloužící k nalezení pravidel a vztahů v datovém souboru pomocí systematického rozdělování a větvení na nižší úrovně. Cílem je určit takové proměnné, které dokáží záznamy rozdělit a snižují tak nejistotu. Problémem může být určení, na kolik větví se má dělit každá proměnná. Pokud záznamy rozdělíme podle proměnné do příliš mnoha skupin, může nastat situace, kdy do každé z těchto skupin přísluší pouze několik málo záznamů a nelze tak vyvodit žádná rozhodovací pravidla. Rozhodovací stromy jsou vhodné pro úlohy, ve kterých má být provedena klasifikace nebo předpověď. Užitečné jsou v oblastech, ve kterých můžeme hodnoty proměnných rozdělit do relativně malého počtu skupin. Na druhou stranu nejsou vhodné pro případy, kdy je úkolem předpovězení kvantitativních hodnot. Strom se skládá z uzlů. Uzel na nejvyšší úrovni je označován pojmem kořenový. Vnitřní uzle přestavují testy jednotlivých atributů (kořenový uzel je rovněž testem). Větví nazýváme možný výsledek testu. Externí uzly označované jako listy reprezentují jednotlivé třídy. Algoritmus ID3 Pro vytváření rozhodovacích stromů a pravidel byla vyvinuta celá řada algoritmů. Mezi nejznámější patří CART, CLS, ID3, GID3, C4.5, AID, TREEDISC, QUEST a CHAID. Algoritmus ID3 lze popsat následujícím způsobem: 1. Strom začíná jako samostatný uzel reprezentující tréninkové záznamy 2. Pokud jsou všechny záznamy stejné třídy, potom se tento uzel stane listem a je označen touto třídou 3. Jinak algoritmus použije metodu označovanou jako informační přínos k určení atributu, který nejlépe rozdělí vzorky do jednotlivých tříd. Tento atribut se stane buď testem nebo rozhodnutím - třídou. Tato verze algoritmu pracuje pouze s diskrétními hodnotami. Proto musí být spojité hodnoty diskretizovány (tj. převedeny na diskrétní). 4. Pro každou možnou hodnotu atributu je vytvořena samostatná větev a vzorky jsou přiřazeny jednotlivým větvím. 5. Algoritmus stejným způsobem vytváří rozhodovací strom v každé části. Jakmile se atribut použije jako testové kritérium, nesmí být znovu použit pro testování v této části stromu. 6. Opakování dělení může skončit, pokud je splněna některá z následujících podmínek: a) všechny vzorky daného uzlu patří do stejné třídy, b) nejsou žádné zbývající atributy, podle kterých by mohlo proběhnout další dělení. V tomto případě proběhne tzv. většinová volba. Ta zahrnuje převedení daného uzlu na list a označí se většinovou třídou ve vzorcích, c) nejsou žádné další vzorky patřící k dané větvi. V tomto případě je list vytvořen z většinové třídy ve vzorcích. 95
Obrázek rozhodovací strom: Cílová proměnná se jmenuje Whole_L (zdali si zákazník koupil životní pojištění), je kategoriální a nabývá hodnot Yes a No. Všimněme si, že v celém souboru si dané pojištění koupilo 25% zákazníků, ale například v listu důchodci ('Ocuupation=Ret') dokonce 96%. Výběr nejvhodnějšího atributu pro rozdělení záznamů Míra informačního přínosu je používána pro výběr testového atributu v každém uzlu stromu. Takováto míra je vztažena k míře kvality (vhodnosti) rozdělení. Atribut s nejvyšším informačním přínosem je vybrán jako testový pro daný uzel. Tento atribut minimalizuje znalosti potřebné pro klasifikaci vzorků ve výsledném rozdělení a zohledňuje nejmenší náhodnost nebo nečistotu v těchto segmentech. Nechť S je sada skládající se z datových záznamů o celkovém počtu s. Předpokládejme, že atribut s označením tříd má m rozdílných hodnot a definuje tak m rozdílných tříd Ci (pro i=1,,m). Nechť si je počet záznamů patřících do třídy Ci. Očekávaná informační potřeba ke klasifikaci daného vzorku je dána vztahem, Kde pi je pravděpodobnost, že libovolný záznam patří do třídy Ci a je vypočítána jako si/s (tj. poměr záznamů ve třídě k celkovému počtu záznamů). Nechť atribut A má v různých hodnot (a1, a2,, av). Atribut A může být použit k rozdělení S do v podskupin (S1, S2,, Sv), kde Sj obsahuje ty vzorky z S, jejichž atribut A se rovná aj. Pokud je A vybráno jako testový atribut (tj. nejlepší atribut pro rozdělení), potom vytvořené podskupiny odpovídají větvím vycházejícím z uzle s datovou 96
sadou S. Nechť sij je počet záznamů ze třídy Ci v podskupině Sj. Neurčitost rozdělení podle atributu A je dána vzorcem: Výraz funguje jako váha j-té podskupiny a je to počet záznamů v podskupině dělený celkovým počtem záznamů S. Pro danou podskupinu Sj platí: Kde pij = sij/sj je pravděpodobnost, že záznam v Sj patří do třídy Ci. Informační přínos, který by byl získán rozdělením podle A je Algoritmus počítá informační přínos pro každý atribut. Atribut s nejvyšším informačním přínosem je vybrán jako testový atribut pro danou sadu S. Uzel je vytvořen a pojmenován podle atributu, větve jsou vytvořeny pro každou hodnotu atributu a vzorky jsou dle toho rozděleny. Přesnost klasifikačních modelů Určení přesnosti klasifikátorů je důležité z toho důvodu, že umožňuje hodnotit kvalitu predikce pro nové záznamy, které nebyly použity při učení. Nejčastějším ukazatelem přesnosti klasifikačního modelu je míra chybných klasifikací. Udává, kolik procent testových záznamů bylo chybně zařazeno. Tuto míru je možné vypočítat různými technikami. Mezi nejznámější patří: holdout, náhodné seskupování (random subsampling), k-složkové křížové ověření (k-fold cross validation), Leave-one-out. 1. Holdout Metoda holdout spočívá v náhodném rozdělení celkové datové sady na dvě nezávislé části. Na první z nich probíhá vlastní tvorba modelu (určení klasifikátorů). Poté se jeho přesnost ověřuje na zbývající části jako procento neúspěšných klasifikací. Obvykle je datová sada rozdělena v poměru 2:1. 2. Náhodné seskupování Náhodné seskupování je obdobou metody holdout. Při tomto způsobu ověřování přesnosti provádíme n-krát postup předešlé metody. Celkový výsledek je aritmetický průměr hodnot získaných během jednotlivých opakování. 3. k-složkové křížové ověření Při této metodě je datová sada náhodně rozdělena na k rovnocenných datových sad (S1, S2,, Sk). Celý proces učení a ověřování přesnosti probíhá v k kolech. V každém kole je sada k použita pro test a zbývající sady slouží k učení. Celková přesnost se vypočte jako průměr dosažených přesností v jednotlivých iteracích. 97
4. Leave-one-out Jde o extrémní případ předešlé metody, kdy k (počet podskupin) je roven počtu záznamů. To znamená, že v každém opakování slouží pro tvorbu modelu celá datová sada kromě vždy jediného záznamu. Na něm je po skončení učení ověřena přesnost Zvyšování přesnosti modelů Někdy může nastat situace, kdy vytvořený model poskytuje relativně přesné predikce. Přesto bychom rádi tuto přesnost ještě zvýšili. K tomuto účelu je možné použít metody bagging a boosting. Jsou založené na jednoduché myšlence Víc hlav víc ví. Metoda Bagging kombinuje výsledky klasifikací z různých druhů modelů nebo ze stejného modelu vytvořeného pro různá učící data. Rovněž odstraňuje přirozenou nestálost výsledků v případě použití komplexních modelů na relativně malé datové sady. Předpokládejme, že úkolem data miningové úlohy je vytvořit model pro prediktivní klasifikaci a objem dat je relativně malý. Náhodným seskupováním záznamů můžeme získávat různé učící datové sady. Ve fázi učení nám tak pro různé soubory vzniknou různé rozhodovací stromy, což dokumentuje nestabilitu modelů pro malé datové sady. Možným způsobem, jak získat jediné řešení, je vzít všechny vytvořené stromy a použít je pro jednu společnou klasifikaci. Touto konečnou klasifikací je ta, která byla nejčastěji predikována různými stromy. Boosting, stejně jako bagging, získává z několika klasifikací různých modelů jedinou předpověď. Pracuje tak, že je vytvořen model z učících dat, kde všem záznamů je přiřazena stejná váha. Určíme klasifikace, na jejichž základě jsou přiřazeny nové váhy záznamům v učících datech. Váhy jsou inverzně proporcionální k míře přesnosti klasifikací. Jinými slovy větší váhy jsou přiřazeny těm záznamům, které bylo náročné klasifikovat (pro které byla míra chyb vysoká), a nižší váhy snadno klasifikovaným záznamům (míra chyb predikce byla nízká). Pokračujeme další iterací, ve které vytvoříme nový model užitím nových vah záznamů. Boosting vytvoří posloupnost klasifikátorů, kde každý další klasifikátor je expertem na klasifikování záznamů, které nebyly dobře určeny předcházejícími. Kombinací jednotlivých klasifikátorů je získána jediná nejlepší klasifikace. Boosting je možné použít i pro metody, které nepracují s váhami. V tomto případě se užijí pro učení náhodně seskupená data. Proces učení má stejné kroky jako učení při boostingu s váhami. Pravděpodobnost, že záznam bude vybrán do skupiny učících dat, je inverzně proporcionální k přesnosti predikce v předcházejícím kole. Vizualizační techniky pro analýzu dat Techniky využívající pro data mining vizualizaci dovolují provádět pozorování bez předešlé představy. To znamená, že nemusíme vědět, co hledáme. Místo toho necháváme data, aby nám ukázala, co je v nich důležitého resp. zajímavého. Během vizualizační analýzy můžeme rychle vidět zajímavou strukturu např. překročení hranic sledovaného systému dat, frekvenci výskytů a další datové závislosti. 98
Tyto techniky umožňují získat mnohem lepší a hlubší pochopení dat, než jakého by bylo dosaženo uplatněním výpočetního způsobu analýzy. Čistě výpočetní analýza vrací na svém konci pouze číselné hodnoty. A ty jsou mnohdy těžko interpretovatelné. Použití vizualizační techniky umožní nalezení zajímavého vzoru či trendu, který by jinak zůstal nepovšimnut. Další výhodou grafického zobrazení je objem dat, který můžeme najednou zpracovávat ve srovnání s tradičním způsobem. Vizualizaci můžeme rovněž použít pro what-if analýzu a zkoumat, jak měněné parametry ovlivňují model. Poznávací proces Výhody vizualizace tkví v kognitivní (poznávací) schopnosti mozku. Zatímco při tradiční analýze jsou vyšší nároky kladeny na pozornost a paměť analytika, při vizualizaci se využívají poznávací schopnosti. Mozek je schopný během několika milisekund rozeznat v obrázku či v grafu důležité znaky, zatímco ve sloupci čísel by mu to trvalo mnohem déle, protože by každou jednotlivou položku musel zpracovávat samostatně. Tento princip je znázorněn v následujícím příkladu. Předpokládejme, že sledujeme v podniku telefonické hovory a zajímá nás, mezi kterými dvěmi pracovišti je uskutečněno nejvíce hovorů. V tabulce je v každém řádku zaznamenán vždy jeden hovor. Jednotlivá pracoviště jsou označena čísly od 1 do 7. V grafickém vyjádření síla čar znázorňuje frekvenci volání. Volající Volaný 1 3 3 6 6 2 6 3 5 7 1 5 3 6 4 6 7 5 3 7 Splnění takto jednoduchého a rozsahově malého úkolu nám s využitím tabulky zabere určitou dobu. Při grafickém vyjádření v podstatě okamžitě odhalíme výsledek 99
7.5 Datové sklady při kontinuální výrobě Jak již bylo řečeno, za datový sklad (DS) se považuje integrovaný soubor databází optimalizovaný z hlediska využití pro potřeby rozhodování. Dalšími vlastnostmi DS jsou stálost (data jsou pouze ukládána a jsou k dispozici dlouhodobě) a zaměření na konkrétní problém [1]. V našem případě je konkrétním problémem podpora výroby v průmyslových odvětvích s kontinuální výrobou [2] (zpracování ropy, chemie, energetika apod.). Pro datové sklady obsahující mj. technologická (provozní) data z kontinuální výroby (pod vlivem angličtiny se často používají českému jazyku cizí označení procesní data, procesní průmysl apod.) se vžila zkratka PDW (Process Data Warehouse). Datové sklady byly dosud popisovány zejména v oblasti podpory obchodních procesů (obchod obecně, bankovnictví, telekomunikace). Jejich použití jako součásti výrobního informačního systému v podnicích s kontinuální výrobou přitom má množství specifik, která znemožňují přímou aplikaci klasických postupů. V této kapitole jsou podrobněji představeny základní kroky při vytváření těchto specifických DS. Předem ještě poznamenejme, že plnění DS se označuje zkratkou ETL (Extraction, Transformation and Loading) a že v případě PDW hraje klíčovou roli též validace dat. 7.5.1 Zdroje primárních dat Možné zdroje dat pro DS jsou uvedeny na obr. 1. Jejich zřejmě nejdůležitějším zdrojem jsou řídicí systémy výrobních jednotek, ať už jde o distribuované řídicí systémy (Distributed Control System DCS) nebo programovatelné automaty (Programmablde Logic Controller PLC) atd., které jsou v současné době běžně vybaveny relativně krátkodobými databázemi historických provozních dat (průtoky, teploty, tlaky apod.). Jedná se většinou o nerelační databáze okamžitých dat (Real Time DataBase System RTDBS), které bývají pro úsporu paměti komprimovány. V některých podnicích mohou existovat relativně samostatné systémy pro měření a regulaci nosičů energie (tzv. utilit), jako jsou elektřina, topné plyny apod., které se však z hlediska zpracování dat neliší od výrobních jednotek. Počet veličin měřených a zaznamenávaných ve středně velkém podniku se pohybuje v řádu desítek tisíc a požadavky na kapacitu paměti jsou značné. Obr. 1 100
Pro průmysl zpracování ropy a chemii jsou typické sklady tvořené desítkami až stovkami zásobníků. Moderní sklady mívají automatické měření stavů hladin zpracovávané samostatným informačním systémem, který vypočítává hmotnost látek v zásobnících z přímo měřených parametrů. Měření zásob má význam zejména pro bilancování výroby a stanovování ztrát. Dalším důležitým zdrojem informace jsou laboratoře. Předpokládáme, že laboratorní data jsou uchovávána v rámci LIMS (Laboratory Information Management System). Na rozdíl od provozních dat, která jsou snímána nepřetržitě, jsou laboratorní data k dispozici poměrně řídce a jejich dlouhodobá archivace nepředstavuje problém. Přesto tato data bývají dosti pestrá a počty stanovovaných analytických znaků se mohou pohybovat v rozsahu tisíců až desetitisíců. Pořizovat laboratorní data je dosti nákladné a lze pozorovat přesun k využívání automatických analyzátorů a softwarových senzorů (Quality Estimators viz dále). Údaje o příjmu surovin a expedici výrobků přes železniční nebo silniční terminály je možné získat z příslušných informačních systémů, které vedle množství též obsahují další informace (kvalitu produktů, zákazníky apod.). Objem těchto dat je opět řádově menší než objem dat provozních. V praxi se vyskytují též další zdroje informací, které je účelné zařadit do DS (informace od zákazníků, systémy informací týkajících se životního prostředí aj.). Charakteristickým rysem DS je různorodost ukládaných dat. Jedná se jak o výsledky měření nepřetržitě měřených veličin, tak o pravidelně i nepravidelně získávaná data z laboratorních a transakčních systémů. To klade značné nároky na logiku dalšího zpracovávání dat, kdy je třeba současně zpracovávat data získávaná s různou frekvencí. 7.5.2 Transformace dat Transformací dat se rozumí výpočty dalších veličin z primárních (surových) dat. Může se jednat o širokou škálu výpočtů, jednoduchými aritmetickými operacemi počínaje a složitými modelovými výpočty konče. Na nejnižší úrovni se jedná např. o korekce údajů průtokoměrů na stavové podmínky, které nebyly z různých příčin provedeny již měřicím nebo řídicím systémem. Integrovaný DS umožňuje využít veškeré dostupné informace, např. kombinovat výsledky přímých měření s daty z laboratoře apod. Jiným druhem korekcí jsou přepočty stavových veličin technologických médií na standardní podmínky. Jako příklad může sloužit destilační kolona, u níž je kvalita produktu určena teplotou na určitém patře. Toto však platí pouze za předpokladu, že tlak v koloně je udržován na konstantní hodnotě. Pokud tomu tak není, lze naměřenou teplotu výpočetně korigovat na hypotetickou hodnotu, která odpovídá nominálnímu tlaku. Současná výpočetní technika dovoluje rutinně provádět složité výpočty vlastností látek vycházející z databanky fyzikálně-chemických vlastností. Lze též provádět simulační výpočty zaměřené na přímo neměřitelné parametry výrobních procesů (účinnost zařízení, vnitřní toky v aparátech apod.). Důležité jsou bilanční výpočty umožňující jednak dopočítat neměřené toky, jednak vyrovnat přímo měřené toky tak, aby výsledky odpovídaly přírodním zákonům (viz dále). Některé z uvedených transformací lze teoreticky realizovat i v rámci vlastních měřicích a řídicích systémů. Přepočet prováděný v rámci transformace dat je však často jednodušší a v 101
případě složitějších transformací i jediná reálná cesta. 7.5.3 Agregace dat Jak již bylo zmíněno v úvodu, jsou DS optimalizovány z hlediska jejich využití a ne z hlediska minimálních požadavků na rozsah databáze. Ukládají se do nich proto i údaje redundantní, které by bylo možné odvodit z jiných dat (bylo by to ale časově náročné). Prvním krokem je agregace v časové dimenzi, kdy se z okamžitých dat vytvářejí data charakteristická pro pevně stanovená časová období. Nejčastější statistickou charakteristikou je střední hodnota, méně často hodnota na konci intervalu, extrémní hodnota apod. Běžně se uchovávají data hodinová, denní a měsíční, méně často šestiminutová, třicetiminutová nebo směnová. Pouze krátkodobě se uchovávají data okamžitá. Probíhá též agregace v jiných dimenzích. Příkladem může být třeba kumulace spotřeby různých nosičů energie (utilit) na určitou výrobní operaci (kumulace spotřeby paliva, páry atd.). Zajímavé mohou být zjednodušené ekonomické bilance, peněžní vyjádření spotřebovaných utilit apod. V oblasti skladů se agregují zásoby produktů různé kvality, produktů podle skupin a podskupin apod. 7.5.4 Validace dat Jedná se zřejmě o nejobtížnější činnost při vytváření DS. Důvěra v DS je bohužel přímo úměrná kvalitě dat v DS obsažených. Na rozdíl od obchodu, kde se výrobky i polotovary většinou počítají, při kontinuální (a popř. vsádkové) výrobě se produkty měří a váží. Základním problémem je zde přesnost uskutečňovaných měření a častý výskyt systematických i hrubých chyb. Pouze malá část chyb přitom bývá způsobena při vlastním plnění DS (v etapě ETL). Většina chyb vzniká při styku složitého, výkonného a mnohdy také citlivého přístrojového vybavení se syrovou průmyslovou realitou. I jednoduché měřicí systémy přitom vybavují naměřenou hodnotu příznakem, který může signalizovat poruchu měření. U pokročilejších měřicích a řídicích systémů se lze setkat s dalšími prvky validace dat. Je možné stanovit meze, ve kterých by se měla nacházet správná hodnota. Lze sledovat drobné fluktuace výstupního signálu měřidla, které jsou známkou jeho funkceschopnosti. Použitelnost těchto metod je však omezena na ověření základní funkční schopnosti měřicího systému. Hlavním problémem při měření fyzikálně-chemických veličin jsou systematické chyby (bias) proměnné v čase. Nejpropracovanější metodou v tomto směru je konfrontace dat s matematickými modely, které platí mezi skupinami veličin. Mezi mnoha veličinami platí empiricky zjištěné korelace, např. korelace mezi analytickými znaky zjištěnými na jednom vzorku. Jiným příkladem mohou být korelace mezi teplotami naměřenými řadou teploměrů v reaktoru. Jestliže tato korelace poklesne nebo zmizí, signalizuje to poruchu jednoho nebo několika měřidel. Nejmocnějším nástrojem při validaci dat je konfrontace naměřených údajů s exaktně platnými matematickými modely. Nejčastěji jsou zde využívány základní přírodní zákony vycházející z principu zachování hmoty a energie [4]. Jsou to zejména bilance: celkové hmotnosti, množství látek, energie, popř. entalpie, 102
hybnosti. Vlastní validaci předchází vyrovnání dat, známější pod anglickým označením Data Reconciliation (DR, viz [5], [6]), založené na statistickém vyrovnání naměřených dat na základě matematických modelů (zejména bilančních). Vedle vlastního vyrovnání a zpřesnění naměřených hodnot a dopočítání hodnot neměřených veličin tvoří DR základ pro eliminaci hrubých a systematických chyb měření a analýzu jejich šíření a pro optimalizaci měřicích systémů. Validace dat probíhá ve třech krocích: 1. Detekce přítomnosti hodnoty nebo hodnot zatížených hrubou chybou. 2. Lokalizace, tj. nalezení těchto chybných hodnot. 3. Oprava chyb, popř. jejich odstranění z DS. V této oblasti existuje mnoho propracovaných metod. Pouze zřídka však lze již zmíněné kroky plně automatizovat a lidský faktor je zde zatím nenahraditelný. Metody validace se proto většinou používají pod lidským dohledem u důležitých aplikací (zejména bilanční systémy). Takto konsolidovaná data tudíž většinou tvoří malý zlomek všech dat v DS, o to větší je však jejich význam, a tím i sledovanost. 7.5.5 Prezentace dat Nezbytnou podmínkou úspěšnosti DS je jednoduché a efektivní poskytnutí dat uživatelům. Přestože vývoj spěje k interaktivnímu využívání dat, kdy uživatelé mají značnou volnost při vytváření různých pohledů na data, význam neztrácejí ani předdefinované pohledy na data a dotazy připravené správcem DS. Takovéto předem připravované sestavy mohou být též automaticky generovány a zpřístupněny v podnikové síti nebo intranetu. Těžiště přístupu uživatelů k datům již nyní ovšem spočívá v maximální volnosti jednotlivých uživatelů při využívání dat. Každý uživatel by měl mít vyhrazen vlastní prostor a maximální možnosti pro své soukromé aktivity (samozřejmě s výjimkou modifikace dat v DS). Konečnou formu prezentace je nejlepší přenechat uživateli v prostředí MS Office a nesnažit se tomuto prostředí konkurovat dokonalostí prezentace ve vlastním DS. Znamená to maximálně usnadnit exporty dat. Odměnou bude uvolnění správce a podpory DS od neustále narůstajících požadavků uživatelů DS. Pro vlastní přístup k datům existuje velké množství prostředků, nástroji databází, na nichž jsou DS realizovány, počínaje a řešeními ušitými na míru konče. Šlágrem poslední doby je tzv. tenký klient představovaný internetovým prohlížečem. 7.5.6 Dolování v datech Pojem dolování v datech (popř. dolování dat) značí získávání dosud neznámých vztahů a souvislostí ukrytých v datech, jejichž potenciál lze využít při sledování, řízení a optimalizaci výrobního procesů [3]. Obecně se jedná o široké spektrum technik často spadajících do oblasti umělé inteligence (neuronové sítě, genetické algoritmy apod.). V praxi lze dosáhnout dobrých výsledků i klasickými metodami, zejména pokročilými metodami statistického zpracování dat [7]. 103
Principy dolování dat v prostředí s kontinuální výrobou osvětluje příklad uvedený v následující kapitole. 7.5.7 Příklad principu dolování v datech Principy dolování v datech v prostředí kontinuální výroby si osvětlíme na příkladu destilační kolony při využití možností nabízených prostředím databáze Oracle. Předpokládejme, že všechna potřebná data z kolony jsou uložena v tabulce databáze Oracle o sloupcích QE, F, T, P, R a dalších. Přitom sloupec QE (Quality Estimator) obsahuje hodnoty koncentrace klíčové složky v destilátu kolony Q E, sloupec F hodnoty nástřiku suroviny do kolony F, sloupce T a P hodnoty teploty T, popř. tlaku P v hlavě kolony, sloupec R hodnoty refluxního poměru R atp. Skutečné hodnoty Q E se zjišťují laboratorně, tj. nepříliš často, a protože je chceme předvídat v kterémkoliv okamžiku, pokusíme se jejich hodnotu vydolovat z datového skladu. Příslušnou závislost lze vyjádřit vztahem Q E = f(f, T, P, R, ) (1) kde f bude nejspíše lineární funkce. V takovém případě je možné závislost (1) zapsat konkrétně v podobě lineárního modelu Q Em = a + bf + ct + dp + er (2) přičemž Q Em je koncentrace získaná výpočtem podle modelu a parametry a až e lze získat aplikací vícenásobné lineární regrese. Takovýto přímočarý postup však má svá úskalí, protože je zjevné, že veličiny figurující na pravé straně modelu nejsou navzájem nezávislé. Při identifikaci modelu je tedy nutné postupovat obezřetně a celý postup rozdělit do několika kroků. V prvním kroku zjistíme, která z nezávislých veličin je nejvíce korelována s veličinou Q E. K tomuto účelu poskytuje Oracle analytickou funkci CORR, která vrací hodnotu korelačního koeficientu K pro specifikovanou dvojici veličin (sloupců tabulky). Ve druhém kroku pro dvojici veličin s největší hodnotou K vyhodnotíme parametry lineární regrese. V Oracle jsou k dispozici analytické funkce REGR_INTERCEPT, popř. REGR_SLOPE. K tomu lze ještě stanovit tzv. koeficient determinace K 2 (funkce REGR_R2). Předpokládejme, že výpočet R ukazuje na rozhodující vliv teploty T a že výsledek regrese je možné vyjádřit např. takto Q E,T = a 1 + c 1 T (3) V případě, že absolutní hodnota K je menší než 1 (tedy v praxi vždy), se ještě pokusíme vysvětlit odchylky lineárního modelu (3) od skutečnosti. Ve třetím a čtvrtém kroku tedy zopakujeme kroky 1 a 2, přičemž hodnotu nezávislé veličiny Q E zmenšíme o hodnotu předpovídanou výchozím lineárním modelem (2). Výsledek je možné zapsat takto Q E Q Em = a 2 + e 2 R (4) Budou-li hodnoty koeficientu determinace K 2 i nyní dostatečně významné, je možné výsledky kroků 1 až 4 zkombinovat do rovnice 104
Q E, T, R = a 1 + a 2 + c 1 T + e 2 R (5) V případě potřeby lze naznačeným způsobem dále pokračovat. Jakmile je právě popsaným způsobem kvantifikován vztah mezi veličinami modelu, lze daný model využívat k předpovědi kvality práce kolony v kterémkoliv okamžiku, aniž je třeba čekat na výsledek laboratorní analýzy. 7.5.8 Aplikace DS Aplikací DS máme na mysli službu uživateli, která mu opakovaně přetváří data v informaci. Datové sklady by měly představovat spolehlivý zdroj údajů pro posuzování chodu výroby. Příklady některých aplikací typických pro kontinuální výrobu jsou uvedeny na obr. 2. Samozřejmou podmínkou pro úspěšnost aplikací je jejich dokonalá integrace s DS. Obr. 2 Základem sledování funkce výrobních systémů jsou tzv. operační okna, což jsou oblasti, ve kterých se mají udržovat provozní veličiny. Oblasti mimo operační okna znamenají neoptimální nebo jinak nevhodný provoz. Hranice těchto oblastí mohou být konstantní, závislé na provozovaném režimu nebo dynamické, jako funkce jiných provozních veličin. Datové sklady umožňují vyhodnocovat chod výroby a upozorňovat na situace, kdy jsou hodnoty sledovaných provozních veličin mimo operační okna. Podobným způsobem je možné sledovat chod výroby i z dalších hledisek. Již zmíněný koncept Quality Estimation (QE) představuje modelování údajů o fyzikálněchemických vlastnostech produktů z jiných, snáze měřených veličin (teplot, tlaků atd. ve výrobním zařízení). Je tak možné nahradit řadu laboratorních stanovení, která bývají k dispozici pouze s malou frekvencí a jsou dost nákladná. Proto se o aplikacích QE také někdy hovoří jako o softwarových senzorech (software sensors). Podmínkou vzniku dobrých modelů pro QE jsou právě historická data z DS. 105