Metoda nejmenších čtverců

Metoda nejmenších čtverců slouží k nalezení vektoru \mathbb{x} soustavy \mathbb{Ax} = \mathbb{y} v momentě, kdy přesné řešení soustavy neexistuje (nebo by bylo příliš složité). Kvalita řešení je definována jako součet čtverců vzdáleností mezi vektory \mathbb{Ax} a \mathbb{y}.

Kriteriální funkce má tedy tvar:

F(x) = \vert \vert \mathbb{Ax} - \mathbb{y} \vert \vert^2 = \mathbb{x^{T}A^{T}Ax} - 2\mathbb{y^{T}Ax} + \mathbb{y^{T}y}

Protože je matice \mathbb{A^{T}A} positivně definitní, tak nám stačí pro nalezení minima funkci F zderivovat podle \mathbb{x} a výsledek porovnat s nulou.

{{\partial F} \over {\partial x}} = 2 \mathbb{A^{T}Ax} - 2\mathbb{A^{T}y}
 2 \mathbb{A^{T}Ax} - 2\mathbb{A^{T}y} = 0
 \mathbb{x} = (\mathbb{A^{T}A})^{-1} \mathbb{A^{T} y}
Body proložené přímkou pomocí metody nejmenších čtverců
Body proložené přímkou pomocí metody nejmenších čtverců

Operace  \mathbb{x} = (\mathbb{A^{T}A})^{-1}\mathbb{A^{T}} se nazývá pseudoinverze.

Příklad

Proložte body \{(1, 1); (2, 1); (3, 2)\} přímkou y = k \cdot x + q tak, aby byl součet čtverců svislých vzdáleností minimální.

Protože aproximujeme data přímkou, jsou zde dvě neznámé k a q. Matice \mathbb{A} obsahuje sloupec vodorovných souřadnic jednotlivých bodů (x) a sloupec jedniček (koeficienty u q). Sloupcový vektor \mathbb{y} obsahuje svislé souřadnice jednotlivých bodů.


\mathbb{x} = \begin{pmatrix}
k \\ q
\end{pmatrix}
\mathbb{A} = 
\begin{pmatrix}
1 & 1 \\
2 & 1 \\
3 & 1
\end{pmatrix}
\mathbb{y} = 
\begin{pmatrix} 
1 \\
1 \\
2
\end{pmatrix}

Dosadíme do vzorce


{
\begin{pmatrix}
\begin{pmatrix}
      1   &  2 &    3 \\
     1   &  1   &  1
\end{pmatrix}
\cdot
\begin{pmatrix}
1 & 1 \\ 
2 & 1 \\
3 & 1
\end{pmatrix} 
\end{pmatrix}} ^{-1} 
\cdot
\begin{pmatrix}
      1   &  2 &    3 \\
     1   &  1   &  1
\end{pmatrix}
\cdot
 \begin{pmatrix}
1 \\ 1 \\ 2
\end{pmatrix}
=
\begin{pmatrix}
    1/2  & -1 \\
   -1  &  7/3
\end{pmatrix}
\cdot
\begin{pmatrix}
     9 \\
     4
\end{pmatrix}
 = 
\begin{pmatrix}
{1 / 2} \\
 {1 / 3}
\end{pmatrix}

Přímka bude mít rovnici y = {1 \over 2}x + {1 \over 3}.

Řešeni v MATLABu


A = [1 1; 2 1; 3 1]
y = [1; 1; 2];
x = A\y

position = A(1:length(A), 1);

hold on;
plot(position, y, 'r+');
plot(position, x(1) * position + x(2));
hold off;

{ zpětná vazba }
Delicious Delicious
Sdílet
Hodnocení (3): 5

Přečtěte si také

Diskuse





Pavel Mička18.11.2011
To tam doufám nikde neříkám. Příklad s přímkou je skutečně pouze jenom příklad možného užití. Prokládat body lze samozřejmě i jinými funkcemi.
Adam17.11.2011
Dovolím si poznamenat, že metoda nejmenších čtverců je mnohem obecnější nástroj než lineární regrese. LSM je pouze jedno z možných kriterií kterým lze posuzovat "jak moc dobře" je funkce proložena nějakými body (takových kriterií také existuje více), takže není úplně košér mluvit o tom, že LSM = prokládání sady bodů přímkou. LSM se používá i k nelineární regresi nebo i k diferenciální regresi což jsou podstatně složitější problémy, které skoro nikdy nelze řešit analyticky a hlavně je nelinární regrese mnohem významnější v praktických aplikacích. Lineárně se totiž moc systémů nechová.
Pavel Mička25.11.2009
Adam: diky za pripomiku, ta primka byla spatne...nejak jsem na chvili asi nepremejslel....ta matice je dobre, protoze primka ma rovnici kx + q, v prvnim sloupci mas koeficienty x, v druhym koeficienty u q (coz je vzdy 1 :-))

edit: clanek jsem zlehka upravil, aby to bylo jasnejsi...
adam24.11.2009
navic semi zda ze v te matici A mas nejak divne ty cisla... chybi mi tam ta dvojka od posledniho bodu...
adam24.11.2009
Jsi si jisty,ze rovnice primky ma byt kx+q=0? Myslim, ze je to spis y = kx + q...