Přeskočit na obsah
coden

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.

14 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 47 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. 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 si odnesete
  • 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ší.

Laicky řečeno

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“
Předpověď je základ plus vážený součet příznaků; váhy jsou jediné, co se z dat odhaduje.

„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̄, ȳ).

Laicky řečeno

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
04812 30507090 plocha bytu (m²) cena bytu (mil. Kč) 051015 0,050,090,13 sklon přímky b (mil. Kč na m²) součet čtverců SSE (mil. Kč²) sklon 0,050 · SSE 9,66 sklon 0,110 · SSE 4,85 sklon 0,092 · SSE 3,81
Čtverce reziduí pro tři sklony; vpravo součet čtverců podle sklonu

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ů
Odchylky se měří od průměrů, a proto na posunutí všech ploch nebo cen o konstantu sklon nezávisí.
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):

xyx − x̄y − ȳsoučin(x − x̄)2
343,9−31,625−2,77587,7591000,141
454,1−20,625−2,57553,109425,391
526,2−13,625−0,4756,472185,641
615,6−4,625−1,0754,97221,391
707,94,3751,2255,35919,141
787,012,3750,3254,022153,141
889,622,3752,92565,447500,641
979,131,3752,42576,084984,391
součet303,2253289,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.

Laicky řečeno

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

  1. w ∈ ℝp+1 je bodem minima S, právě když XTXw = XTy;
  2. 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:

úsekplochavzdálenoststáří
skutečný vztah1,500,085−0,220−0,015
odhad z 60 bytů1,680,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í

  1. ŷ ∈ Col(X),
  2. 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.

Laicky řečeno

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.

předpovědi a + b·x y ŷ e
Tři měření jako vektor: předpověď ŷ je stín vektoru y v rovině modelu

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

  1. celkový součet čtverců SST = ∑i=1n (yi − ȳ)2 (je kladný, protože yi nejsou všechna stejná),
  2. vysvětlený součet čtverců SSR = ∑i=1n (ŷi − ȳ)2,
  3. 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é.

Laicky řečeno

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
Odečtením od jedničky se z podílu chyby stane podíl vysvětleného: 0 pro samotný průměr, 1 pro model bez reziduí. Obě podoby se rovnají jen proto, že SST = SSR + SSE — a to platí díky kolmosti z minulé kapitoly.
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éninkuR2 na 5 000 nových
jen plocha0,7470,717
plocha, vzdálenost, stáří0,9260,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?

0,40,60,81 0510152025303540 náhodné příznaky navíc (počet sloupců) koeficient determinace R² (0–1)
R² podle počtu přidaných náhodných příznaků (60 bytů) trénink upravené R² nová data strop

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.

Laicky řečeno

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
Podíl n − 1/n − p − 1 převede poměr součtů čtverců na poměr odhadů rozptylu, které na počtu parametrů nezávisí.
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é.

Laicky řečeno

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
Vzorec platí za předpokladu nezávislého šumu se stálým rozptylem σ2 a pevných příznaků.
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.

04812 30507090110 překlep plocha bytu (m²) cena bytu (mil. Kč)
Osm bytů a jeden překlep bez překlepu s překlepem

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. 1/n ≤ hii ≤ 1 pro každé i (dolní mez díky sloupci jedniček),
  2. ∑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.

Laicky řečeno

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.

Agent na vašem počítači, ovládaný z telefonu