Lineární regrese: nejmenší čtverce geometricky i maticově
Metoda nejmenších čtverců na osmi bytech, normální rovnice pro více příznaků, regrese jako kolmý průmět, koeficient determinace R², náhodné příznaky, kolinearita a vliv jednoho překlepu.
Série Základy AI Díl 47 z 83
- Mapa umělé inteligence: co je co a jak to do sebe zapadá
- Stručná historie umělé inteligence: od Turinga po jazykové modely
- Data, model, trénink, inference: základní pojmy na jednom příkladu
- Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relace: stavebnice, ze které se skládají definice v AI
- Funkce a zobrazení: proč je každý model v AI funkce
- Logika a důkazy: pravidla, podle kterých se v AI uvažuje
- Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
- Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
- Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
- Gradientní sestup: jak se model učí
- Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
- Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
- Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
- Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
- Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
- Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
- Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
- Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
- Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
- Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
- Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
- Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
- Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
- Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
- Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
- Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
- Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
- Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
- Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
- Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
- Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
- Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
- Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
- Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
- Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
- Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
- Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
- Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
- Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
- Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
- Přeučení a regularizace: proč model, který zná data nazpaměť, selže
- Vyhodnocení modelu: křížová validace, F1 a křivka ROC
- Shlukování a snížení dimenze: k-means, PCA a t-SNE
- Klasifikace a regrese: dvě úlohy učení s učitelem
- Lineární regrese: nejmenší čtverce geometricky i maticově
- Polynomiální a nelineární regrese: jak přímku ohnout
- Logistická regrese: sigmoida, šance a křížová entropie
- Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
- Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
- Ztrátové funkce: co přesně model minimalizuje
- Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
- Ansámbly: náhodný les a gradient boosting
- SVM a jádrový trik: nejširší hranice a jak ji ohnout
- Signál a vzorkování: proč platí Nyquistův teorém
- Fourierova transformace: rozklad signálu na frekvence
- Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
- Zvuk a řeč: spektrogram, melová škála a MFCC
- Obraz jako signál: pixely, barvy, konvoluce a hrany
- Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
- Neuronová síť od nuly: zpětné šíření chyby krok za krokem
- Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
- Konvoluční sítě: jak síť poznává obrázky
- Rekurentní sítě: paměť pro posloupnosti a mizející gradient
- LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
- Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
- Embeddingy a word2vec: jak se slovo stane vektorem
- Mechanismus pozornosti: jak se model naučí, kam se dívat
- Transformery a velké jazykové modely: architektura krok za krokem
- Tokenizace: jak se text rozseká na kousky pro model
- Předtrénování a škálování: proč větší model a víc dat funguje
- Doladění a RLHF: jak se z doplňovače textu stane asistent
- Prompty, kontext a RAG: jak modelu dát správné informace
- Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
- Generativní adversariální sítě (GAN): padělatel proti detektivovi
- Difúzní modely: jak se z čistého šumu stane obrázek
- Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
- Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
- Policy gradient a PPO: učení přímo strategie
- Jak funguje AI agent: jazykový model ve smyčce s nástroji
- Programování s AI agenty: zadání, testy a kontrola
- Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat
Celá osnova série 83 z 83 témat hotovo
- Co minimalizují nejmenší čtverce a jak se řešení spočítá vzorcem i maticí.
- Proč je lineární regrese kolmý průmět a co z toho plyne pro R².
- Proč R² na tréninku klame a co s koeficienty udělá kolinearita nebo jeden chybný bod.
Co se hodí znát předem: Klasifikace a regrese: dvě úlohy učení s učitelem, Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
Lineární regrese je nejstarší model strojového učení — o víc než sto let starší než první počítače. A přesto ji dnes najdete všude: v ekonomii, medicíně, v odhadech cen i v poslední vrstvě neuronových sítí. Je jednoduchá, rychlá a dá se jí rozumět. V tomhle dílu ji uvidíme třikrát: jako hledání přímky, která nejlépe sedí k bodům, jako řešení soustavy rovnic s maticemi a jako kolmý průmět vektoru. A naučíme se číst číslo R², které u ní uvidíte vždycky — včetně toho, kdy lže.
Navazuje na díly Klasifikace a regrese a Lineární algebra.
1. Lineární model
Definice — lineární regrese
Nechť p ∈ ℕ, p ≥ 1, je počet příznaků a w = (w0, w1, …, wp) ∈ ℝp+1 je vektor parametrů. Lineární model s parametry w je funkce fw : ℝp → ℝ,
fw(x1, …, xp) = w0 + ∑j=1p wjxj.
Číslo w0 je úsek, čísla wj pro j = 1, …, p jsou koeficienty. Hodnota ŷ = fw(x) je předpověď pro vektor příznaků x ∈ ℝp.
Nechť jsou dále dána data — n ≥ 1 pozorování (xi, yi), i = 1, …, n, kde xi = (xi1, …, xip) ∈ ℝp jsou příznaky a yi ∈ ℝ naměřená hodnota. Reziduum i-tého pozorování je číslo
ei = yi − ŷi, kde ŷi = fw(xi).
Lineární regrese je úloha najít z dat parametry w, pro které jsou rezidua v daném smyslu co nejmenší (nejčastěji metodou nejmenších čtverců, viz níže). Model tedy předpovídá úsek plus vážený součet příznaků a reziduum je, o kolik se skutečnost od předpovědi liší.
Cena bytu = základ + tolik a tolik za každý metr − tolik a tolik za každý kilometr od centra − tolik a tolik za každý rok stáří. Každý příznak přispívá svým dílem a díly se sčítají. Koeficient říká, o kolik se změní předpověď, když jeden příznak zvětšíme o jedničku a ostatní necháme stejné. Reziduum je to, co model nevysvětlil: o kolik se skutečná cena liší od předpovědi.
ŷ = w0 + ∑j=1p wj · xj
- ŷ
- předpověď — stříška ji odlišuje od naměřeného y; rozdíl obou je reziduum, a právě ten bude model zmenšovat
- w0
- úsek — bez něj by předpověď pro samé nulové příznaky musela být 0 a model by nemohl posunout všechny předpovědi nahoru či dolů
- ∑j
- součet příspěvků — vlivy se jen sčítají, takže vliv plochy nezávisí na vzdálenosti; proto se dá říct „metr přidá tolik a tolik“ bez ohledu na zbytek
- wj
- koeficient — cena jedné jednotky příznaku (např. mil. Kč za m²); jediné, co se model učí
- xj
- hodnota příznaku pro konkrétní byt — násobí se, takže dvojnásobná plocha dá dvojnásobný příspěvek; to je ta „linearita“
„Lineární“ se týká parametrů w, ne příznaků. Model w0 + w1x + w2x2 je pořád lineární regrese, jen s příznakem x2 navíc — o tom bude další díl.
2. Metoda nejmenších čtverců
Začneme jedním příznakem: osm bytů, plocha a cena. Kterou přímkou je proložit? Každá přímka nechá u každého bodu nějaké reziduum. Chceme, aby byla celková chyba co nejmenší — jen musíme říct, jak ji měřit.
Definice — metoda nejmenších čtverců
Nechť (xi, yi), i = 1, …, n, jsou data lineárního modelu s p příznaky (xi ∈ ℝp, yi ∈ ℝ). Součet čtverců reziduí je funkce SSE : ℝp+1 → ℝ,
SSE(w) = ∑i=1n (yi − fw(xi))2.
Metoda nejmenších čtverců volí parametry ŵ ∈ ℝp+1 jako bod minima této funkce:
SSE(ŵ) ≤ SSE(w) pro všechna w ∈ ℝp+1.
Pro jeden příznak (p = 1, xi ∈ ℝ) označme průměry x̄ = 1/n ∑i=1n xi a ȳ = 1/n ∑i=1n yi. Nejsou-li všechna xi stejná, má úloha právě jedno řešení (důkaz ve větě níže; dál ho píšeme bez stříšky, w0, w1):
w1 = ∑i=1n (xi − x̄)(yi − ȳ)/∑i=1n (xi − x̄)2, w0 = ȳ − w1x̄.
Sklon je tedy kovariance x a y dělená rozptylem x a přímka prochází těžištěm (x̄, ȳ).
Ke každému bodu nakreslíme čtverec, jehož strana je svislá vzdálenost bodu od přímky. Hledáme přímku, u které mají čtverce dohromady nejmenší plochu. Když přímku nakloníme víc nebo míň, některé čtverce se zmenší, ale jiné zvětší víc. Součet čtverců jako funkce sklonu je parabola — má jediné dno, a to se dá spočítat vzorcem, bez zkoušení.
SSE = ∑i=1n (yi − ŷi)2
- SSE
- jedno číslo pro celou přímku — v obrázku vpravo zelená křivka; čím menší, tím lépe přímka sedí, a tak se dají porovnat libovolné dvě přímky
- ∑i
- přes všechny body — každý byt má v chybě stejný hlas; přímka, která sedí jen k části dat, se nevyplatí
- yi
- naměřená cena (v obrázku modré body) — pevná, model ji nemůže změnit
- ŷi = w0 + w1xi
- předpověď — jediné místo, kudy do chyby vstupují parametry; tím, jak nakloníme přímku, posouváme všechna ŷi naráz
- ( … )2
- čtverec rezidua — v obrázku jantarové čtverce; znaménko nehraje roli, takže se chyby nahoře a dole nevyruší, velká chyba váží víc a výsledek je hladká funkce parametrů, kterou jde derivovat
Se sklonem 0,05 (50 tisíc za metr) je součet čtverců 9,66, se sklonem 0,11 je 4,85. Nejlepší sklon 0,092 dává 3,81: přímka ŷ = 0,63 + 0,092 · plocha, tedy zhruba 92 tisíc za metr navíc.
Odkud se nejlepší sklon bere, ukazuje vzorec z definice. Stojí za to ho rozebrat:
w1 = ∑ (xi − x̄)(yi − ȳ)/∑ (xi − x̄)2, w0 = ȳ − w1x̄
- ∑ (xi − x̄)(yi − ȳ)
- společná odchylka od průměrů — byt větší než průměr a zároveň dražší než průměr přidá kladné číslo, větší a levnější záporné; součet říká, jestli y s x roste, nebo klesá
- ∑ (xi − x̄)2
- rozptýlenost plochy — dělením se z „společného pohybu“ stane změna ceny na jeden metr; stejný souhlas při roztaženějších plochách znamená mírnější sklon
- w0 = ȳ − w1x̄
- úsek dopočítaný tak, aby přímka prošla těžištěm (x̄, ȳ) — pak jsou rezidua v průměru nulová, přímka není posunutá nahoru ani dolů
Věta — odvození vzorce pro sklon a úsek
Nechť n ≥ 2, (xi, yi) ∈ ℝ2 pro i = 1, …, n, a nechť čísla x1, …, xn nejsou všechna stejná. Nechť x̄, ȳ jsou jejich průměry. Pak funkce
SSE(w0, w1) = ∑i=1n (yi − w0 − w1xi)2
má na ℝ2 právě jeden bod minima, a to w1 = ∑ (xi − x̄)(yi − ȳ)/∑ (xi − x̄)2, w0 = ȳ − w1x̄.
Důkaz. SSE je součet čtverců afinních funkcí parametrů, tedy konvexní kvadratická funkce. Její Hessova matice je 2 · [n, ∑ xi; ∑ xi, ∑ xi2] s determinantem 4(n ∑ xi2 − (∑ xi)2) = 4n ∑ (xi − x̄)2 > 0 (protože xi nejsou všechna stejná) a kladnou diagonálou, takže je pozitivně definitní a funkce je ostře konvexní. Bod minima je proto jediný a je to právě bod, kde jsou obě parciální derivace nulové:
∂SSE/∂w0 = −2 ∑ (yi − w0 − w1xi) = 0 ⇒ ȳ = w0 + w1x̄
∂SSE/∂w1 = −2 ∑ xi(yi − w0 − w1xi) = 0
dosadíme w0 = ȳ − w1x̄: ∑ xi[(yi − ȳ) − w1(xi − x̄)] = 0
protože ∑ (yi − ȳ) = ∑ (xi − x̄) = 0, smíme xi před závorkou nahradit (xi − x̄) a vyjde w1 = ∑ (xi − x̄)(yi − ȳ)/∑ (xi − x̄)2.
První rovnice je přesně podmínka „přímka prochází těžištěm“. ∎
Příklad — sklon pro osm bytů krok za krokem
Průměry: x̄ = 525/8 = 65,625 m², ȳ = 53,4/8 = 6,675 mil. Kč. Odchylky a jejich součiny (barvy podle rozboru vzorce pro sklon výše):
| x | y | x − x̄ | y − ȳ | součin | (x − x̄)2 |
|---|---|---|---|---|---|
| 34 | 3,9 | −31,625 | −2,775 | 87,759 | 1000,141 |
| 45 | 4,1 | −20,625 | −2,575 | 53,109 | 425,391 |
| 52 | 6,2 | −13,625 | −0,475 | 6,472 | 185,641 |
| 61 | 5,6 | −4,625 | −1,075 | 4,972 | 21,391 |
| 70 | 7,9 | 4,375 | 1,225 | 5,359 | 19,141 |
| 78 | 7,0 | 12,375 | 0,325 | 4,022 | 153,141 |
| 88 | 9,6 | 22,375 | 2,925 | 65,447 | 500,641 |
| 97 | 9,1 | 31,375 | 2,425 | 76,084 | 984,391 |
| součet | 303,225 | 3289,875 | |||
w1 = 303,225/3289,875 ≈ 0,09217 mil. Kč na m²
w0 = 6,675 − 0,09217 · 65,625 ≈ 6,675 − 6,049 = 0,626 mil. Kč
Všech osm součinů je kladných: každý byt je buď větší a dražší, nebo menší a levnější než průměr — proto tak jasný kladný sklon.
Proč čtverce, a ne třeba absolutní hodnoty? Tři důvody. Čtverce dávají hladkou funkci s jediným minimem a řešení vzorcem. Když je šum v datech normálně rozdělený, jsou nejmenší čtverce totéž co metoda maximální věrohodnosti z dílu Statistika a odhady parametrů. A optimum je podmíněný průměr, jak ukázal díl o klasifikaci a regresi. Metodu publikoval Adrien-Marie Legendre roku 1805; Carl Friedrich Gauss tvrdil, že ji používá už od roku 1795, a spor o prvenství se táhl roky.
3. Maticový zápis a normální rovnice
S více příznaky už vzorec pro sklon nestačí. Pomůže lineární algebra: všechna data se zapíšou do jedné matice.
Definice — matice plánu a normální rovnice
Nechť n, p ∈ ℕ, n, p ≥ 1, a nechť (xi, yi), i = 1, …, n, jsou data, xi = (xi1, …, xip) ∈ ℝp, yi ∈ ℝ. Označme y = (y1, …, yn)T ∈ ℝn. Matice plánu je matice X ∈ ℝn×(p+1) se sloupci číslovanými 0, …, p a prvky
Xi0 = 1, Xij = xij (i = 1, …, n; j = 1, …, p),
tj. řádek na každé pozorování, první sloupec samé jedničky (pro úsek) a další sloupce příznaky. Pro w = (w0, …, wp)T ∈ ℝp+1 je vektor předpovědí všech pozorování ŷ = Xw ∈ ℝn a SSE(w) = ‖y − Xw‖2.
Normální rovnice jsou soustava p + 1 lineárních rovnic pro neznámý vektor w ∈ ℝp+1:
XTXw = XTy.
Podle věty níže je w bodem minima SSE, právě když řeší normální rovnice; je-li matice XTX regulární, je řešení jediné, w = (XTX)−1XTy.
Tabulka bytů je matice: co řádek, to byt, co sloupec, to vlastnost. Normální rovnice jsou soustava p + 1 rovnic o p + 1 neznámých — u nás čtyři rovnice o čtyřech neznámých, ať je bytů šedesát, nebo milion. Matice XTX je malá; velká data se jen jednou „sesypou“ do ní.
w = (XTX)−1 XTy
- w
- všechny koeficienty najednou, úsek i sklony — jeden vektor délky p + 1
- XTy
- skalární součin každého sloupce (příznaku) s cenami — jak moc ten příznak „jde s cenou“; kdyby příznaky spolu vůbec nesouvisely, stačilo by to jen vydělit
- (XTX)−1
- XTX obsahuje skalární součiny sloupců mezi sebou, tedy jejich překryv; inverze ho „odečte“, aby příznak nedostal zásluhu za to, co už vysvětlil jiný. Pro jeden příznak a úsek se celé zjednoduší na vzorec pro sklon výše
Věta — odvození normálních rovnic
Nechť X ∈ ℝn×(p+1), y ∈ ℝn a S : ℝp+1 → ℝ, S(w) = ‖y − Xw‖2. Pak
- w ∈ ℝp+1 je bodem minima S, právě když XTXw = XTy;
- jsou-li sloupce X lineárně nezávislé, je XTX regulární a bod minima je jediný, w = (XTX)−1XTy.
Důkaz. Rozepíšeme čtverec normy: ‖y − Xw‖2 = yTy − 2wTXTy + wTXTXw. Gradient podle w je −2XTy + 2XTXw; je nulový, právě když XTXw = XTy. Hessova matice 2XTX je pozitivně semidefinitní (vTXTXv = ‖Xv‖2 ≥ 0 pro každé v), takže S je konvexní a diferencovatelná — a pro takovou funkci je bod minimem, právě když je v něm gradient nulový. To je bod 1. Jsou-li sloupce X lineárně nezávislé, je Xv ≠ 0 pro každé v ≠ 0, tedy ‖Xv‖2 > 0; matice XTX je pozitivně definitní, a proto regulární, a soustava má jediné řešení. ∎
Příklad — normální rovnice pro tři body
Tři měření x = (1, 2, 3), y = (1, 3, 2), model ŷ = w0 + w1x (budou se hodit i v příští kapitole):
X = [1 1; 1 2; 1 3], XTX = [3 6; 6 14], XTy = (1 + 3 + 2, 1 + 6 + 6) = (6, 13)
det XTX = 3 · 14 − 6 · 6 = 6, (XTX)−1 = 1/6 · [14 −6; −6 3]
w = 1/6 · [14 −6; −6 3] · (6, 13) = 1/6 · (14 · 6 − 6 · 13, −6 · 6 + 3 · 13) = 1/6 · (6, 3) = (1; 0,5)
Barvy odpovídají členům vzorce w = (XTX)−1XTy výše.
V matici XTX je 3 počet bodů, 6 součet x a 14 součet x2; v XTy součet y a součet x·y. Data se opravdu „sesypala“ do pěti čísel.
Šedesát bytů, tři příznaky: plocha (m²), vzdálenost od centra (km) a stáří domu (roky). Data jsme vygenerovali ze známého vztahu se šumem, takže víme, jaké koeficienty měly vyjít:
| úsek | plocha | vzdálenost | stáří | |
|---|---|---|---|---|
| skutečný vztah | 1,50 | 0,085 | −0,220 | −0,015 |
| odhad z 60 bytů | 1,68 | 0,088 | −0,252 | −0,020 |
Model zjistil, že metr plochy přidá 88 tisíc, každý kilometr od centra ubere 252 tisíc a každý rok stáří 20 tisíc — vždy při ostatních příznacích stejných. Odhady nejsou přesné, protože šedesát bytů se šumem je málo, ale znaménka i řády sedí.
Příklad — předpověď pro jeden byt
Byt o 70 m², 5 km od centra, v domě starém 30 let. S koeficienty zaokrouhlenými jako v tabulce:
ŷ = 1,68 + 0,088 · 70 − 0,252 · 5 − 0,020 · 30 = 1,68 + 6,16 − 1,26 − 0,60 = 5,98 mil. Kč
Barvy podle rozboru lineárního modelu v první kapitole: úsek, koeficienty, hodnoty příznaků a předpověď. Záporné koeficienty jsou zapsané odečtením.
S nezaokrouhlenými koeficienty vyjde 6,00 mil. Kč — u plochy se zaokrouhlení násobí sedmdesáti, proto ten rozdíl.
Inverzi matice počítače ve skutečnosti nepočítají — soustava se řeší eliminací nebo rozkladem matice, což je rychlejší a numericky stabilnější. A když jsou příznaků miliony, nevejde se do paměti ani XTX; pak se k minimu sestupuje po krocích gradientním sestupem.
Takhle normální rovnice řeší i obrázky a tabulky tohoto dílu (Gaussova–Jordanova eliminace s výběrem hlavního prvku):
# vstup: X (n × (p+1), první sloupec samé 1), y (n čísel)
A = Xᵀ·X # A[i][j] = ∑_k X[k][i]·X[k][j]
b = Xᵀ·y # b[i] = ∑_k X[k][i]·y[k]
M = [A | b] # rozšířená matice (p+1) × (p+2)
for c in 0 … p:
r = řádek ≥ c s největším |M[r][c]| # hlavní prvek: nedělit malým číslem
prohoď řádky c a r
for i in 0 … p, i ≠ c:
f = M[i][c] / M[c][c]
M[i] = M[i] − f·M[c] # vynuluje sloupec c mimo diagonálu
w[i] = M[i][p+1] / M[i][i] pro i = 0 … p
Sestavit XTX stojí řádově n·p2 operací, eliminace řádově p3. Počet bytů tedy přispívá jen lineárně; drahé je mít hodně příznaků.
4. Geometrie: regrese jako kolmý průmět
Teď trik, který z regrese udělá obrázek. Všech n naměřených hodnot y nebudeme brát jako n bodů v rovině, ale jako jeden vektor v n-rozměrném prostoru. Nejmenší příklad: tři měření x = (1, 2, 3) a y = (1, 3, 2).
Definice — regrese jako projekce
Nechť X ∈ ℝn×(p+1) je matice plánu a y ∈ ℝn. Prostor sloupců matice X je množina všech možných vektorů předpovědí
Col(X) = {Xw : w ∈ ℝp+1} ⊆ ℝn;
je to lineární podprostor ℝn rozepnutý sloupci X. Kolmý průmět vektoru y do Col(X) je vektor ŷ ∈ ℝn splňující
- ŷ ∈ Col(X),
- vT(y − ŷ) = 0 pro každé v ∈ Col(X).
Takový vektor existuje a je jediný a je to bod Col(X) nejbližší k y: ‖y − ŷ‖ ≤ ‖y − v‖ pro všechna v ∈ Col(X). Podmínku 2 stačí ověřit pro sloupce X, takže pro vektor reziduí e = y − ŷ zní XTe = 0; po dosazení ŷ = Xw to jsou přesně normální rovnice XTXw = XTy. Předpověď nejmenších čtverců je tedy kolmý průmět y do prostoru sloupců a reziduum je kolmé na všechno, co model umí vyrobit.
Model s úsekem a sklonem umí vyrobit jen předpovědi ležící v jedné rovině. Skutečné ceny y v ní obvykle neleží. Nejbližší bod roviny k y najdeme tak, že z y spustíme kolmici — jako když slunce v poledne vrhá stín tyče kolmo na zem. Stín je předpověď, tyč od stínu ke špičce je reziduum.
Pro naše tři body vyjde přímka ŷ = 1 + 0,5 x, předpovědi (1,5; 2; 2,5) a rezidua (−0,5; 1; −0,5). Kolmost se dá ověřit hned: součet reziduí je 0 (kolmost na sloupec jedniček) a −0,5 · 1 + 1 · 2 − 0,5 · 3 = 0 (kolmost na sloupec x). Z kolmosti plyne i Pythagorova věta, na které stojí R² v další kapitole.
5. Koeficient determinace R²
Definice — rozklad rozptylu a R²
Nechť n ≥ 2, y = (y1, …, yn) ∈ ℝn jsou naměřené hodnoty, které nejsou všechny stejné, ȳ = 1/n ∑i=1n yi jejich průměr a ŷ = (ŷ1, …, ŷn) ∈ ℝn předpovědi nějakého modelu. Definujeme
- celkový součet čtverců SST = ∑i=1n (yi − ȳ)2 (je kladný, protože yi nejsou všechna stejná),
- vysvětlený součet čtverců SSR = ∑i=1n (ŷi − ȳ)2,
- reziduální součet čtverců SSE = ∑i=1n (yi − ŷi)2.
Koeficient determinace předpovědí ŷ je číslo
R2 = 1 − SSE/SST.
Je-li ŷ předpověď lineárního modelu s úsekem odhadnutého nejmenšími čtverci z těchto dat, platí SST = SSR + SSE (věta níže; celkový = vysvětlený + nevysvětlený), a tedy R2 = SSR/SST ∈ [0, 1]. Pro jiné předpovědi (třeba na nových datech) rozklad platit nemusí a R2 může být i záporné.
Ceny bytů se liší. Kolik z toho rozdílu model vysvětlil? R2 = 0,75 znamená, že předpověď odstranila 75 % rozptylu cen kolem průměru a 25 % zůstalo v reziduích. R2 = 0 je výchozí model — samotný průměr. Na nových datech může R2 vyjít i záporné: model je pak horší než průměr.
R2 = 1 − ∑ (yi − ŷi)2/∑ (yi − ȳ)2 = ∑ (ŷi − ȳ)2/∑ (yi − ȳ)2
- SSE = ∑ (yi − ŷi)2
- co model nevysvětlil — v obrázku projekce je to čtverec délky červeného vektoru e; právě tuhle část nejmenší čtverce zmenšují
- SST = ∑ (yi − ȳ)2
- celková rozkolísanost cen kolem průměru — měřítko, vůči kterému se chyba posuzuje; bez dělení by R2 záviselo na jednotkách (koruny, nebo miliony?)
- SSR = ∑ (ŷi − ȳ)2
- jak moc se rozcházejí samotné předpovědi — vysvětlená část, v obrázku zelený stín ŷ měřený od průměru
Věta — rozklad rozptylu je Pythagorova věta
Nechť X ∈ ℝn×(p+1) je matice plánu, jejíž první sloupec je vektor jedniček 1 = (1, …, 1)T ∈ ℝn, y ∈ ℝn, ŷ je kolmý průmět y do Col(X), e = y − ŷ a ȳ průměr složek y. Pak SST = SSR + SSE.
Důkaz. Označme ȳ1 vektor se všemi složkami rovnými ȳ. Pak y − ȳ1 = (ŷ − ȳ1) + e. Vektor ŷ − ȳ1 leží v Col(X) (ŷ v něm leží a 1 je sloupec X) a e je na Col(X) kolmý, takže (ŷ − ȳ1)Te = 0 a
‖y − ȳ1‖2 = ‖ŷ − ȳ1‖2 + 2 (ŷ − ȳ1)Te + ‖e‖2 = SSR + 0 + SSE. ∎
Bez úseku v modelu sloupec jedniček chybí, kolmost na něj neplatí a rozklad (i R2 v téhle podobě) se rozpadne.
Příklad — R² pro tři body a pro osm bytů
Tři body z minulé kapitoly: y = (1, 3, 2), ȳ = 2, ŷ = (1,5; 2; 2,5), e = (−0,5; 1; −0,5).
SST = (1 − 2)2 + (3 − 2)2 + (2 − 2)2 = 1 + 1 + 0 = 2
SSR = (−0,5)2 + 02 + 0,52 = 0,5, SSE = 0,25 + 1 + 0,25 = 1,5, 0,5 + 1,5 = 2 ✓
R2 = 1 − 1,5/2 = 0,5/2 = 0,25
Osm bytů z kapitoly o nejmenších čtvercích: SSE = 3,807 a SST = ∑ (yi − 6,675)2 = 31,755, tedy R2 = 1 − 3,807/31,755 ≈ 0,880. Přímka vysvětlí 88 % rozptylu cen osmi bytů. (Barvy podle rozboru vzorce pro R2 výše.)
| Model (60 bytů) | R2 na tréninku | R2 na 5 000 nových |
|---|---|---|
| jen plocha | 0,747 | 0,717 |
| plocha, vzdálenost, stáří | 0,926 | 0,870 |
| skutečný vztah z generátoru | — | 0,876 |
Tři příznaky vysvětlí víc než samotná plocha. Na nových datech je R2 obvykle o něco menší než na tréninku a náš model se se svými 0,870 dostal skoro až ke stropu 0,876 — ani skutečný vztah nevysvětlí šum, který jsme do cen přidali. Dobré R2 se liší obor od oboru: ve fyzice je 0,9 málo, v psychologii 0,3 hodně. Samo o sobě neříká, jestli je model dobrý — jen kolik rozptylu vysvětlil.
6. Víc příznaků není vždy lépe
Co když k našim třem příznakům přidáme další, které s cenou nesouvisejí vůbec — čistě náhodná čísla?
Trénovací R2 roste s každým příznakem, i s nesmyslným: z 0,926 až na 0,986 se čtyřiceti náhodnými sloupci. Nejmenší čtverce si v každém sloupci šumu najdou něco, co náhodou koreluje s rezidui. Na nových datech přitom R2 klesá z 0,870 na 0,458. Je to přeučení z dílu Přeučení a regularizace: 44 parametrů na 60 bytů.
Definice — upravené R²
Nechť je lineární model s úsekem a p ≥ 1 příznaky odhadnut nejmenšími čtverci z n pozorování, kde n > p + 1, a nechť R2 je jeho koeficient determinace na těchto (trénovacích) datech. Upravený koeficient determinace je číslo
R2upr = 1 − (1 − R2) · n − 1/n − p − 1.
Protože n − 1/n − p − 1 > 1 a s rostoucím p roste, penalizuje počet příznaků p vzhledem k počtu pozorování n; vždy platí R2upr ≤ R2.
Za každý příznak se platí: upravené R2 vzroste, jen když příznak pomůže víc, než by pomohl náhodný. S pěti náhodnými příznaky se ještě o chlup zvedne (z 0,922 na 0,925), pak do třiceti pomalu klesá (0,915). Při čtyřiceti ale vyskočí na 0,949 — oprava počítá s průměrným náhodným příznakem, ale model si ze čtyřiceti vybral ty, co náhodou sedí nejlíp. Spolehlivě to pozná jen test na nových datech.
R2upr = 1 − (1 − R2) · n − 1/n − p − 1
- 1 − R2 = SSE/SST
- nevysvětlený podíl na tréninku — ten je s každým příznakem menší, i s náhodným, a proto je potřeba ho opravit
- n − 1
- stupně volnosti kolem průměru — SST se počítá od ȳ, odhadnutého z týchž dat, což spotřebuje jedno pozorování
- n − p − 1
- stupně volnosti reziduí — každý odhadnutý parametr „spotřebuje“ jedno pozorování; s rostoucím p jmenovatel klesá a nevysvětlený podíl se nafoukne. Pro p = n − 1 by prošla přímka (nadrovina) každým bodem a vzorec dělí nulou
Příklad — upravené R² pro 3 a pro 43 příznaků
Šedesát bytů, n = 60 (barvy podle vzorce výše):
3 příznaky: R2 = 0,92624, 1 − (1 − 0,92624) · 59/56 = 1 − 0,07376 · 1,0536 = 1 − 0,07771 = 0,922
3 + 40 příznaků: R2 = 0,98614, 1 − (1 − 0,98614) · 59/16 = 1 − 0,01386 · 3,6875 = 1 − 0,0511 = 0,949
Oprava u 43 příznaků nafoukne nevysvětlený podíl skoro čtyřikrát, ale trénovací R2 se přiblížilo k jedničce tolik, že to nestačí.
7. Kolinearita: když si příznaky lezou do zelí
Přidejme místo šumu příznak, který dává smysl: počet pokojů. V našich datech cenu nijak neovlivňuje (generátor ho do ceny nezapočítal), jen souvisí s plochou — korelace 0,91.
Definice — korelační koeficient
Nechť n ≥ 2 a u = (u1, …, un), v = (v1, …, vn) ∈ ℝn jsou hodnoty dvou příznaků na n pozorováních, z nichž ani jeden není konstantní (nejsou všechna ui stejná ani všechna vi stejná). Nechť ū = 1/n ∑i=1n ui a v̄ = 1/n ∑i=1n vi. Pearsonův korelační koeficient příznaků u, v je číslo
r = ∑i=1n (ui − ū)(vi − v̄)/√∑i=1n (ui − ū)2 · ∑i=1n (vi − v̄)2.
Z Cauchyho–Schwarzovy nerovnosti plyne r ∈ [−1, 1]; |r| = 1, právě když všechny body (ui, vi) leží na jedné přímce, a r = 0, právě když je sklon přímky nejmenších čtverců nulový — mezi příznaky pak není žádný lineární vztah (jiný být může).
Čitatel je stejný jako u vzorce pro sklon; jmenovatel místo rozptýlenosti jednoho příznaku bere geometrický průměr obou, takže r nemá jednotky a je symetrický.
Definice — kolinearita
Nechť X ∈ ℝn×(p+1) je matice plánu se sloupci X·0 = 1, X·1, …, X·p. Příznaky jsou (přesně) kolineární, právě když jsou sloupce X lineárně závislé, tj.
∃ c ∈ ℝp+1, c ≠ 0 : Xc = c01 + c1X·1 + … + cpX·p = 0,
neboli některý sloupec je lineární kombinací ostatních (včetně sloupce jedniček). Pak je XTX singulární a normální rovnice nemají jediné řešení. Pro j = 1, …, p označme Rj2 koeficient determinace regrese příznaku X·j (s úsekem) na ostatní příznaky. Příznaky jsou přibližně kolineární (multikolinearita), když je pro některé j číslo Rj2 blízké 1 — j-tý příznak jde ostatními vyjádřit skoro přesně. Ostrá hranice neexistuje; v praxi se jako varovný signál bere inflační faktor 1/1 − Rj2 nad 5 či 10. Matice XTX je pak skoro singulární a odhady koeficientů mají velký rozptyl, i když předpovědi zůstávají dobré.
Plocha a počet pokojů říkají skoro totéž. Model neví, komu z nich přisoudit zásluhu za vyšší cenu, a stačí malá změna dat, aby zásluhu přelil z jednoho na druhého. Součet jejich vlivu je odhadnutý dobře, jednotlivé koeficienty špatně.
Na všech šedesáti bytech vyjde koeficient pokojů −0,23: „každý pokoj navíc zlevní byt o 230 tisíc“ — nesmysl, který z dat nevyplývá. Když model naučíme na 200 náhodných převýběrech stejných dat, koeficient pokojů skáče od −1,00 do +0,39 a směrodatná odchylka koeficientu plochy vzroste 2,8× (z 0,0035 na 0,0098). Předpovědi se přitom skoro nezmění: R2 na nových datech je 0,868 proti 0,870. Kolinearita tedy nevadí, když chceme jen předpovídat; vadí, když chceme koeficienty vykládat. Pomůže vyhodit jeden z příznaků nebo hřebenová regularizace.
Definice — převýběr (bootstrap)
Nechť D = (z1, …, zn) jsou data o n ≥ 1 pozorováních. Převýběr (bootstrapový výběr) z D je posloupnost
D* = (zJ1, …, zJn),
kde indexy J1, …, Jn se losují nezávisle a každý rovnoměrně z {1, …, n} (každé pozorování má v každém tahu pravděpodobnost 1/n). Jde tedy o n tahů s vracením — některý byt se vytáhne dvakrát, jiný vůbec.
Nechť t je odhad (funkce dat, třeba koeficient wplocha z nejmenších čtverců), B ∈ ℕ, B ≥ 2, a D*1, …, D*B nezávislé převýběry. Označme tb hodnotu odhadu na D*b a m = 1/B ∑b=1B tb. Bootstrapový odhad směrodatné odchylky odhadu t je
sboot = √1/B ∑b=1B (tb − m)2.
Rozptyl odhadu přes mnoho převýběrů tedy napodobuje, jak by se odhad lišil, kdybychom měli jiná data ze stejného zdroje. Čísla výše vznikla takhle (B = 200):
for s in 1 … 200:
D = 60 bytů vytažených náhodně s vracením z 60 původních
w = nejmenší čtverce na D (plocha, vzdálenost, stáří[, pokoje])
zapiš w_plocha (a w_pokoje)
směrodatná odchylka = √( průměr (w_plocha − průměr w_plocha)² )
Proč se rozkolísá právě koeficient plochy, říká vzorec pro rozptyl odhadu v lineární regresi:
Var(ŵj) = σ2/∑i (xij − x̄j)2 · 1/1 − Rj2
- σ2
- rozptyl šumu v cenách — čím víc náhody, tím víc se odhad mění s daty
- ∑ (xij − x̄j)2
- rozptýlenost příznaku — byty od 30 do 120 m² určí sklon líp než byty od 60 do 70 m², a víc bytů taky
- 1/1 − Rj2
- inflační faktor rozptylu (VIF); Rj2 je R2 regrese j-tého příznaku na ostatní. Jen ta část příznaku, kterou ostatní nevysvětlí, nese o jeho koeficientu novou informaci
Příklad — VIF plochy s pokoji a bez nich
bez pokojů: plocha ~ vzdálenost + stáří, Rplocha2 = 0,054, VIF = 1/1 − 0,054 = 1/0,946 ≈ 1,06
s pokoji: plocha ~ vzdálenost + stáří + pokoje, Rplocha2 = 0,828, VIF = 1/1 − 0,828 = 1/0,172 ≈ 5,8
poměr směrodatných odchylek ≈ √5,82/1,06 ≈ 2,3 (σ2 i rozptýlenost plochy jsou v obou modelech stejné a zkrátí se)
Barvy podle vzorce pro rozptyl odhadu výše.
Vzorec tedy čeká zhruba 2,3× větší kolísání, převýběry naměřily 2,8× — 200 převýběrů ze 60 bytů je samo jen odhad a vzorec navíc předpokládá pevná data. Řád ale sedí: pokoje „ukradly“ 83 % rozptylu plochy.
8. Jeden překlep stačí
Čtverce mají i stinnou stránku: velkou chybu trestají hodně. Ke stejným osmi bytům přidáme devátý, o 120 m², u kterého někdo zapsal cenu v milionech jako 0,0055 místo 5,5.
Sklon klesne z 0,092 na −0,003: s jedním chybným bodem model tvrdí, že větší byty jsou o chlup levnější. Překlep leží daleko od ostatních bodů ve směru x, a takové body mají na přímku největší páku. Obrana: data si před učením prohlédnout (graf odhalí víc než tabulka), podezřelé body ověřit, nebo použít robustní ztrátu — absolutní chybu či Huberovu ztrátu, které velké odchylky trestají míň.
Definice — páka bodu
Nechť X ∈ ℝn×(p+1) je matice plánu s lineárně nezávislými sloupci (prvním sloupcem jedniček) a y ∈ ℝn. Projekční matice (anglicky hat matrix) je
H = X(XTX)−1XT ∈ ℝn×n.
Předpovědi nejmenších čtverců jsou ŷ = Xw = Hy, tedy ŷi = ∑k=1n hikyk — lineární kombinace naměřených hodnot. Páka i-tého pozorování (i = 1, …, n) je diagonální prvek hii: váha, s jakou vlastní yi vstupuje do vlastní předpovědi ŷi. Platí
- 1/n ≤ hii ≤ 1 pro každé i (dolní mez díky sloupci jedniček),
- ∑i=1n hii = p + 1, tj. součet pák je počet parametrů (u přímky 2).
Pro přímku (p = 1, xi ∈ ℝ nejsou všechna stejná) vychází
hii = 1/n + (xi − x̄)2/∑k=1n (xk − x̄)2.
Přímka je jako prkno na podpěrách. Bod uprostřed s ním skoro nepohne, bod na konci ho páčí. Páka nezávisí na y, jen na tom, jak daleko leží bod od průměrné plochy — a teprve když daleký bod má navíc špatné y, je zle.
hii = 1/n + (xi − x̄)2/∑k (xk − x̄)2
- hii
- páka bodu i — kolik z vlastní naměřené hodnoty se přenese do vlastní předpovědi
- 1/n
- podíl, který má každý bod na úseku — přímka prochází těžištěm a do průměru ȳ přispívá každý bod stejně
- (xi − x̄)2/∑ (xk − x̄)2
- vliv na sklon — čtverec vzdálenosti bodu od průměrné plochy vůči rozptýlenosti všech ploch; bod daleko od středu „páčí“ přímkou
Příklad — páka překlepu
Devět bytů včetně překlepu: x̄ = 645/9 ≈ 71,67 m², ∑ (xk − x̄)2 = 5918 (barvy podle rozboru výše).
překlep (120 m²): h = 1/9 + (120 − 71,67)2/5918 = 0,111 + 2336/5918 = 0,111 + 0,395 = 0,506
byt 70 m²: h = 0,111 + (70 − 71,67)2/5918 = 0,111 + 0,0005 = 0,112
průměrná páka: 2/9 ≈ 0,222
Polovinu předpovědi pro 120 m² určuje sám překlep. Běžné orientační pravidlo (Hoaglin a Welsch, 1978) radí zkontrolovat body s pákou nad dvojnásobkem průměru — tady nad 0,44.
Definice — Huberova ztráta
Nechť δ ∈ ℝ, δ > 0, je práh. Huberova ztráta s prahem δ je funkce Lδ : ℝ → ℝ, která reziduu e ∈ ℝ přiřadí
Lδ(e) = e2/2, je-li |e| ≤ δ,
Lδ(e) = δ · (|e| − δ/2), je-li |e| > δ.
Odhad s Huberovou ztrátou volí parametry minimalizující ∑i Lδ(ei) místo SSE. Malá rezidua trestá jako čtverce (hladce, s minimem jako u nejmenších čtverců), velká jen lineárně, takže jeden překlep o 5,5 milionu nepřetáhne přímku k sobě. V bodě |e| = δ obě větve navazují hodnotou i derivací.
9. Shrnutí
- Lineární model sčítá příspěvky příznaků; koeficient říká, o kolik se změní předpověď, když příznak vzroste o jedničku a ostatní zůstanou.
- Nejmenší čtverce minimalizují součet čtverců reziduí; pro osm bytů vyšel sklon 0,092 (92 tisíc za metr).
- Maticově je řešení dané normálními rovnicemi XTXw = XTy; geometricky je předpověď kolmý průmět y do prostoru sloupců.
- R2 je podíl vysvětleného rozptylu: tři příznaky měly na nových bytech 0,870 při stropu 0,876.
- Trénovací R2 roste i s náhodnými příznaky (až na 0,986), testovací padá (na 0,458); ani upravené R2 to nezachytí vždy.
- Kolinearita rozkolísá koeficienty, ale ne předpovědi; jeden překlep může otočit znaménko sklonu.
Chcete si to osahat? Nechte AI agenta spočítat lineární regresi na datech, která máte po ruce — spotřebě auta, účtech za energie — a pak se podívejte na graf reziduí: pokud v nich uvidíte vzor, přímka nestačí.
Máte na to jiný názor? Napište na support@coden-app.com.