Umělá inteligence
Obsah Soubory
markdown

Linearni-regrese.md

5.3 kB 103 řádků Změněno Zobrazit na GitHubu Stáhnout
markdown
# Lineární regrese Lineární regrese je jediná metoda v téhle wiki, která má **řešení v uzavřeném tvaru**. Nic se neiteruje, nic nekonverguje, nic nezávisí na náhodné inicializaci. Vyřešíš soustavu dvou rovnic a máš přesnou odpověď. Proto se s ní začíná a proto stojí za to ji umět spočítat ručně - je to jediná příležitost vidět, jak vypadá optimalizace, u které si můžeš výsledek ověřit na papíře. Tahle stránka ukazuje model, metodu nejmenších čtverců a spočítá jeden příklad úplně. Předpokládá to [klasifikaci a rozpoznávání](Klasifikace-a-rozpoznavani) jen kvůli zařazení - regrese patří mezi metody učení s učitelem, ale nepředpovídá třídu, nýbrž **spojitou hodnotu**. ## Model Cílem je predikovat spojitou hodnotu `y` na základě vstupních hodnot `x`: ```y = ax + b (+ ε)``` To `ε` na konci je **chyba měření** a je to nejdůležitější symbol v celé rovnici. Říká, že body neleží na přímce a ani se to nečeká. Kdyby ležely, není co počítat. Rozdíl proti [klasifikaci](Klasifikace-a-rozpoznavani) je v tom, co je výstupem. Klasifikátor vrací **třídu** z konečné množiny. Regrese vrací **číslo** ze spojitého rozsahu. Tomu odpovídá i chybová funkce - u klasifikace počítáš, kolikrát ses trefil, u regrese o kolik jsi vedle. ## Metoda nejmenších čtverců Minimalizujeme součet čtverců reziduí, tedy svislých odchylek bodů od přímky: ```S(a, b) = Σ (yi − ŷi)²  →  min``` **Proč zrovna čtverce, a ne absolutní hodnoty?** Dva důvody, a oba stojí za to znát: Zaprvé, čtverec je **diferencovatelný všude**, takže se dá minimum najít derivací a vyjde soustava lineárních rovnic. Absolutní hodnota má v nule zlom a řešení se musí hledat numericky. Zadruhé, čtverec **tvrdě trestá velké odchylky**. Bod vzdálený o 10 přispěje stem, deset bodů vzdálených o 1 přispěje deseti. To je občas přesně to, co chceš, a občas to znamená, že jeden odlehlý bod ti přetáhne celou přímku k sobě. **Nejmenší čtverce nejsou robustní vůči odlehlým hodnotám** a je to jejich hlavní slabina. ## Soustava normálních rovnic Přímka `y = ax + b` proložená metodou nejmenších čtverců souborem bodů `[x1, y1], ..., [xn, yn]` má koeficienty splňující: ```a · Σxi² + b · Σxi = Σ xi·yi        (1)a · Σxi  + b · n   = Σ yi           (2)``` Dvě rovnice, dvě neznámé. **To je celé.** Nic víc lineární regrese s jedním vstupem není. ## Spočítej si to Body: `(0, 5)`, `(1, 3)`, `(3, 3)`, `(5, 2)`, `(6, 1)`, tedy `n = 5`. Tabulka, kterou si nakreslíš vždycky: | `i` | `xi` | `yi` | `xi²` | `xi·yi` ||---|---|---|---|---|| 1 | 0 | 5 | 0 | 0 || 2 | 1 | 3 | 1 | 3 || 3 | 3 | 3 | 9 | 9 || 4 | 5 | 2 | 25 | 10 || 5 | 6 | 1 | 36 | 6 || **Σ** | **15** | **14** | **71** | **28** | Dosaď do soustavy: ```71a + 15b = 2815a +  5b = 14``` Řešení: ```a = −7/13  ≈ −0,538b = 287/65 ≈  4,415``` Výsledná přímka: ```y = −0,538x + 4,415``` Zkontroluj si to hrubým odhadem. Pro `x = 0` vychází `4,4` a naměřeno bylo `5`. Pro `x = 6` vychází `1,2` a naměřeno bylo `1`. Sedí to. **Sloupce `xi²` a `xi·yi` jsou jediné, co se počítá.** Zbytek je dosazení a vyřešení dvou rovnic. Když si tuhle tabulku zapamatuješ, spočítáš regresi na papíře za tři minuty. ## Kde lineární regrese přestává platit **Vztah není lineární.** Vyjde ti přímka a bude nesmyslná. Poznáš to na grafu reziduí - když v nich vidíš systematický tvar (oblouk, vlnu), model má špatnou třídu funkcí. Řeší se to polynomiální regresí nebo transformací proměnných. **Jeden odlehlý bod přetáhne přímku.** Čtverce trestají velké odchylky, takže se přímka nakloní k odlehlému bodu, aby jeho příspěvek zmenšila. Buď takové body odstraň, nebo použij robustnější metodu (nejmenší absolutní odchylky, Huberova ztráta). **Korelace není kauzalita.** Regrese ti řekne, že `y` roste s `x`. Neřekne ti, že `x` způsobuje `y`. Klasický příklad: prodej zmrzliny koreluje s počtem utonutí. Obojí způsobuje léto. **Extrapolace mimo rozsah dat je hazard.** Přímka spočítaná na `x` od 0 do 6 nemá důvod platit pro `x = 100`. Model neví nic o tom, co je za hranicí dat. ## Souvislost se zbytkem wiki **Nejmenší čtverce jsou totéž, co ztrátová funkce v neuronové síti.** Podívej se na `Etotal = ½ Σ (tk − yk)²` u [backpropagation](MLP-a-backpropagation#ztrátová-funkce-a-gradientní-sestup) - je to úplně stejný výraz. Rozdíl je jen v tom, že u přímky se minimum najde vyřešením soustavy, zatímco u sítě se k němu musí sestupovat po gradientu, protože soustava je nelineární a nemá uzavřené řešení. **Neuron bez aktivační funkce je lineární regrese.** Vážený součet vstupů plus práh je přesně `ax + b`, jen s víc vstupy. Celá myšlenka [umělého neuronu](Neuron-a-perceptron) je lineární model, kterému se přidala nelinearita. ## Shrnutí v jedné větě Sestav si tabulku se sloupci `xi`, `yi`, `xi²` a `xi·yi`, sečti je, dosaď do dvou normálních rovnic a máš přímku - a zároveň víš, jak vypadá optimalizace, kterou zbytek téhle wiki řeší iterativně, protože se u něj vyřešit nedá.