TODO: až nebude na sandboxu, upravit velikosti obrazku v PDF
V praxi se často setkáváme s tím, že hodnotami jedné veličiny jsou dány hodnoty druhé veličiny a ze sady naměřených nebo statisticky získaných dat určujeme matematický model udávající funkční závislost mezi oběma veličinami. Jako příklad můžeme uvažovat data udávající výšku amerických žen ve věku mezi 30 a 39 lety (zdroj https://en.wikipedia.org/wiki/Simple_linear_regression, 12.4.2024, pro stručnost je použita jenom polovina dat).
výška/m | \(1{,}47\) | \(1{,}52\) | \(1{,}57\) | \(1{,}63\) | \(1{,}68\) | \(1{,}73\) | \(1{,}78\) | \(1{,}83\) |
---|---|---|---|---|---|---|---|---|
hmotnost/kg | \(52{,}21\) | \(54{,}48\) | \(57{,}20\) | \(59{,}93\) | \(63{,}11\) | \(66{,}28\) | \(69{,}92\) | \(74{,}46\) |
Data jsou vykreslena na obrázku vlevo. Z obrázku je patrné, že s rostoucí výškou roste i hmotnost. V takovém případě je možné najít matematický model, který udává hmotnost jako funkci výšky. Takový matematický model je znázorněn barevně na obrázku vpravo. Jedná se o model, který umožní pro zadanou výšku ženy předpovědět její hmotnost.
Popsaná úloha se nazývá lineární regrese.
Lineární regrese jedna ze základních metod strojového učení, kdy v datech odhalíme jistou funkční závislost. Tuto poté můžeme použít k tomu, abychom dávali predikce funkčních hodnot pro data, která se v zadaném souboru nevyskytují.
V následujícím textu si ukážeme, jak lineární regrese souvisí s lineární kombinací vektorů a jak je možné regresní přímku najít pomocí operací s vektory.
Nejprve jedna snadná úloha. Klasickou úlohou související s vektory je zapsat zadaný vektor jako lineární kombinaci zadaných vektorů.
Úloha zapsat vektor \(\vec c = \begin{pmatrix}1 \cr 2\end{pmatrix}\) jako lineární kombinaci vektorů \(\vec a = \begin{pmatrix}2 \cr 2\end{pmatrix}\) a \(\vec b = \begin{pmatrix}3 \cr 1\end{pmatrix}\) znamená najít čísla \(t_1\) a \(t_2\) s vlastností \[ t_1 \vec a + t_2 \vec b = \vec c. \] Po rozepsání do souřadnic vidíme, že tato úloha vede na soustavu rovnic \[ \begin{aligned} 2t_1+3t_2 &= 1,\cr 2t_1+t_2 &=2. \end{aligned} \] Tato soustava má jediné řešení \(t_1=\frac 54\) a \(t_2=-\frac 12\).
Nyní něco komplikovanějšího. Úlohu na sestavení lineární kombinace si ztížíme tím, že vektorů bude více. Vektory však budou mít speciální vlastnost, která řešení znatelně usnadní.
Úloha najít vektor \(\vec w=\begin{pmatrix}1\cr 2\cr 1\end{pmatrix}\) jako lineární kombinaci vektorů \(\vec u_1=\begin{pmatrix}2\cr 2\cr 1\end{pmatrix}\), \(\vec u_2=\begin{pmatrix}3\cr 1\cr 2\end{pmatrix}\), \(\vec u_3=\begin{pmatrix}3\cr -1\cr -4\end{pmatrix}\) vede na úlohu najít čísla \(t_1\), \(t_2\) a \(t_3\) s vlastostí \[ t_1 \vec u_1+t_2\vec u_2 + t_3 \vec u_3 = \vec w.\tag{1} \] Po dosazení dostáváme soustavu tří rovnic \[\tag{2} \begin{aligned} 2t_1 + 3t_2 + 3t_3 &= 1,\cr 2 t_1 + t_2 -t_3 &=2,\cr t_1+2t_2-4t_3&=1. \end{aligned} \]
Řešení takové soustavy je poměrně nepříjemné, ale v tomto případě můžeme využít speciální vlastnosti zadaných vektorů. Vektor \(\vec u_3\) je totiž kolmý k vektorům \(\vec u_1\) a \(\vec u_2\) a tedy i k rovině definované těmito vektory. Tuto skutečnost snadno ukážeme výpočtem skalárních součinů \[ \vec u_1\cdot \vec u_3 = 2\cdot 3 +2\cdot (-1)+1\cdot (-4) = 0 \] a \[ \vec u_2\cdot \vec u_3 = 3\cdot 3 +1\cdot (-1)+2\cdot (-4) = 0. \] Díky této vlastnosti se vyplatí rovnici (1) vynásobit skalárně po řadě vektory \(\vec u_1\) až \(\vec u_3\). Tím dostáváme následující tři rovnice. \[ \begin{aligned} t_1 (\vec u_1\cdot \vec u_1) + t_2 (\vec u_2\cdot \vec u_1) + t_3 (\vec u_3\cdot \vec u_1) &= \vec w\cdot \vec u_1\cr t_1 (\vec u_1\cdot \vec u_2) + t_2 (\vec u_2\cdot \vec u_2) + t_3 (\vec u_3\cdot \vec u_2) &= \vec w\cdot \vec u_2\cr t_1 (\vec u_1\cdot \vec u_3) + t_2 (\vec u_2\cdot \vec u_3) + t_3 (\vec u_3\cdot \vec u_3) &= \vec w\cdot \vec u_3 \end{aligned} \] Výpočtem skalárních součinů dostáváme soustavu, která je nepoměrně jednodušší než soustava (2). \[ \begin{aligned} 9t_1+10t_2=7\cr 10t_1+14t_2=7\cr 26t_3=-3 \end{aligned} \] Z poslední rovnice vidíme přímo jednu z neznámých a dvě první rovnice tvoří soustavu dvou rovnic o dvou neznámých. (Konkrétní řešení není v tuto chvíli podstatné. Je však zřejmé, že soustava má právě jedno řešení.)
Nyní naši úlohu modifikujeme do třetice. Jeden z vektorů se kterými pracujeme vynecháme, čímž se stane úloha v klasickém smyslu neřešitelnou. Zobecníme však rozumným způsobem pojem řešení. Nebudeme hledat hodnoty neznámých, pro které jsou si levé a pravé strany rovny. Namísto toho budeme hledat alespoň takové hodnoty neznámých, pro které se levé a pravé strany co nejméně liší.
Úloha vyjádřit vektor \(\vec w\) z minulé podkapitoly jako lineární kombinaci vektorů \(\vec u_1\) a \(\vec u_2\) je ukázkou takového problému. Musíme najít čísla \(t_1\), \(t_2\) taková, že platí \[t_1\vec u_1 + t_2\vec u_2 = \vec w\] a v souřadnicích \[ \begin{aligned} 2t_1 + 3t_2 &= 1,\cr 2 t_1 + t_2 &=2,\cr t_1+2t_2&=1. \end{aligned} \] Je snadné se přesvědčit, že tato soustava je nekonzistentní a nemá řešení. Opravdu, soustavu složenou z prvních dvou rovnic jsme vyřešili v úvodu (\(t_1=\frac 54\) a \(t_2=-\frac 12\)) a poslední rovnice je s touto volbou ve sporu (\(\frac 54+2\cdot(-\frac 12)\neq 1\)).
Řešení nekonzistentní soustavy rovnic. V tuto chvíli oslabíme požadavky na řešení soustavy rovnic. Řešením nekonzistentní soustavy rovnic budeme rozumět takovou volbu hodnot neznámých, pro kterou je délka vektoru vyjadřujícího rozdíl levých a pravých stran soustavy minimální.
Na obrázku si vysvětlíme, co daná soustava vyjadřuje a jak je možné si představit její řešení ve výše uvedeném oslabeném smyslu. Snažíme se pomocí lineární kombinace vektorů \(\vec u_1\) a \(\vec u_2\) vyjádřit vektor \(\vec w\), který v rovině definované těmito vektory neleží. Taková úloha nemá řešení. Budeme se proto snažit najít alespoň takovou lineární kombinaci, která se od vektoru \(\vec w\) liší co nejméně. To bude vektor \(\vec w_0\), přičemž rozdíl mezi \(\vec w\) a \(\vec w_0\) je znázorněn vektorem \(\vec \varepsilon\). Snažíme se o to, aby délka vektoru \(\vec \varepsilon\) byla co nejmenší. Z geometrie je snadné nahlédnout, že toto nastane v případě, kdy je vektor \(\vec \varepsilon\) kolmý k rovině definované vektory \(\vec u_1\) a \(\vec u_2\). Tím se dostáváme do stejné situace, jako byla v předchozí části textu. Tam jsme také viděli trik, jak najít koeficienty u vektorů \(\vec u_1\) a \(\vec u_2\) bez řešení plné soustavy rovnic: vynásobili jsme soustavu skalárně vektory \(\vec u_1\) a \(\vec u_2\). Dokonce k tomuto výpočtu ani nemusíme znát vektor \(\vec \varepsilon\).
Protože délka vektoru \(\vec\varepsilon\) se vyjadřuje pomocí druhých mocnin souřadnic tohoto vektoru, má metoda název metoda nejmenších čtverců.
Celý postup si ukážeme na příkladě v následující části.
Uvažujme data z následující tabulky.
\(x\) | \(2\) | \(3\) | \(4\) |
---|---|---|---|
\(y\) | \(1\) | \(5\) | \(7\) |
Hledáme přímku \(y=ax+b\), která co nejlépe vystihuje trend v tomto souboru a byla by vhodným matematickým modelem pro tato data. Dosazením každého ze tří bodů do modelu dostáváme tři rovnice. \[ \begin{aligned} 2a+b=1\cr 3a+b=5\cr 4a+b=7 \end{aligned} \] To je úloha s nekonzistentní soustavou rovnic, která nemá řešení v klasickém slova smyslu. Vektorový tvar této soustavy je následující. \[ a \begin{pmatrix}2\\3\\4\end{pmatrix} + b \begin{pmatrix}1\\1\\1\end{pmatrix} = \begin{pmatrix}1\\5\\7\end{pmatrix} \] Po vynásobení po řadě vektory \(\begin{pmatrix}2\\3\\4\end{pmatrix}\) a \(\begin{pmatrix}1\\1\\1\end{pmatrix}\) dostáváme soustavu dvou rovnic. \[ \begin{aligned} 29a+9b&=45\\ 9a+3b&=13 \end{aligned} \] Řešení této soustavy je \(a=3\) a \(b=-\frac {14}3\). Regresním modelem pro zadaná data je tedy přímka \[y=3x-\frac {14}3.\] Graf obsahující uvedená data a regresní přímku je na obrázku.
Postup uvedený v předchozím textu pro tři body je možné zobecnit na libovolný počet bodů. Není neobvyklé pracovat s datovým souborem obsahujícím stovky bodů.
Je-li vektor \(\vec X\) vektorem obsahujícím hodnoty nezávislé proměnné1 a \(\vec Y\) vektor obsahující hodnoty závislé proměnné, budeme uvažovat model2 \[ \vec Y = a\vec X+b. \] Koeficienty \(a\) a \(b\) určíme tak, že tuto rovnici přepíšeme na vektorovou rovnici \[ \vec Y = a\vec X+b\vec 1, \] kde \(\vec 1\) je vektor sestavený z jedniček. Tuto rovnici vynásobíme skalárně vektorem \(\vec X\) a vektorem \(\vec 1\). Dostáváme tak soustavu \[ \begin{aligned} a(\vec X\cdot \vec X)+ b(\vec X\cdot \vec 1) &= \vec X\cdot \vec Y \cr a(\vec 1\cdot \vec X)+ b(\vec 1\cdot \vec 1) &= \vec 1\cdot \vec Y \cr \end{aligned}\tag{3} \]
Pro více než tři body takto pracujeme s vektory větší dimenze než tři. V důsledku toho přicházíme o názornou geometrickou představu. Až na tuto skutečnost se však na práci nic nemění. Skalární součin dvou se stále počítá tak, že se vynásobí odpovídající komponenty a tyto součiny se poté sečtou.
Po dosazení dat o amerických ženách z úvodu tohoto textu dostáváme následující vztahy.
\[ \begin{aligned} \vec X\cdot\vec X&= 1{,}47^2 + 1{,}52^2+1{,}57^2+\cdots+1{,}83^2=21{,}9257\cr \vec X\cdot\vec Y&= 1{,}47 \cdot 52{,}21 + 1{,}52\cdot 54{,}48 + 1{,}57\cdot 57{,}20+\cdots+ 1{,}83\cdot 74{,}46=828{,}4568\cr \vec 1\cdot\vec X&= 1{,}47 + 1{,}52+ 1{,}57+\cdots+ 1{,}83= 13{,}21\cr \vec 1\cdot\vec Y&= 52{,}21 + 54{,}48+57{,}20+\cdots+74{,}46=497{,}59\cr \vec 1\cdot\vec 1 &= 1+1+1+\cdots +1=8 \end{aligned} \]
Po dosazení hodnot skalárních součinů do (3) dostáváme soustavu dvou rovnic o dvou neznámých
\[ \begin{aligned} 21{,}9257a+13{,}21b&=828{,}4568,\cr 13{,}21a+8b&=497{,}59, \end{aligned} \]
která má jediné řešení. Tímto řešením3 je \(a=60{,}44\) a \(b=-37{,}61\). Modelem, který udává závislost hmotnosti žen \(y\) na jejich výšce \(x\), je vztah \[y=60{,}44x-37{,}61.\]
Obrázek ukazuje použitá data, regresní závislost a predikci pro hmotnost ženy o výšce \(1{,}72\) metru.
Úloha 1. Najděte regresní přímku pro zadaná data.
\(x\) | \(1{,}0\) | \(2{,}0\) | \(3{,}0\) | \(4{,}0\) |
---|---|---|---|---|
\(y\) | \(2{,}3\) | \(2{,}5\) | \(3{,}1\) | \(3{,}3\) |
Úloha 2. Lineární regrese je jednou ze základních inženýrských metod. Jako taková je prakticky v každém nástroji na zpracování dat. Lineární regresi obsahuje většina vyspělejších kalkulátor, lineární regresi najdete v programech MS Excel a OpenOffice Calc, najdete ji i v programovacích jazycích pro práci s daty, jako je Python nebo Octave. Zjistěte, jestli tato funkce je ve výpočetním prostředku, který používáte a zopakujte výpočet se závislostí hmotnosti žen na výšce. Hledejte pojmy jako lineární regrese nebo metoda nejmenších čtverců.
Použijeme zápis běžně užívaný při zpracování dat, kdy datové soubory (vektory) označujeme velkými písmeny a vektor, který má všechny komponenty rovny stejnému číslu zapisujeme jako dané číslo se šipkou pro označení vektoru.↩︎
Přísně vzato tato operace nemá matematicky smysl, protože sčítáme vektor s reálným číslem. Tuto operaci je nutno interpretovat po složkách, kdy toto sčítání znamená, že se reálné číslo změní na vektor příslušné dimenze tak, aby operace byla definována. toto přizpůsobení se naýváme broadcasting. Ve výsledku ke každé komponentě vektoru \(a\vec X\) přičítáme hodnotu \(b\).↩︎
Pozor, úloha je poměrně citlivá na zaokrouhlování.↩︎