Využití fraktální dimenze na meteorologických datech
Transkript
Technická univerzita Košice Fakulta elektrotechniky a informatiky Využití fraktální analýzy na meteorologických datech Bakalářská práce 2013 Lenka Šloufová Technická univerzita Košice Fakulta elektrotechniky a informatiky Využití fraktální analýzy na meteorologických datech Bakalářská práce Studijní program: Inteligentné systémy Studijní obor: 9.2.7 Kybernetika Školící pracoviště:: Katedra umelej inteligencie (KKUI) Školitel: Ing. Rudolf Jakša, PhD. Konzultant: Košice 2013 Lenka Šloufová Abstrakt Tak jako mnoho jiných jevů reálného světa počasí vykazuje fraktální charakter. Metodou box-counting lze aproximovat hodnotu fraktální dimenze aktuálního časového průběhu sledovaných meteorologických veličin. Zkoumání takto získaných hodnot fraktální dimenze může sloužit jako dodatečná informace při předpovědi nadcházejícího průběhu hodnot meteorologických veličin. Klíčová slova Box-counting, fraktální dimenze, meteorologická data Abstract Weather, as many other phenomenons of real world, shows fractal character. By boxcounting method, it is possible to approximate fractal dimension of current progress of monitored meteorological quantities Examining such values of fractal dimension can serve as additional information prediction of upcoming values of meteorological quantities. Keywords Box-counting, fractal dimension, meteorological data Čestné prohlášení Prohlašuji, že jsem bakalářskou práci vypracovala samostatně s použitím uvedené odborné literatury. Košice, 24. 5. 2013 ........................... Vlastnoruční podpis Poděkování Chtěla bych srdečně poděkovat mému vedoucímu bakalářské práce Ing. Rudolfu Jakšovi, PhD., za nesčetné rady a připomínky. Dále bych chtěla poděkovat všem vyučujícím Technické univerzity v Košicích, za všechny vědomosti, o které se dělí se svými studenty. Na závěr bych chtěla také poděkovat učitelskému sboru Wichterlova gymnázia v Ostravě-Porubě, za to, že mě obdařili pevnými základy, na kterých se dalo během studia na vysoké škole stavět. Obsah Úvod 1 1 Formulace úlohy 2 2 Úvod do fraktální analýzy 3 3 Úvod do problematiky meteorologických dat 5 4 Návrh systému pro fraktalní analýzu meteorologických dat 6 5 Implementace navrženého systému 5.1 11 Výpočet fraktální dimenze obrázku . . . . . . . . . . . . . . . . . . . 11 6 Ověření aplikovatelnosti box-counting metody na vybraných meteorologických datech 6.1 13 Použití získaných hodnot fraktálních dimenzí při učení neuronové sítě 16 7 Závěr (zhodnocení řešení) 20 Použitá literatura 21 Seznam příloh 22 Příloha B 23 Příloha C 25 FEI KKUI Úvod Mým úkolem je navrhnout a realizovat systém, který by určoval fraktální dimenzi průběhu meteorologických veličin. Ačkoli existuje více softwarů, které jsou schopny vypočítat fraktální dimenzi z obrázku, jejich výstup není obvykle použitelný pro další hromadné zpracování dat. Napsala jsem tedy program, který vypočítá fraktální dimenzi obrázku v takové podobě, aby byla snadno dále zpracovatelná. Dále jsem napsala skript, který tento program využívá, jako ukázku zpracování dat z meteostanice, výpočet fraktální dimenze z těchto dat a jejich další využití při trénování neuronové sítě. 1 FEI 1 KKUI Formulace úlohy Zadáním této bakalářské práce byly následující body: 1. Úvod do fraktální analýzy. 2. Úvod do problematiky meteorologických dat. 3. Návrh systému pro fraktální analýzu meteorologických dat. 4. Implementace navrženého systému. 5. Ověření aplikovatelnosti metody box-counting na vybraných meteorologických datech Jejich vypracování je následující: ∙ Fraktální analýza je řešena v kapitole 2. ∙ Problematikou meteorologických dat se zabývá kapitola 3. ∙ Popis návrhu systému je v kapitole 4. ∙ Popis implementace navrženého systému je v kapitole 5. ∙ Ověřením aplikovatelnosti metody box-counting se zabývá kapitola 6. 2 FEI 2 KKUI Úvod do fraktální analýzy Pro pochopení fraktální analýzy je potřebné nejprve proniknout do základů fraktální geometrie. Toto relativně mladé odvětví matematiky bylo oficiálně založeno B. B. Mandelbrotem v 70. letech minulého století, avšak jeho kořeny sahají podle (Zelinka, Včelař a Čandík, 2006) až do konce století předminulého. Mějme pomyslnou sněhovou vločku. Můžeme zkoumat její strukturu, určit její hmotnost, měřit elektrickou vodivost a budeme dostávat vcelku uspokojující výsledky. Pokud se nicméně rozhodneme, že chceme změřit její obvod, zjistíme, že je závislý na měřítku. Tento fakt je dán skutečností, že sněhová vločka, stejně jako mnoho jiných přírodních útvarů, vykazuje fraktální charakter. Pokud bychom zvětšili malou část naší vločky, dostaneme útvar, který se podobá části původní vločky bez zvětšení. Přírodní fraktály sice mají své limitní hodnoty, nicméně u matematických fraktálů je jakýkoli výřez přesnou zmenšenou kopií původního útvaru, čímž by obvod takovéto matematické sněhové vločky se stále se zmenšujícím měřítkem neustále narůstal. Pro popis útvarů tohoto typu se využívá Hausdorffova-Besicovicova dimenze, též nazývaná fraktální dimenze, která má tu vlastnost, že pro objekty fraktálního charakteru nabývá hodnost ostře větších, než je hodnota jejich topologické dimenze, přičemž nemusí být celočíselná. Je vyjádřena vztahem: 𝑑𝑘 = lim 𝜀→0 ln 𝑁 (𝜀) ln (︁ )︁ 1 𝜀 = lim 𝜀→0 log 𝑁 (𝜀) log (︁ )︁ 1 𝜀 , (2.1) kde 𝜀 je v literatuře uváděno jako měřítko a 𝑁 (𝜀) je nejmenší počet objektů (například v rovině čtverců) o hraně 𝜀, potřebných na pokrytí celého původního objektu. V praxi to pak znamená, že pokud máme například jednotkový čtverec, a ten zvětšíme dvakrát, za 𝜀 tedy dosadíme 21 , pak na pokrytí celého původního čtverce potřebujeme 𝑁 ( 12 ) = 4 čtverců, jak je vidět na Obrázku 2 – 1. 3 FEI KKUI Obrázek 2 – 1 Rozdělení čtverce při 𝜀 = 1 2 pro výpočet jeho fraktální dimenze. Dostaneme tedy: 𝑑𝑘 = ln 4 (︂ )︂ ln 1 = ln 22 ln 2 =2 = 2. ln 2 ln 2 (2.2) 1 2 Jelikož každý takto vzniklý čtverec je přesnou zmenšenou kopií původního čtverce, bude výsledek stejný pro libovolné zvětšení, avšak při vyšetřování obecných dat nelze limitu 𝜀 → 0 zanedbat. Při zjišťování fraktální dimenze z obrázku se využívá metoda nazývaná box-counting, která pokrývá analyzovaný útvar „krabicemi“ o různé velikosti. Jejich počet a velikost se poté dosadí do vztahu 2.1. Takto vypočítaná krabicová dimenze se poté používá jako vhodná aproximace fraktální dimenze. 4 FEI 3 KKUI Úvod do problematiky meteorologických dat Počasí bylo v zájmu lidské pozornosti už od nepaměti. Zaznamenání pozorovaných dat pak může sloužit jako zdroj informací, jaký může být nadcházející průběh meteorologických veličin, pokud známe vývoj do současného stavu. Tím se dá například rozeznat přicházející povodňová aktivita nebo vhodně naplánovat setba a sklizeň. Průběh těchto veličin má tendenci se do jisté míry v různých intervalech opakovat. Tyto intervaly můžou být ať už v rámci jednoho dne, několika dnů až týdnů podle pohybu teplých a studených front, nebo potom v rámci roku, několikaletých chladnějších a teplejších obdobích, respektive i střídání dob ledových a meziledových, ačkoli to je už pro nás těžko monitorovatelné, má tendenci vykazovat podobný charakter v rozdílech teplot jako střídání noci a dne, jen tedy samozřejmě v jiném měřítku. Díky těmto střídavě stoupajícím a klesajícím tendencím v různých časových i hodnotových měřítkách se tedy i o časovém průběhu meteorologických veličin dá uvažovat jako o fraktálu. Meteorologická data, použitá pro experimenty v této práci, byla stažena ze stránky <http://neuron.tuke.sk/adamcak/0/data/>. Tyto data zachycují průběh jednotlivých veličin, měřených v oblasti ÚVT, Boženy Němcovej 3, Košice, v období od června 2011 do března 2013. Neumožňují tedy zkoumání fraktální struktury meteorologických dat z dlouhodobějšího hlediska, přesto však jsou pro potřeby této práce dostačující. Podrobný popis jejich získávání a zpracování je v (Adamčák, 2012). Data mají intervaly měření 15 minut. Celkově obsahují hodnoty mnoha měřených veličin, avšak v této práci byla zpracovávána z časových důvodů pouze teplota. 5 FEI 4 KKUI Návrh systému pro fraktalní analýzu meteorologických dat Systém byl navrhnut tak, aby byl schopen zpracovávat data, jejichž zdroj je uveden v kapitole 3. Celkový proces zpracování meteorologických dat je stručně vyobrazen na Obrázku 4 – 1. Úloha byla dále rozdělena na dvě dílčí části, a to převedení dat do formy obrázku a samostatný výpočet fraktální dimenze obrázku. Pro získání fraktální dimenze meteorologických dat bylo nejprve třeba vytvořit systém, který by ve vhodné podobě vypočítával fraktální dimenzi obrázků. Pro snadnou zpracovatelnost byl zvolen formát obrázků plain pbm, kde každému pixelu odpovídá v závislosti na barvě ASCII znak 0 pro bílou, nebo 1 pro černou barvu. (Přesný popis viz (The PBM format, 2006).) Výsledný program byl napsán v jazyku C a stručný popis jeho funkce je na Obrázku 4 – 2. Podle informací v hlavičce vstupního pbm souboru je vytvořeno dvourozměrné pole, do kterého se postupně zapisují barvy jednotlivých bodů. Poté je toto pole rozděleno na části, přičemž se začíná u zvětšení s hodnou 2, tedy celý obrázek je rozdělen na 4 části. Každá z těchto částí je poté bod po bodu zkontrolována, jestli obsahuje černé body. Pokud ano, znamená to, že je součástí obrazce, jehož fraktální dimenzi chceme vypočítat, a v takovém případě se zvýší počet doposud nalezených částí, které obrazec pokrývají, o jedna. Jakmile jsou všechny části zkontrolovány, pokud je počet částí, které obsahují část obrazce, větší než 0, vypočítá se dle vztahu 2.1 hodnota krabicové dimenze, ta se zapíše do pomocné proměnné, a proces se opakuje pro zvětšení dvakrát větší, než předchozí. Pokud je počet částí, které obsahují část obrazce, roven 0, znamená to buďto, že se jedná o čistě bílý obrázek, tedy hodnota fraktální dimenze černého obrazce je též rovna nule, anebo je dané zvětšení natolik velké, že jednotlivé části jsou menší než jeden bod. V takovém případě už nelze 6 FEI KKUI Data Převedení dat do formy obrázku Rozdělení obrázku na jednotlivé části Spočítání těch částí, které obsahují část obrazce (nejsou prázdné) Dosazení do vzorce Vypočítaná fraktální dimenze Obrázek 4 – 1 Blokové schéma procesu výpočtu fraktální dimenze. měřítko nadále zvětšovat a jako výstup z programu se vrátí hodnota, získaná pro předchozí zvětšení, jako nejbližší získaná aproximace fraktální dimenze. Pokud však chceme použít tento postup na data, je potřeba nejdříve z nich udělat obrázek. Pro tento účel slouží skripty napsané v perlu, který vždy z dat za jeden den vytvoří obrázek, pro ten nechá spočítat jeho hodnotu fraktální dimenze a tuto 7 FEI KKUI Start Načti obrázek Zapamatuj si hodnotu pro předchozí zvětšení. Vypočítej hodnotu pro zvětšení dvakrát větší než předchozí. Ano Je nová hodnota validní? Ne Fraktální dimenze = hodnota vypočítaná z předchozího zvětšení Konec Obrázek 4 – 2 Vývojový diagram programu na výpočet fraktální dimenze z pbm obrázku. hodnotu pak zapíše do souboru. Skripty v příloze této bakalářské práce byly určeny k vytvoření souborů, vhodných jako trénovací, resp. testovací množina pro Stuttgartský simulátor neuronových sítí (Stuttgart Neural Network Simulator, dále SNNS.) Přibližný vývojový diagram funkce toho skriptu je na Obrázku 4 – 3. Skripty používají posledních 100 hodnot, což vzhledem k tomu, že použitá data, 8 FEI KKUI Start Načti data Načti další naměřenou teplotu. Z posledních x hodnot vytvor .pbm obrázek. Nech vypočítat fraktální dimenzi daného obrázku a spolu s odpovídajícími daty je zapiš ve vhodné formě do příslušných souborů. Ne Jsou zpracována všechna data? Ano Konec Obrázek 4 – 3 Vývojový diagram skriptu na zpracování většího množství dat a určení fraktální dimenze pro dané časové okno. mají periodu 15 minut, odpovídá 25 hodinám. Ačkoli by zpracování delších časových úseků, ať už v rozmezí více dnů, několika týdnů, nebo dokonce roku, mohlo přinést také zajímavé výsledky, z časových důvodů bylo od zpracování delších časových úseků v průběhu této bakalářské práce upuštěno, neboť zpracování takového skriptu se ukázalo příliš časově náročné. 9 FEI KKUI Skripty také vyhodnocují data až po dosažení dat druhého dne v daném měsíci a nenavazují měsíce na sebe. Tím je sice vypuštěno několik údajů, ze statistického pohledu je však toto vypuštění zanedbatelné. Tento krok slouží k tomu, aby nedocházelo k chybným vzorům v souboru. To by se mohlo stát například v případě, ze pořadí názvů datových souborů neodpovídá jejich skutečnému chronologickému pořadí. 10 FEI 5 KKUI Implementace navrženého systému Pro jednoduchou zjistitelnost správnosti výpočtu byl program napsán pro výpočet fraktální dimenze obrázku pomocí metody box-counting. Po vzoru programu HarFA, viz (Zmeškal et al., 2001), se v programu počítají hodnoty dimenzí pro části vstupního obrázku čistě bílé, čistě černé, obsahující jak bílou tak černou, obsahující bílou a obsahující černou, ačkoli z praktických důvodů program v současné době vrací jako výstup pouze hodnotu dimenze pro části obrázku obsahující černou. 5.1 Výpočet fraktální dimenze obrázku Program byl nejprve testován na obrázcích známých fraktálů, konkrétně Kochovy křivky a Sierpinského trojúhelníku. Pro výpočet dimenze Kochovy křivky byla použita pbm varianta Obrázku 5 – 1. Obrázek 5 – 1 Kochova křivka. Původní velikost 1000×500 pixelů. Zatímco matematicky vypočítaná fraktální dimenze Kochovy křivky je rovna ln 4 ln 3 . = 1, 261860, dimenze vypočítaná programem je 1,365323. Při výpočtu dimenze Sierpinského trojúhelníku byla použita pbm varianta Obrázku 5 – 2. 11 FEI KKUI Obrázek 5 – 2 Sierpinského trojúhelník. Původní velikost 1024×1024 pixelů. Pro Sierpinského trojúhelník je hodnota fraktální dimenze rovna ln 3 ln 2 . = 1, 584963, dimenze vypočítaná programem je 1,584963. Rozdíl v přesnosti výsledků je dán podobou dat. Použitý obrázek Sierpinského trojúhelníku je totiž ideálním zobrazením tohoto fraktálu pro počítačové výpočty, neboť pro velikost měřítka 2 se útvar nachází ve 3 částech, přičemž každá tato část znovu odpovídá Sierpinskému trojúhelníku, a to až do úrovně jednotlivých bodů. 12 FEI 6 KKUI Ověření aplikovatelnosti box-counting metody na vybraných meteorologických datech Nejjednodušším způsobem, jak zjistit fraktální dimenzi z dat, je převést tyto data do podoby obrázku. Nastává ovšem problém, jaké mají být rozměry obrázku. Zatímco u dat, která mají dostatečný rozptyl hodnot, se jako vhodné řešení jeví jeden rozměr na základě délky časového okna, ze kterého data pocházejí, a druhý rozměr odpovídající rozptylu hodnot v daném časovém úseku, pro hodnoty, jejichž rozptyl je v příliš malém intervalu, je takovéto řešení nepoužitelné. Názorně to ukazuje Obrázek 6 – 1. Obrázek 6 – 1 Průběh teploty převedený do podoby obrázku, dva různé dny. Čas přibývá ve směru shora dolů, velikost teploty roste ve směru zleva doprava. Ukázka možných výsledků při převedení dat do formy obrázku pomocí skriptu skript_v1. (Zvětšeno z původní výšky 100 pixelů.) V obou případech byly obrázky vygenerovány skriptem v jazyce Perl, obdobným tomu, který je v příloze na CD médiu jako skript_v1, ze souboru TUKE_2013_1, který se rovněž nachází na přiloženém CD médiu, pouze místo celého souboru byl pro obrázek vlevo zpracován jen případ pro $i=417 a u obrázku vpravo pak pro $i=2238. Výška obou původních obrázků byla 100 pixelů a je dána počtem údajů, ze kterých se výsledná dimenze počítá. Šířka je pak dána rozsahem hodnot v daném časovém intervalu. Jedná se tedy o průběh teploty v daném období, otočený o 90 stupňů. Otočení je dáno způsobem, jakým se obrázky tvoří. Zatímco Obrázek 6 – 1 vlevo má v originální velikosti šířku 39 pixelů a vypočítanou 13 FEI KKUI hodnotu fraktální dimenze 1,356272, Obrázek 6 – 1 vpravo má díky své šířce v originální velikosti pouhých 6 pixelů vypočítanou fraktální dimenzi rovnu 2. V takovéto formě lze tedy metodu box-counting použít pouze na data, jejichž hodnoty jsou z dostatečně velkého intervalu. Jedním z možných řešení je rozšíření obrázku zvětšením měřítka pro šířku ve smyslu skriptu skript_v2, jak ukazuje Obrázek 6 – 2. Obrázek 6 – 2 Ukázka možných výsledků při převedení dat do formy obrázku pomocí skriptu skript_v2. (Zvětšeno z původní výšky 100 pixelů.) Jedná se o stejná data, jaká jsou zpracována na Obrázku 6 – 1. Šířka je u tohoto řešení pětinásobkem velikosti intervalu, ve kterém se hodnoty nachází, přičemž černě jsou zbarveny ty body, jimž odpovídající hodnota se od naměřené teploty liší nanejvýš o 0,1 stejně jako v předchozím případě. Takto vychází fraktální dimenze 1,521547 pro Obrázek 6 – 2 vlevo a 1,729716 pro Obrázek 6 – 2 vpravo. Jiným řešením je přidání volného místa, jak je tomu u skriptu skript_v3. Výsledné obrázky opět pro stejná data jsou na Obrázku 6 – 3. V tomto případě šířka zpracovávaného obrázku odpovídá trojnásobku rozsahu hodnot. Při určování fraktální dimenze dostaneme tentokrát hodnoty 0,972148 pro Obrázek 6 – 3 vlevo a 1,626949 pro Obrázek 6 – 3 vpravo. Posledním zkoumaným řešením je kombinace předchozích dvou variant, která je 14 FEI KKUI Obrázek 6 – 3 Ukázka možných výsledků při převedení dat do formy obrázku pomocí skriptu skript_v3. (Zvětšeno z původní výšky 100 pixelů.) použita u skriptu skript_v4. Výsledné obrázky jsou na Obrázku 6 – 4. Obrázek 6 – 4 Ukázka možných výsledků při převedení dat do formy obrázku pomocí skriptu skript_v4. (Zvětšeno z původní výšky 100 pixelů.) Při tomto řešení je šířka obrázků devítinásobkem intervalu, ve kterém se nachází naměřené hodnoty. Pro Obrázek 6 – 4 vlevo vychází fraktální dimenze na 1,395840, pro Obrázek 6 – 4 vpravo je to pak 1,419606. Ve všech třech případech se jistě jedná o lepší řešení pro data s malým rozptylem hodnot, než jakým je původní varianta vytvořená skriptem skript_v1, avšak odhadnout, které řešení je nejpřesnější, je velmi obtížné, jelikož zde na rozdíl od obrázků známých fraktálů správné hodnoty fraktálních dimenzí nepoznáme. 15 FEI 6.1 KKUI Použití získaných hodnot fraktálních dimenzí při učení neuronové sítě Původním předpokladem bylo, že by hodnota fraktální dimenze mohla sloužit jako dodatečný vstup pro neuronovou síť, která by měla predikovat nadcházející vývoj meteorologických veličin, respektive ve zkoumaném případě teploty. K tomuto účelu byl použit již dříve zmiňovaný program SNNS. Při pokusu o realizaci daného pokusu se však vyskytlo několik problémů. Jelikož skripty v této práci generují čistě jen vzorky do .pat souborů, určených pro trénování simulované neuronové sítě, bylo výsledné soubory potřeba ručně upravit do vhodné podoby. Podle vzorových souborů, které jsou součástí programu SNNS při stažení, byly vytvořené soubory opatřeny hlavičkou s počtem vzorů a vstupních a výstupních neuronů. Tímto způsobem se podařilo převést do formy čitelné pro program SNNS soubory, vygenerované z dat z jednoho měsíce, nicméně při pokusu vytvořit trénovací nebo testovací množinu z hodnot z celého roku program SNNS hlásil chybu za posledním řádkem souboru. Parse error in pattern file at line 329246: to little values in pattern Co tato chyba přesně vyjadřuje ani proč se nacházela na 329246. řádku souboru, který měl 329245 řádků, se nepodařilo objasnit, nicméně je pravděpodobné, že chyba vznikla někde při zpracování příliš velkého souboru dat, nebo že program SNNS má problémy s načítáním takto velkých souborů. V dalším testu tedy byly použity soubory, vygenerované pomocí skriptů skript_v2 až skript_v4 pouze z dat v souboru TUKE_2013_1. Při učení byly pro soubory získané všemi metodami použity stejné podmínky: 16 FEI KKUI ∙ Postupně byly vyzkoušeny dvě topologie: jedna bez skryté vrstvy a druhá se šesti neurony ve skryté vrstvě. ∙ Inicializací vah sítě byly vždy náhodná čísla z intervalu (-0,1;0,1). ∙ Jako učící funkce byla vždy vybrána funkce Std_Backpropagation. ∙ Učící parametry byly ponechány na 0,2 a 0. ∙ Počet cyklů byl 10000. Jediný rozdíl byl při síti, která se učila z dat bez hodnoty fraktálních dimenzí, která měla na vstupu 24 neuronů, do kterých přicházely jako vstupy teploty za posledních 24 hodin v hodinovém intervalu. U zbylých sítí bylo na vstupu 25 neuronů, kde prvnímu neuronu přicházela jako vstup hodnota fraktální dimenze za posledních 25 hodin a zbývající neurony dostávaly stejné vstupy, jak sít učící se z dat bez hodnoty fraktální dimenze. U všech třech metod se však hodnoty chyby MSE po 10000 iteracích lišily pouze nepatrně a nebyly ani výrazně odlišné od hodnot chyby MSE sítě, která nevyužívala hodnotu fraktální dimenze. Konkrétní hodnoty jsou uvedeny v Tabulce 6 – 1. Tabulka 6 – 1 Výsledky chyby MSE z trénovacích a testovacích množin vytvořených jednotlivými skripty ze souboru TUKE_2013_1 po 10000 iteracích. Síť bez skryté vrstvy Síť se skrytou vrstvou Typ učících dat Trénovací mn.Testovací mn. Trénovací mn.Testovací mn. s FD, skript_v2 10,80842 10,79024 10,80512 10,77475 s FD, skript_v3 10,80833 10,79058 10,80615 10,77446 s FD, skript_v4 10,80845 10,79022 10,80502 10,77407 bez FD 10,80849 10,79006 10,80749 (pozn.: FD = hodnota fraktální dimenze.) 10,77612 Při učení sítí bez skrytých vrstev se hodnoty vah lišily jen nepatrně. Jejich srovnání 17 FEI KKUI je na Obrázku 6 – 5. U sítí se skrytou vrstvou už byly rozdíly větší, jak ukazuje Obrázek 6 – 6. Obrázek 6 – 5 Srovnání vah ze vstupních neuronů do výstupního u neuronových sítí bez skryté vrstvy z vizualizace vah v programu SNNS. Červeně jsou označeny záporné hodnoty, zeleně kladné, modře hodnoty blízké nule. Shora: síť s hodnotami fraktálních dimenzí metodou skriptu skript_2, síť s hodnotami fraktálních dimenzí metodou skriptu skript_3, síť s hodnotami fraktálních dimenzí metodou skriptu skript_4, síť bez hodnot fraktální dimenze. Obrázek 6 – 6 Srovnání vah ze vstupních neuronů do výstupního u neuronových sítí se skrytou vrstvou z vizualizace vah v programu SNNS. Červeně jsou označeny záporné hodnoty, zeleně kladné, modře hodnoty blízké nule. Pořadí sítí je obdobné jako na Obrázku 6 – 5 . Dá se tedy předpokládat, že při nalezení vhodnější topologie sítě, nebo při zpracování 18 FEI KKUI většího množství dat, by se význam fraktální dimenze při učení neuronové sítě pro predikci teploty, respektive i jiných meteorologických veličin, mohl projevit lépe, avšak to už není předmětem této bakalářské práce. 19 FEI 7 KKUI Závěr (zhodnocení řešení) Naprogramovaný systém dokáže uspokojivě aproximovat hodnoty fraktální dimenze pro obrázky některých známých fraktálů, nicméně jeho spolehlivost se ukazuje býti silně závislá na poskytnutých datech. Při fraktální analýze průběhu teploty neznáme optimální metodu převodu dat z meteostanice do podoby obrázků. Navrhla jsem několik suboptimálních metod, jejich spolehlivost se však nepodařilo s jistotou určit. Při pokusu předložit hodnotu fraktální dimenze jako dodatečný vstup pro neuronovou síť se u žádné z metod neprojevil výrazný rozdíl oproti ostatním metodám, ani oproti síti bez hodnoty fraktální dimenze, což může být způsobeno nedostatečným množstvím dat. 20 FEI KKUI Reference ZELINKA, I. – VČELAŘ, F. – ČANDÍK, M. 2006. Fraktální geometrie – principy a aplikace. Praha : BEN – technická literatura, 2006. 160 s. ISBN 80-7300-191-8 ZMEŠKAL, O. et al. 2001. Fractal Analysis of Image Structures. In HarFA e-journal [online]. [cit. 30.5.2013]. Dostupné na internetu: <http://www.fch.vutbr.cz/ lectures/imagesci/download_ejournal/01_O.Zmeskal.pdf>. The PBM format [online]. Aktualizováno 22.9.2006 [cit. 30.5.2013]. Dostupné na internetu: <http://netpbm.sourceforge.net/doc/pbm.html>. ADAMČÁK, J. 2012. Predikcia počasia s využitím neurónových sietí. Diplomová práca. Košice: Technická univerzita v Košiciach, Fakulta elektrotechniky a informatiky, 2012. 57 s. Dostupné na internetu: <http://neuron.tuke.sk/adamcak/ theses/Adamcak-Jaksa-MS-thesis-2012.pdf>. 21 Seznam příloh Příloha A CD médium - bakalářská práce v elektronické podobě, přílohy v elektronické podobě Příloha B Uživatelská příručka Příloha C Systémová příručka FEI KKUI Příloha B Uživatelská příručka Upozornění: Veškeré zdrojové kódy a skripty byly vypracovávány na operačním systému Linux, distribuce Ubuntu 13.041 . Pro zkompilování zdrojového kódu programu pbmBoxCounter byl použit GNU C compiler, skripty pak byly napsány v jazyce Perl a předpokládají využití GNU Bourne Again SHell-u. Systém nebyl testován na žádném jiném operačním systému. Za problémy s kompatibilitou v rámci využití jiných softwarových zdrojů autorka práce neručí. Základní program - pbmBoxCounter Program je potřeba nejprve zkompilovat příkazem: gcc pbmBoxCounter*.c -lm Přičemž symbol * zastupuje konkrétní verzi programu. Lze tedy přímo použít například i příkaz: gcc pbmBoxCounter0.1.2.c -lm Pro spuštění programu v takovémto případě bude potom sloužit příkaz ve tvaru ./a.out <název souboru> kde argumentem musí být název souboru ve formátu plain pbm, jehož fraktální dimenze se má vypočítat. 1 Verze v době dokončení práce. Během vypracovávání práce bylo postupně využito více verzí systému Ubuntu Linux. 23 FEI KKUI Jedním z možných způsobů pro jednoduchý převod obrázku do tohoto formátu je otevřít původní obrázek programem GIMP a exportovat do obrázku pbm, přičemž je třeba zvolit ASCII formátování dat. Doplňující skripty - skript_v1 až skript_v4 Skripty se spouštějí z terminálu příkazem ve tvaru: perl skript_v1 Pro skripty skript_v2 až skript_v4 se pouze změní název. Skripty během svého běhu vytvářejí pomocný soubor temp.pbm, do kterého přepisují právě zpracovávaná data do formy obrázku a posílají ho na zpracování výše zmíněnému programu pbmBoxCounter. Skripty vytvoří soubory ttest.pat a ttrain.pat, do kterých se zapisují vzorky bez hodnoty fraktální dimenze, a fttest.pat a fttrain.pat, do kterých se zapisují vzorky s hodnotou fraktální dimenze. Aby bylo možné tyto soubory načíst do programu SNNS, je však ještě třeba tyto soubory ještě ručně doplnit hlavičkou, například SNNS pattern definition file V3.2 generated at Mon May 27 09:08:50 2013 No. of patterns : 575 No. of input units : 25 No. of output units : 1 s tím, že počet vzorů a vstupních a výstupních neuronů musí odpovídat. Jelikož skripty používají stejné soubory, je třeba, aby byly vykonávány v rozdílných složkách. 24 FEI KKUI Příloha C Systémová příručka Základní program - pbmBoxCounter Program byl napsán v jazyce C a zkompilován pomocí GNU C compiler-u na operačním systému Linux. Hlavní tělo programu načte obrázek podle argumentu, který mu byt zadán při spuštění, a převede ho do proměnné data, což je struktura typu ANALYSED, jejíž popis je níže. Dále posílá data do funkce test, která vypočítá hodnoty jednotlivých dimenzí a zapíše je do pomocné proměnné vysledky. Tato proměnná je strukturou typu HODNOTY a byla původně určena k uchovávání různých typů dimenzí, nicméně v současnou chvíli se dále nevyužívá, jelikož funkce test byla upravena k tomu, aby přímo vracela jako svou návratovou hodnotu vypočítanou fraktální dimenzi pro části obrázku, obsahující černou barvu. V cyklu se tyto hodnoty posílají na testování se zvyšujícími mocninami dvou, dokud výsledek není neplatný, poté se vypíše hodnota z předchozí iterace. Popis jednotlivých struktur: ANALYSED Struktura, do níž je převeden zpracovávaný obrázek a jeho části pro snadnou manipulaci s daty. Obsahuje dvě proměnné typu int, vyska pro výšku obrázku a sirka pro jeho šířku pixelech. Další proměnnou je pole, což je dvourozměrné pole typu BARVA, ve kterém jsou hodnoty jednotlivých bodů. Typ BARVA byl vytvořen pro snazší orientaci a může nabývat hodnot cerna nebo bila. HODNOTY Struktura na uchovávání hodnoty jednotlivých dimenzí. Obsahuje pět 25 FEI KKUI proměnných typu double pro jednotlivé dimenze: b pro černé části, w pro bílé části, bw pro části obsahující černou i bílou, wbw pro části, které obsahují bílou, bbw pro části, které obsahují černou. Také obsahuje proměnnou r, která je typu int a uchovává se do ní informace, na kolik částí byl obrázek rozdělen2 . Popis jednotlivých funkcí: box Na vstupu má proměnnou typu ANALYSED, což je analyzovaná část obrázku. Na výstupu vrací 0 pokud jsou všechny body dané části obrázku černé, 1 pokud jsou všechny body bílé, 2 pokud daná část obrázku obsahuje černé i bílé body. priprava Pomocná funkce na alokování paměti pro dvourozměrné pole typu BARVA. Na vstupu je žádaná výška a šířka daného pole, na výstupu je pak směrník na alokované pole. cistka Pomocná funkce pro uvolnění paměti, kterou zabíralo dvourozměrné pole typu BARVA, jakmile už toho pole neplánujeme dále využívat. Funkce nemá návratovou hodnotu, na vstupu je směrník na pole, které chceme uvolnit, a proměnná typu int, ve které je výška daného pole. prekopiruj Tato funkce má na vstupu směrník na strukturu typu ANALYSED a tři proměnné typu int, které postupně znamenají souřadnice y a x, odkud se má vytvořit kopie, a číslo značící jakou část původních rozměrů má mít nový obrázek. Jako výstup vrací směrník na překopírovanou část obrázku. test Funkce která s pomocí výše uvedených funkcí počítá fraktální dimenze. Na vstupu má směrník na strukturu, pro kterou chceme vypočítat fraktální dimenzi, hodnotu počtu rozdělení v jednotlivých rozměrech a směrník na strukturu typu HODNOTY, do které se jednotlivé hodnoty fraktálních dimenzí zapíší. Jako výstup má tato funkce hodnotu fraktální dimenze pro části obrázku obsahující černou. 2 Toto rozdělení je myšleno v každém rozměru, celkový počet částí je tedy r2 . 26 FEI KKUI Doplňující skripty - skript_v1 až skript_v4 Všechny skripty mají obdobnou strukturu, liší se pouze počtem hodnot, které zapisují do pomocného souboru temp.pbm, ve smyslu kapitoly 6. Ve složce, ve které jsou spuštěné, si nechají vypsat všechny názvy souborů začínající na TUKE_. Poté pro jednotlivé soubory načtou jejich obsah, pro přehlednost vypíší, který soubor právě začaly zpracovávat, a hodnotu třetího sloupce v každém řádku, což odpovídá teplotě, přidají do pole hodnot, se kterými pracují. Jakmile má toto pole alespoň sto hodnot, z těchto hodnot se vytvoří obrázek temp.pbm. Tento obrázek je poté poslán jako argument souboru a.out, což je zkompilovaný program pbmBoxCounter popsaný výše. Hodnota fraktální dimenze je zapsána do pomocné proměnné, a poté jsou tyto hodnoty spolu s hodnotami za každou hodinu v posledních 24 hodinách zapsány do souborů ttrain.pat a fttrain.pat, respektive ttest.pat a fttest.pat. Do souborů ttest.pat a fttest.pat se zapisuje každý pátý vzorek, do souborů ttrain.pat a fttrain.pat potom všechny ostatní. Soubory fttest.pat a fttrain.pat obsahují i hodnoty fraktálních dimenzí, zatímco soubory ttest.pat a ttrain.pat je neobsahují. Další zpracování pak zahrnovalo ruční doplnění hlavičky a použití takto upravených souborů v programu SNNS. 27
Podobné dokumenty
Stručná historie fraktální geometrie
připomnělo matematickou konstrukci Cantorova diskontinua. Podruhé se
s takovou „soběpodobností“ setkal při studiu kolísání cen na trhu, kde si
jejich krátkodobý a dlouhodobý průběh byly nápadně pod...
Počítačové metody analýzy fraktálních množin
5.3.Program pro generování IFS fraktálů a měření jejich dimenze..............................................59
elmag.org - Katedra elektromagnetického pole
elektromagnetického pole. Tyto práce jsou určeny pro libovolnou formu výstupu odpovídající
nejrůznějším projektům dále diplomové, nebo bakalářské práci. Odpovídající forma a
náročnost zadání bude p...
Stáhnout aktuální číslo v nízkém rozlišení vhodném pro prohlížení i
t?eba pokládat za state?né lidi.
Trasa m??ila jako ka?doro?n? necelou stovku kilometr?
a vedla z centra Tábora p?es Jistebnici a dlouhý okruh
malebnými postranními silni?kami a? do táborského
p?edm...
formátu PDF
Krátké příklady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Minimovka Lucia K - Conference system
shodně vymezen během celého sledovaného období. Ve třicátých letech dvacátého století se
Ralph Nelson Elliott zabýval podrobným studiem cenových grafů akciových indexů a
uvědomil si, že se ceny poh...