Warning
This page is located in archive.

Křivka učení

Křivka učení obvykle popisuje míru porozumění předmětné oblasti v závislosti na délce učení. Učíme-li se něco, pro co máme vlohy, co nám jde jaksi samo od sebe, je křivka učení strmá, neboli míra porozumění velmi rychle stoupne z 0% na téměř 100%. Pokud se naopak učíme něco, co nám vůbec nejde, bývá křivka učení pozvolná (roste jen pomalu) a může začít stagnovat, pokud jsme narazili na své limity.

Podobně je tomu i ve strojovém učení. Křivka učení zde představuje závislost prediktivní přesnosti modelu na velikosti trénovací sady (na počtu příkladů, které jsou předloženy k učení). Umožňuje posoudit, zda zvolený model datům dobře odpovídá, kolik dat je potřeba k dostatečně dobrému naučení modelu a zda se vyplatí ještě nějaká data do trénovací sady přidávat.

Jednoduchá křivka učení

Vytvořme proces:

  1. Na datovou sadu iris napojme operátor Process Control/Loop/Create Learning Curve. Tento operátor má podobně jako Split Validation a X-Validation 2 vnitřní procesy: jeden pro tvorbu modelu, druhý pro vyčíslení chyby modelu. Operátor funguje tak, že data rozdělí na trénovací a testovací část (podle parametru training_ratio). Následně iteruje tyto kroky:
    • Z trénovacích dat vezmi jistou část (start_fraction + iteration*step_fraction) a na ní nauč model.
    • Vypočti chybu modelu na testovacích datech (která jsou stejná přes všechny iterace).
  2. Operátor Create Learning Curve ale nemá žádný výstup! Data potřebná k vytvoření křivky učení je třeba posbírat “ručně”. Zařaďme na konec testovacího podprocesu (za operátor Performance) operátor Utility/Logging/Log. Tento operátor umožňuje (vždy když na něj přijde řada) uložit sadu parametrů procesu jako 1 řádek tabulky. Nastavme jej tak, aby ukládal:
    • z operátoru Create Learning Curve hodnotu (value) proměnné fraction a pojmenujme ji fraction
    • z operátoru Performance hodnotu (value) proměnné performance a pojmenujme ji performance.

Po spuštění procesu by v Results Perspective měla být záložka Log obsahující naměření data. Je možné ji zobrazit v Plot view.

Opakovaná měření

  • Operátor Loop
  • Log bude zaznamenávat Loop.iteration
  • Přidat Log to Data, aby byla přístupná volba Advanced Plots

Několik křivek učení v 1 grafu

  • Dosud náš model vypadal tak, že jsme na zdroj dat napojili operátor Loop, uvnitř něhož byl operátor Create Learning Curve, který v trénovací části obsahoval model (např. Decision Tree) a v testovací části se model aplikoval (Apply Model), vypočetla se jeho úspěšnost (Performance) a následně se úspěšnost, velikost trénovacích dat (fraction z LearningCurve operátoru) a iterace (iteration z Loop operátoru) ukládaly do logu. Log se v hlavním procesu následně převedl na datovou sadu, na níž bylo možné vytvořit křivku učení nástroji přístupnými pomocí přepínače Advanced Plots.
  • Abychom vytvořili několik křivek učení, je třeba nejprve nasbírat data z několika modelů. Do procesu tak zahrneme N Loop operátorů, každý z nich bude obsahovat jeden Create Learning Curve operátor, které se budou lišit především trénovací částí (tedy typem modelu). Testovací část bude stejná, tedy bude obsahovat operátory Apply model, Performance a Log.
  • POZOR! V operátoru Log je třeba vybrat proměnné z těch správných operátorů!!! Logy a performance jednotlivých modelů je také vhodné smysluplně (odlišně) pojmenovat.
  • Všech N vytvořených logů převedeme na datové sady operátory Log to Data (zde se budou hodit ta smysluplná jména).
  • Následně nově vzniklé datové sady spojíme pomocí operátorů (kaskády operátorů) Join, kde jako key attributes vybereme proměnné iteration a fraction. Vznikne nám tak nová datová sada obsahující proměnné iteration, fraction a úspěšnosti jednotlivých modelů. Prostřednictvím Advanced Plots pak snadno vytvoříme v jednom grafu několik křivek učení.
courses/a3m33ui/tutorial/rapidminer/3_krivka_uceni.txt · Last modified: 2013/10/04 13:02 (external edit)