Predikce
ilustrační applet


Funkce appletu

Applet byl vytvořen jako ilustrace k predikčním metodám. Umožňuje nadefinovat body a část těchto bodů předat jedné z predikčních metod, která z nich vypredikuje zbylé body. Jak vstup, tak výstup metody je přehledně zobrazován v grafu, pro přesnější srovnání slouží tabulka, která je zobrazována ve speciálním okně.
Applet byl navržen tak, aby bylo možno snadno přidávat další predikční metody, slouží tedy hlavně jako vstupně-výstupní zařízení pro metody, funkce dosud implementovaných metod je spíše ilustrativní. Pokud by měl někdo zájem použít tento applet pro svou predikční metodu či jiný účel, vytvořil jsem podrobný popis rozhraní a funkcí appletu. Je umožněno a připraveno i libovolné další nastavení metody pomocí vlastního okna.

Ovládání appletu

Zpracování nového vstupu textových políček se provádí po stisku klávesy Enter, nestačí tedy pouze změnit hodnotu, je nutno ji stiskem Enteru potvrdit. Pro kontrolu vstupu může sloužit graf, ve kterém se všechny změny zobrazují.
Jinak je ovládání intuitivní a doufám, že to zvládnete.

Definice bodů

Body je možno definovat přímo - zadáním posloupnosti hodnot, nebo definicí funkce a zadáním počtu bodů - body jsou pak vygenerovány z hodnot funkce (v lineárním rozložení v rozsahu -10 .. 10).

Při zadání bodů posloupností můžete do políčka psát hodnoty oddělené čárkou. Pokud body definujete opakovaně, jsou nové přidávány k bodům již definovaným. Též je možno všechny definované body zrušit a začít definovat znovu.

Funkce se zadává standardní implicitní definicí s jednou proměnnou x. Je umožněno použít operátory +, - , *, / a ^ (mocnina) a definované funkce: sin, cos, trunc (desetinná část parametru) a noise - pseudonáhodná funkce realizující "šum" vstupu.

Nastavení vstupů metody

Pro nastavení vstupu predikční metody slouží zadání počtu "učících" bodů - body, které jsou předány jako vstup metodě a počet vstupů, který udává z kolika předchozích hodnot má být další hodnota vypočítána - tato hodnota nemusí být u všech metod použita.
Některé metody mohou mít další parametry, které se nastavují ve speciálním okně metody před zahájením výpočtu (rozhraní pro rozšíření je opět připraveno). Při zobrazení tohoto okna je vstup appletu "zamčen", je tedy nutné nejprve okno potvrdit jedním z tlačítek, pak teprve lze pokračovat přímo v appletu.

Vlastní výpočet

Výpočet metody probíhá v separátním vlákně, je jej tedy možno pozastavit či úplně zastavit. Jednotlivé metody mohou v průběhu výpočtu předávat appletu mezivýsledky, a to buď průbežnou "chybu učení" - číselnou hodnotu, či přímo vypredikované body, ze kterých se vypočítává a zobrazuje chyba predikce a též je možné průbežné zobrazování v grafu.
Při přerušení či po dokončení výpočtu jsou výsledky opět předány appletu, zobrazeny v grafu a též je vytvořena (přepočtena) a zobrazena tabulka pro přesňější srovnání.
V InternetExploreru nejsou vždy políčka po změně hodnoty obnovovány, jak by měly být, takže je možné, že při delším výpočtu se applet bude zdát "zatuhlý", ale není to chyba appletu, ale prohlížeče.


Predikční metody

Applet zatím umožňuje predikci pomocí dvou statistických metod - lineární a goniometrické aproximace. Brzy budou implementovány i neronové sítě - skoro hotova je velmi zajímavá síť GMDH a pracuji též na implementaci sítě BackPropagation.
U aproximačních metod je možno vybrat z více typů. Proložení všech známých bodů jednou křivkou je vhodné, pokud rozložení bodů odpovídá aproximační funkci. Proložení předchozích bodů (poloha každého bodu se spočte z polohy všech předchozích bodů) je mírnou modifikací prvního typu, je spíše ilustrativní pro představu průběhu, pokud prokládané body získáváme postupně. Metoda třetí počítá polohu bodu z polohy několika předchozích bodů, zachytává tedy celkem přesně lokální změny, nelze však s její pomocí zjišťovat "vzdálenou budoucnost", tedy predikovat více bodů dopředu.

Lineární aproximace
Zadaná množina je aproximována lineární funkcí ve tvaru f(x) = a*x + b, kde parametry a, b jsou vypočítány tak, aby součet druhých mocnin chyb bodů (rozdíl zadaná - vypočtená hodnota) byl minimální, tedy metodou nejmenších čtverců.
Tato metoda je vhodná, pokud je vývoj predikované časové řady lineární (což není příliš častý případ), ale relativně slušné výsledky může mít i pro predikci další hodnoty z několika předchozích.

Goniometrická aproximace
Tato metoda je dle mého názoru pro predikci celkem vhodná, protože uvažuje jistou periodicitu v časové řadě. Problém je však výpočet libovolné kombinace goniometrických funkcí (soustavu rovnic nelze spočíst jinak než přibližnými metodami), proto byla zvolena funkce f(x) = a*sin(x) + b*cos(x) + c, kde koeficienty jsou opět určeny metodou nejmenších čtverců.
Problémem této implementace je nemožnost přizpůsobení se libovolné délce periody funkce.

Test predikce
Tato "metoda" byla přidána jen pro ilustraci možností appletu při delším výpočtu. Umožňuje vyzkoušet chování a funkce appletu pro neuronové sítě, protože výpočet neuronovou sítí může být velmi náročný a tedy i dlouhý.
Metoda pouze opakovaně (500x) náhodně generuje body v rozsahu vstupu, přičemž první a poslední bod zůstávají stále shodné - minimum a maximum.

Neuronové sítě
Značnou výhodou neuronových sítí je jejich schopnost přizpůsobení se. Jedna neuronová síť je po naučení schopna velmi dobře predikovat libovolné vývoje časové řady (realizovat libovolnou "aproximační funkci").