Minste kvadraters metode bruker vi for å finne en funksjon som passer best mulig til datapunktene våre.
Fremgangsmåte:
Steg 1: Bestem deg for hvilken funksjon du vil bruke, f.eks.
– Lineær funksjon: $y = ax + b$
– Kvadratisk funksjon: $y = a x^2 + bx + c$
Steg 2: Hvert datapunkt $(x_i,y_i)$ vil ha en liten feil $\epsilon_i$ når du putter dem inn i funksjonen, f.eks:
– Lineære funksjon: $y_i = ax_i + b + \epsilon_i$
– Kvadratisk funksjon: $y_i = ax_i^2 + bx_i + c + \epsilon_i$
Steg 3: Skriv ligningene på vektorform: $\vec{y} = M\vec{a} + \vec{\epsilon}$ der $\vec{a}$ inneholder parameterne du trenger for funksjonen
Steg 4: Regn ut $M^T \vec{y}$ og $M_TM$ ved hjelp av matrisemultiplikasjon
Steg 5: Løs ligningssettet $M^T\vec{y} = M_TM\vec{a}$ for å finne $\vec{a}$
Steg 6: Sett verdiene for $\vec{a}$ inn i funksjonen
+ Lineær regresjon
Dersom du har et datasett $(x_i,y_i)$ og ønsker å finne en rett linje $y = ax + b$ som passer best mulig med datapunktene, kan du bruke lineær regresjon.
Hvis vi setter datapunktene inn i ligningen for en rett linje $y = ax + b$, vil hver ligning få en liten feil $\epsilon_i$:
y_1 = a x_1 + b + \epsilon_1 \\ y_2 = a x_2 + b + \epsilon_2 \\ \vdots \\ y_n = a x_n + b + \epsilon_n
Vi kan skrive ligningene på matriseform:
\underbrace{\left( \begin{array}{c} y_1 \\ y_2 \\ \vdots \\ y_n \end{array} \right)}_{=\vec{y}} = \underbrace{\left( \begin{array}{cc} x_1 & 1 \\ x_2 & 1 \\ \vdots \\ x_n & 1 \end{array} \right)}_{= M} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right) }_{=\vec{a}} + \underbrace{\left( \begin{array}{c} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{array} \right)}_{=\vec{\epsilon}} \quad \Rightarrow \quad \vec{y} = M \vec{a} + \vec{\epsilon}
For å få minst mulig feil, må $M^T \epsilon = 0$.
+ Hvorfor må $M^T \epsilon = 0$?
For å få minst mulig feil, må $\vec{\epsilon}$ være kortest mulig.
Se for deg at kolonnene i $M$ spenner ut et $n$-dimensjonelt plan. Den korteste veien mellom punktet $\epsilon$ og dette planet, er når $\vec{\epsilon}$ står vinkelrett på planet, dvs. skalarproduktet mellom hver kolonne i $M$ og $\vec{\epsilon}$ er null:
\begin{array}{rl} & \left\{ \begin{array}{c} \vec{m_1} \cdot \vec{\epsilon} = 0 \\ \vec{m_2} \cdot \vec{\epsilon} = 0 \end{array} \right. \\ \Rightarrow \quad & \left\{ \begin{array}{l} x_1 \epsilon_1 + x_2 \epsilon_2 + \cdots + x_n \epsilon_n = 0 \\ 1 \cdot \epsilon_1 + 1 \cdot \epsilon_2 + \cdots + 1 \cdot \epsilon_n = 0 \end{array} \right. \\ \Rightarrow \quad & \left( \begin{array}{cccc} x_1 & x_2 & \cdots & x_n \\ 1 & 1 & \cdots & 1 \end{array} \right) \left( \begin{array}{c} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{array} \right) = \left( \begin{array}{c} 0 \\ 0 \end{array} \right) \\ \Rightarrow & M^T \vec{\epsilon} = 0 \end{array}
Og derfor må $M^T \epsilon = 0$. PS: Husk at $M^T$ er en transponerte matrisen til $M$.
Multipliserer begge sider av $\vec{y} = M\vec{a} + \epsilon$ med $M^T$:
M^T \vec{y} = M^TM \vec{a}
Siden vi har alle datapunktene, vet vi hva $M$ og $\vec{y}$ er. Det kan vi bruke til å finne $\vec{a}$. Og, vips, har vi alt vi trenger for å finne linjen som passer best til datasettet.
+ Eksempel 1: Lineær regresjon
Regresjon brukes ofte på store datasett, men nå vil vi illustrere lineær regresjon på et lite datasett.
$x$ | $y$ |
---|---|
2 | 4 |
3 | 5 |
4 | 7 |
+ Kort video
Steg 1: Vi skal bruke lineær regresjon, dvs. vi vil finne $a$ og $b$ slik at linjen $y = ax + b$ passer best mulig til datasettet vårt.
Steg 2: Hvert datapunkt har en liten feil $\epsilon_i$ når vi putter dem inn i funksjonen:
4 = 2a + b + \epsilon_1 \\ 5 = 3a + b + \epsilon_2 \\ 7 = 4a + b + \epsilon_3
Steg 3: Skriver ligningssettet på matriseform:
\underbrace{\left( \begin{array}{c} 4 \\ 5 \\ 7 \end{array} \right)}_{=\vec{y}} = \underbrace{\left( \begin{array}{cc} 2 & 1 \\ 3 & 1 \\ 4 & 1 \end{array} \right)}_{= M} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right) }_{=\vec{a}} + \underbrace{\left( \begin{array}{c} \epsilon_1 \\ \epsilon_2 \\ \epsilon_3 \end{array} \right)}_{=\vec{\epsilon}} \quad \Rightarrow \quad \vec{y} = M \vec{a} + \vec{\epsilon}
Steg 4: Regner ut $M^T\vec{y}$ og $M^TM$ ved hjelp av matrisemultiplikasjon:
M^T \vec{y} = \left( \begin{array}{ccc} 2 & 3 & 4 \\ 1 & 1 & 1 \end{array} \right) \left( \begin{array}{c} 4 \\ 5 \\ 7 \end{array} \right) = \left( \begin{array}{c} 51 \\ 16 \end{array} \right) \\ M^T M = \left( \begin{array}{ccc} 2 & 3 & 4 \\ 1 & 1 & 1 \end{array} \right) \left( \begin{array}{cc} 2 & 1 \\ 3 & 1 \\ 4 & 1 \end{array} \right) = \left( \begin{array}{c} 29 & 9 \\ 9 & 3 \end{array} \right)
Steg 5: Løser $M^T\vec{y} = M_TM\vec{a}$ for å finne $\vec{a}$:
\underbrace{\left( \begin{array}{c} 29 & 9 \\ 9 & 3 \end{array} \right)}_{=M^TM} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right)}_{=\vec{a}} = \underbrace{\left( \begin{array}{c} 51 \\ 16 \end{array} \right)}_{=M^T\vec{y}}
Her kan vi bruke radoperasjoner, Cramers regel eller den inverse matrisen. Hvis vi velger Cramers regel:
a = \frac{\left| \begin{array}{cc} \textcolor{red}{51} & 9 \\ \textcolor{red}{16} & 3 \end{array} \right|}{\left| \begin{array}{cc} 29 & 9 \\ 9 & 3 \end{array} \right|} = \frac{51 \cdot 3 - 9 \cdot 16}{29 \cdot 3 - 9 \cdot 9} = \frac{3}{2} \\ b = \frac{\left| \begin{array}{cc} 29 & \textcolor{red}{51} \\ 9 & \textcolor{red}{16} \end{array} \right|}{\left| \begin{array}{cc} 29 & 9 \\ 9 & 3 \end{array} \right|} = \frac{29 \cdot 16 - 51 \cdot 9}{29 \cdot 3 - 9 \cdot 9} = \frac{5}{6}
Steg 6: Nå kan vi sette $a = \frac{3}{2}$ og $b = \frac{5}{6}$ inn i den lineære funksjonen:
y = \frac{3}{2} x + \frac{5}{6}
Og, vips, har vi den lineære ligningen som passer best med datapunktene.
+ Eksempel 2: Lineær regresjon
Vi skal nå illustrere lineær regresjon på et lite datasett:
$x$ | $y$ |
---|---|
1 | 5 |
2 | 4 |
3 | 5 |
4 | 9 |
5 | 12 |
Steg 1: Vi skal bruke lineær regresjon, dvs. vi vil finne $a$ og $b$ slik at linjen $y = ax + b$ passer best mulig til datasettet vårt.
Steg 2: Hvert datapunkt har en liten feil $\epsilon_i$ når vi putter dem inn i funksjonen:
5 = 1a + b + \epsilon_1 \\ 4 = 2a + b + \epsilon_2 \\ 5 = 3a + b + \epsilon_3 \\ 9 = 4a + b + \epsilon_4 \\ 12 = 5a + b + \epsilon_5
Steg 3: Skriver ligningssettet på matriseform:
\underbrace{\left( \begin{array}{c} 5 \\ 4 \\ 5 \\ 9 \\ 12 \end{array} \right)}_{=\vec{y}} = \underbrace{\left( \begin{array}{cc} 1 & 1 \\ 2 & 1 \\ 3 & 1 \\ 4 & 1 \\ 5 & 1\end{array} \right)}_{= M} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right) }_{=\vec{a}} + \underbrace{\left( \begin{array}{c} \epsilon_1 \\ \epsilon_2 \\ \epsilon_3 \\ \epsilon_4 \\ \epsilon_5 \end{array} \right)}_{=\vec{\epsilon}} \quad \Rightarrow \quad \vec{y} = M \vec{a} + \vec{\epsilon}
Steg 4: Regner ut $M^T\vec{y}$ og $M^TM$ ved hjelp av matrisemultiplikasjon:
M^T \vec{y} = \left( \begin{array}{ccc} 1 &2 & 3 & 4 & 5 \\ 1 & 1 & 1 & 1 & 1 \end{array} \right) \left( \begin{array}{c} 5 \\ 4 \\ 5 \\ 9 \\ 12 \end{array} \right) = \left( \begin{array}{c} 124 \\ 35 \end{array} \right) \\ M^T M = \left( \begin{array}{ccc} 1 & 2 & 3 & 4 & 5 \\ 1& 1& 1 & 1 & 1 \end{array} \right) \left( \begin{array}{cc} 1 & 1 \\2 & 1 \\ 3 & 1 \\ 4 & 1 \\ 5 & 1\end{array} \right) = \left( \begin{array}{c} 55 & 15 \\ 15 & 5 \end{array} \right)
Steg 5: Løser $M^T\vec{y} = M_TM\vec{a}$ for å finne $\vec{a}$:
\underbrace{\left( \begin{array}{c} 55 & 15 \\ 15 & 5 \end{array} \right)}_{=M^TM} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right)}_{=\vec{a}} = \underbrace{\left( \begin{array}{c} 124 \\ 35 \end{array} \right)}_{=M^T\vec{y}}
Her kan vi bruke radoperasjoner, Cramers regel eller den inverse matrisen. Hvis vi velger Cramers regel:
a = \frac{\left| \begin{array}{cc} \textcolor{red}{124} & 15 \\ \textcolor{red}{35} & 5 \end{array} \right|}{\left| \begin{array}{cc} 55 & 15 \\ 15 & 5 \end{array} \right|} = \frac{124 \cdot 5 - 15 \cdot 35}{55 \cdot 5 - 15 \cdot 15} = 1.9 \\ b = \frac{\left| \begin{array}{cc} 55 & \textcolor{red}{124} \\ 15 & \textcolor{red}{35} \end{array} \right|}{\left| \begin{array}{cc} 55 & 15 \\ 15 & 5 \end{array} \right|} = \frac{55 \cdot 35 - 124 \cdot 15}{55 \cdot 5 - 15 \cdot 15} = 1.3
Steg 6: Nå kan vi sette $a = 1.9$ og $b = 1.3$ inn i den lineære funksjonen:
y = 1.9 x + 1.3
Og, vips, har vi den lineære ligningen som passer best med datapunktene.
+ Eksempel 3: Kvadratisk regresjon
Vi skal nå illustrere kvadratisk regresjon på et lite datasett:
$x$ | $y$ |
---|---|
1 | 5 |
2 | 4 |
3 | 5 |
4 | 9 |
5 | 12 |
Steg 1: Vi skal bruke kvadratisk regresjon, dvs. vi vil finne $a$, $b$ og $c$ slik at linjen $y = ax^2 + by + c$ passer best mulig til datasettet vårt.
Steg 2: Hvert datapunkt har en liten feil $\epsilon_i$ når vi putter dem inn i funksjonen:
5 = 1^2a + 1b + c + \epsilon_1 \\ 4 = 2^2a + 2b + c + \epsilon_2 \\ 5 = 3^2a + 3b + c + \epsilon_3 \\ 9 = 4^2a + 4b + c + \epsilon_4 \\ 12 = 5^2a + 5b + c + \epsilon_5
Steg 3: Skriver ligningssettet på matriseform:
\underbrace{\left( \begin{array}{c} 5 \\ 4 \\ 5 \\ 9 \\ 12 \end{array} \right)}_{=\vec{y}} = \underbrace{\left( \begin{array}{cc} 1^2 & 1 & 1 \\ 2^2 & 2 & 1 \\ 3^2 & 3 & 1 \\ 4^2 & 4 & 1 \\ 5^2 & 5 & 1\end{array} \right)}_{= M} \underbrace{\left( \begin{array}{c} a \\ b \\ c\end{array} \right) }_{=\vec{a}} + \underbrace{\left( \begin{array}{c} \epsilon_1 \\ \epsilon_2 \\ \epsilon_3 \\ \epsilon_4 \\ \epsilon_5 \end{array} \right)}_{=\vec{\epsilon}} \quad \Rightarrow \quad \vec{y} = M \vec{a} + \vec{\epsilon}
Steg 4: Regner ut $M^T\vec{y}$ og $M^TM$ ved hjelp av matrisemultiplikasjon:
M^T \vec{y} = \left( \begin{array}{ccc} 1^2 & 2^2 & 3^2 & 4^2 & 5^2 \\ 1 &2 & 3 & 4 & 5 \\ 1 & 1 & 1 & 1 & 1 \end{array} \right) \left( \begin{array}{c} 5 \\ 4 \\ 5 \\ 9 \\ 12 \end{array} \right) = \left( \begin{array}{c} 510 \\ 124 \\ 35 \end{array} \right) \\ M^T M = \left( \begin{array}{ccc} 1^2 & 2^2 & 3^2 & 4^2 & 5^2 \\ 1 & 2 & 3 & 4 & 5 \\ 1& 1& 1 & 1 & 1 \end{array} \right) \left( \begin{array}{cc} 1^1 & 1 & 1 \\ 2^2 & 2 & 1 \\ 3^2 & 3 & 1 \\ 4^2 & 4 & 1 \\ 5^2 & 5 & 1\end{array} \right) = \left( \begin{array}{c} 979 & 225 & 55 \\ 225 & 55 & 15 \\ 55 & 15 & 5 \end{array} \right)
Steg 5: Løser $M^T\vec{y} = M_TM\vec{a}$ for å finne $\vec{a}$:
\underbrace{\left( \begin{array}{c} 979 & 225 & 55 \\ 225 & 55 & 15 \\ 55 & 15 & 5 \end{array} \right)}_{=M^TM} \underbrace{\left( \begin{array}{c} a \\ b \\ c \end{array} \right)}_{=\vec{a}} = \underbrace{\left( \begin{array}{c} 510 \\ 124 \\ 35 \end{array} \right)}_{=M^T\vec{y}}
Her kan vi bruke radoperasjoner, Cramers regel eller den inverse matrisen. Uansett hvilken metode vi velger, skal vi få:
a \approx 0.7857 \\ b \approx -2.8143 \\ c \approx 6.800
Steg 6: Nå kan vi sette $a$, $b$ og $c$ inn i den kvadratiske funksjonen:
y \approx 0.7857x^2 - 2.8143x + 6.800
Og, vips, har vi den lineære ligningen som passer best med datapunktene.
+ Eksempel 4: Eksponentiell regresjon
Vi skal nå illustrere eksponentiell regresjon på et lite datasett:
Uke etter uke 6 i 2021, $t$ | Antall smittede av covid-19, $s$ |
---|---|
0 | 1734 |
1 | 2029 |
2 | 3101 |
3 | 4184 |
4 | 5655 |
5 | 6565 |
Steg 1: Vi skal bruke eksponentiell regresjon, dvs. vi vil finne $a$ og $b$ slik at linjen $s = be^{at}$ passer best mulig til datasettet vårt.
For å kunne bruke lineær regresjon, må vi funksjonen vår være et polynom. Derfor må vi omforme ligningen vår ved å bruke logaritmereglene:
\begin{array}{lrcl} & s & = & ke^{at} \\ \Rightarrow \quad & \ln(s) & = & \ln(ke^{at}) \\ \Rightarrow \quad & \ln(s) & = & \ln(k) + \ln(e^{at}) \\ \Rightarrow \quad & \ln(s) & = & \ln(k) + at \end{array}
Hvis vi nå seter $y = \ln(s)$ og $b = \ln(k)$, har vi en lineær funksjon:
y = b + at
Steg 2: Hvert datapunkt har en liten feil $\epsilon_i$ når vi putter dem inn i funksjonen:
\ln(1734) = 0a + b + \epsilon_0 \\ \ln(2029) = 1a + b + \epsilon_1 \\ \ln(3101) = 2a + b + \epsilon_2 \\ \ln(4184) = 3a + b + \epsilon_3 \\ \ln(5655) = 4a + b + \epsilon_4 \\ \ln(6565) = 5a + b + \epsilon_5
Steg 3: Skriver ligningssettet på matriseform:
\underbrace{\left( \begin{array}{c} \ln(1734) \\ \ln(2029) \\ \ln(3101) \\ \ln(4184) \\ \ln(5655) \\ \ln(6565) \end{array} \right)}_{=\vec{y}} = \underbrace{\left( \begin{array}{cc} 0 & 1 \\ 1 & 1 \\ 2 & 1 \\ 3 & 1 \\ 4 & 1 \\ 5 & 1\end{array} \right)}_{= M} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right) }_{=\vec{a}} + \underbrace{\left( \begin{array}{c} \epsilon_0 \\ \epsilon_1 \\ \epsilon_2 \\ \epsilon_3 \\ \epsilon_4 \\ \epsilon_5 \end{array} \right)}_{=\vec{\epsilon}} \quad \Rightarrow \quad \vec{y} = M \vec{a} + \vec{\epsilon}
Steg 4: Regner ut $M^T\vec{y}$ og $M^TM$ ved hjelp av matrisemultiplikasjon:
M^T \vec{y} = \left( \begin{array}{ccc} 0 & 1 &2 & 3 & 4 & 5 \\ 1 & 1 & 1 & 1 & 1 & 1 \end{array} \right) \left( \begin{array}{c} \ln(1734) \\ \ln(2029) \\ \ln(3101) \\ \ln(4184) \\ \ln(5655) \\ \ln(6565) \end{array} \right) \approx \left( \begin{array}{c} 127.22 \\ 48.88 \end{array} \right) \\ M^T M = \left( \begin{array}{ccc} 0 & 1 & 2 & 3 & 4 & 5 \\ 1 & 1& 1& 1 & 1 & 1 \end{array} \right) \left( \begin{array}{cc} 0 & 1 \\1 & 1 \\2 & 1 \\ 3 & 1 \\ 4 & 1 \\ 5 & 1\end{array} \right) = \left( \begin{array}{c} 55 & 15 \\ 15 & 6 \end{array} \right)
Steg 5: Løser $M^T\vec{y} = M_TM\vec{a}$ for å finne $\vec{a}$:
\underbrace{\left( \begin{array}{c} 55 & 15 \\ 15 & 6 \end{array} \right)}_{=M^TM} \underbrace{\left( \begin{array}{c} a \\ b \end{array} \right)}_{=\vec{a}} = \underbrace{\left( \begin{array}{c} 127.22 \\ 48.88 \end{array} \right)}_{=M^T\vec{y}}
Her kan vi bruke radoperasjoner, Cramers regel eller den inverse matrisen. Hvis vi velger Cramers regel:
a = \frac{\left| \begin{array}{cc} \textcolor{red}{127.22} & 15 \\ \textcolor{red}{48.88} & 6 \end{array} \right|}{\left| \begin{array}{cc} 55 & 15 \\ 15 & 6 \end{array} \right|} = \frac{127.22 \cdot 6 - 15 \cdot 48.88}{55 \cdot 6 - 15 \cdot 15} \approx 0.287 \\ b = \frac{\left| \begin{array}{cc} 55 & \textcolor{red}{127.22} \\ 15 & \textcolor{red}{48.88} \end{array} \right|}{\left| \begin{array}{cc} 55 & 15 \\ 15 & 6 \end{array} \right|} = \frac{55 \cdot 48.88 - 127.22 \cdot 15}{55 \cdot 6 - 15 \cdot 15} \approx 7.430
Steg 6: Nå kan vi sette $a = 0.287$ og $b = 7.430$ inn i den lineære funksjonen:
y = 0.287 t + 7.430
Siden $y = \ln(s)$, har vi at $s = e^y$:
s = e^{0.287t + 7.430} = e^{0.287t} \cdot e^{7.430} = 1686e^{0.287t}
Og, vips, har vi den eksponentielle ligningen som passer best med datapunktene.