3.3 Vetítés, legkisebb négyzetek és kondicionáltság

3.3.1 Induló kérdés és előismeret

A 3.2. Mátrixszorzás és affín réteg affin rétege Z=XW⊤+bZ=XW^\top+b alakú batchelt leképezést definiált: X∈ℝN×dX\in\mathbb R^{N\times d}, W∈ℝm×dW\in\mathbb R^{m\times d}, és a bias sorirányban broadcastolódik. Ha ezt a réteget egy regressziós baseline-ként használjuk, akkor adott bemenetekhez egy valós célértéket szeretnénk közelíteni. Tekintsük az A∈ℝn×dA\in\mathbb R^{n\times d} tervező- vagy adatmátrixot, amelynek egy sora egy megfigyelés dd jellemzőjét tartalmazza, és a b∈ℝnb\in\mathbb R^n célvektort. Az Ax=bAx=b lineáris egyenletrendszer általában túlhatározott, ha n>dn>d: nincs olyan xx, amely minden egyenletet egyszerre kielégítene. A legkisebb négyzetes módszer azt az xx-et keresi, amelyre a hiba négyzetösszege minimális.

Induló becslés: ha AA két oszlopa majdnem párhuzamos, akkor a két megfelelő együtthatót nehéz külön-külön azonosítani, még akkor is, ha az előrejelzés összességében jól illeszkedik. Miért? Ezt a vetítés és a kondicionáltság fogalma teszi pontossá.

A 2.3. Izolált környezet, notebook és verzió környezeti szerződését itt is használjuk: a labor kódja CPU-n fut, float64 adattípusú, nem használ véletlent, ezért seedre nincs szükség; az ellenőrzés toleranciás allclose összehasonlítás.

3.3.2 A reziduum és a legkisebb négyzetes vetítés

Definíció 1 (reziduum). Legyen A∈ℝn×dA\in\mathbb R^{n\times d}, b∈ℝnb\in\mathbb R^n, x∈ℝdx\in\mathbb R^d. Az xx együtthatóvektorhoz tartozó reziduumvektor

r(x)=b−Ax∈ℝn,r(x)=b-Ax\in\mathbb R^n,

a négyzetes hiba pedig

F(x)=∥r(x)∥22=∑i=1n(bi−∑j=1dAijxj)2.F(x)=\|r(x)\|_2^2=\sum_{i=1}^{n}\left(b_i-\sum_{j=1}^{d}A_{ij}x_j\right)^2.

A bb vektor U=range(A)U=\operatorname{range}(A) altérre vett ortogonális vetülete az a p∈Up\in U, amelyre ∥b−p∥2\|b-p\|_2 minimális. Mivel minden p=Axp=Ax valamilyen xx-re, a legkisebb négyzetes megoldás a vetület xx-koordinátáját adja meg.

Lemma 2 (ortogonalitási kritérium). Az x*∈ℝdx^*\in\mathbb R^d pontosan akkor minimalizálja FF-et, ha r*=b−Ax*r^*=b-Ax^* merőleges UU minden elemére, azaz A⊤r*=0A^\top r^*=0.

Bizonyítás. Legyen p=Axp=Ax. Ha pp minimális távolságú pont UU-ban, akkor bármely q=Az∈Uq=Az\in U és t∈ℝt\in\mathbb R esetén a

φ(t)=∥b−(p+tq)∥22=∥r∥22−2tr⊤q+t2∥q∥22\varphi(t)=\|b-(p+tq)\|_2^2=\|r\|_2^2-2t\,r^\top q+t^2\|q\|_2^2

függvénynek t=0t=0-ban minimuma van, ahol r=b−pr=b-p. A t=0t=0-beli derivált −2r⊤q-2r^\top q, tehát r⊤q=0r^\top q=0 minden q∈Uq\in U-ra. Ez éppen azt jelenti, hogy rr merőleges UU minden elemére, speciálisan AA minden oszlopára, ami vektoralakban A⊤r=0A^\top r=0. Megfordítva, ha r⊥Ur\perp U, akkor bármely w∈Uw\in U mellett r⊥wr\perp w, ezért

∥b−(p+w)∥22=∥r−w∥22=∥r∥22+∥w∥22≥∥r∥22,\|b-(p+w)\|_2^2=\|r-w\|_2^2=\|r\|_2^2+\|w\|_2^2\ge\|r\|_2^2,

tehát pp valóban minimális távolságú pont. ■

A lemma két iránya együtt adja a híres normálegyenletet: mivel AA oszlopai generálják UU-t, a merőlegesség ekvivalens azzal, hogy

A⊤(b−Ax)=0⇔A⊤Ax=A⊤b.A^\top(b-Ax)=0 \quad\Longleftrightarrow\quad A^\top A x=A^\top b.

3.3.3 A normálegyenlet és az egyértelműség feltétele

A fenti átalakítás már megadja a levezetési kötelezettség első felét. A megoldhatóság és az egyértelműség kérdéséhez a A⊤AA^\top A Gram-mátrix invertálhatóságát kell ellenőrizni.

Tétel 3 (normálegyenlet, teljes oszloprang esetén). Legyen A∈ℝn×dA\in\mathbb R^{n\times d} teljes oszloprangú, azaz rank(A)=d\operatorname{rank}(A)=d. Ekkor:

  1. A⊤A∈ℝd×dA^\top A\in\mathbb R^{d\times d} szimmetrikus, pozitív definit és invertálható;
  2. az FF minimalizálója pontosan egy létezik, és

x̂=(A⊤A)−1A⊤b.\hat x=(A^\top A)^{-1}A^\top b.

Bizonyítás. Elsőként igazoljuk (1)-et. A Gram-mátrix nyilván szimmetrikus: (A⊤A)⊤=A⊤A(A^\top A)^\top=A^\top A. Legyen z∈ℝdz\in\mathbb R^d. Ekkor

z⊤A⊤Az=(Az)⊤(Az)=∥Az∥22≥0,z^\top A^\top A z=(Az)^\top(Az)=\|Az\|_2^2\ge0,

tehát A⊤AA^\top A pozitív szemidefinit. Ha z⊤A⊤Az=0z^\top A^\top A z=0, akkor ∥Az∥22=0\|Az\|_2^2=0, így Az=0Az=0. A teljes oszloprang feltétel szerint AA magtere csak a nullvektort tartalmazza, ezért z=0z=0. Ez azt jelenti, hogy z⊤A⊤Az>0z^\top A^\top A z>0 minden z≠0z\neq0 esetén, vagyis a mátrix pozitív definit. Pozitív definit mátrix invertálható.

A (2) állításhoz a 2. lemma szerint x*x^* pontosan akkor minimalizáló, ha kielégíti az A⊤Ax=A⊤bA^\top A x=A^\top b normálegyenletet. Az (1) pont miatt az együtthatómátrix invertálható, tehát a normálegyenletnek pontosan egy megoldása van, mégpedig a fenti zárt alakú x̂\hat x. ■

Fontos, hogy a tétel létezési és egyértelműségi állítás, nem numerikus algoritmusajánlás. Erre a gyakori tévedésnél visszatérünk.

Ha rank(A)=r<d\operatorname{rank}(A)=r<d, azaz ranghiányos az adatmátrix, akkor A⊤AA^\top A szinguláris. A normálegyenlet továbbra is konzisztens, de végtelen sok megoldása van; mind megvalósítja ugyanazt a p=Ax̂p=A\hat x vetületet, az együtthatók azonban nem azonosíthatók egyértelműen. Ilyenkor a könyvtárak tipikusan azt a megoldást adják vissza, amelynek saját normája, ∥x∥2\|x\|_2, a legkisebb a minimalizálók között; ezt minimum-norma megoldásnak nevezzük.

Egy valós regressziós baseline-ban a bias-t úgy kezeljük, hogy a tervezőmátrix első oszlopát konstans 11 értékekkel bővítjük. Ekkor az AxAx modell affin a további jellemzőkben, összhangban a 3.2. Mátrixszorzás és affín réteg alfejezetben bevezetett affin réteg fogalmával.

3.3.4 Kondicionáltság és stabilitás

Egy mátrix numerikus viselkedését a kondíciószám jellemzi. Teljes oszloprangú AA esetén az A⊤AA^\top A pozitív definit mátrix sajátértékei pozitívak; jelölje λmax\lambda_{\max} a legnagyobb, λmin\lambda_{\min} a legkisebb sajátértéket. A mátrix 2-es kondíciószáma

κ2(A⊤A)=λmax(A⊤A)λmin(A⊤A)≥1.\kappa_2(A^\top A)=\frac{\lambda_{\max}(A^\top A)}{\lambda_{\min}(A^\top A)}\ge1.

Az AA kondíciószámát ebből úgy kapjuk, hogy

κ2(A)=λmax(A⊤A)λmin(A⊤A).\kappa_2(A)=\sqrt{\frac{\lambda_{\max}(A^\top A)}{\lambda_{\min}(A^\top A)}}.

A pontos szingulárisérték-felbontásos hátteret a 3.4. Sajátérték, SVD és spektrális határ egységben építjük fel; itt elegendő az az intuíció, hogy κ2(A)\kappa_2(A) az operátor által okozott maximális és minimális nyújtás aránya. Közel kollineáris oszlopoknál van egy irány, amelyben a leképezés csak nagyon gyengén nyújt, ezért a kondíciószám nagy.

A normálegyenletes megoldás szempontjából döntő összefüggés:

κ2(A⊤A)=κ2(A)2.\kappa_2(A^\top A)=\kappa_2(A)^2.

Ez abból következik, hogy A⊤AA^\top A sajátértékei a szinguláris értékek négyzetei; a pontos levezetés az SVD-s egységben szerepel, itt numerikus következményként használjuk. Ha κ2(A)\kappa_2(A) nagy, akkor A⊤AA^\top A kondíciószáma a négyzetével nagyobb, ezért az explicit inverzzel történő megoldás sokkal érzékenyebb a kerekítési hibákra, mint a közvetlen, QR- vagy SVD-alapú eljárás.

3.3.5 Kézi példa: pontos illeszkedés és ranghiány

Legyen

A=(100111),b=(123).A=\begin{pmatrix}1&0\\0&1\\1&1\end{pmatrix},\qquad b=\begin{pmatrix}1\\2\\3\end{pmatrix}.

Ekkor n=3n=3, d=2d=2, és AA oszlopai függetlenek. A normálegyenlet mátrixa és jobb oldala

A⊤A=(2112),A⊤b=(45).A^\top A=\begin{pmatrix}2&1\\1&2\end{pmatrix},\qquad A^\top b=\begin{pmatrix}4\\5\end{pmatrix}.

A 2×22\times2-es mátrix determinánsa 33, inverze 13(2−1−12)\frac13\begin{pmatrix}2&-1\\-1&2\end{pmatrix}, így

x̂=13(2−1−12)(45)=(12).\hat x=\frac13\begin{pmatrix}2&-1\\-1&2\end{pmatrix}\begin{pmatrix}4\\5\end{pmatrix}=\begin{pmatrix}1\\2\end{pmatrix}.

Ezzel Ax̂=(1,2,3)⊤=bA\hat x=(1,2,3)^\top=b, tehát a reziduum nulla: a célvektor a képtérben van, és a vetítés önmaga.

Ranghiányos ellenpéldaként vegyük az

A=(1224),b=(12)A=\begin{pmatrix}1&2\\2&4\end{pmatrix},\qquad b=\begin{pmatrix}1\\2\end{pmatrix}

mátrixot. Itt a második oszlop az első kétszerese, tehát rank(A)=1\operatorname{rank}(A)=1. A normálegyenlet

(5101020)(x1x2)=(510),\begin{pmatrix}5&10\\10&20\end{pmatrix}\begin{pmatrix}x_1\\x_2\end{pmatrix}=\begin{pmatrix}5\\10\end{pmatrix},

ami az x1+2x2=1x_1+2x_2=1 egyetlen független feltételre redukálódik. Az összes megoldás (1−2t,t)(1-2t,t) alakú. A legkisebb normájú megoldás a feltétel mellett a ∥(x1,x2)∥22\|(x_1,x_2)\|_2^2 minimuma. A Lagrange-módszerrel vagy geometriailag ez a x̂=(1/5,2/5)\hat x=(1/5,2/5), amelyre Ax̂=(1,2)⊤=bA\hat x=(1,2)^\top=b, tehát a reziduum itt is nulla. A két példa különbsége: az elsőben az együtthatók egyértelműek, a másodikban a predikció egyértelmű, de az együtthatók nem.

3.3.6 Labor: közel kollineáris oszlopok és lstsq

A cél annak megmutatása, hogy a normálegyenlet elméleti helyességéből nem következik az explicit inverz numerikus jósága. Válasszunk 33 megfigyelést és 22 jellemzőt:

A=(1111+ε11+2ε),ε=10−5.A=\begin{pmatrix}1&1\\1&1+\varepsilon\\1&1+2\varepsilon\end{pmatrix},\qquad \varepsilon=10^{-5}.

Írjuk fel a pontos legkisebb négyzetes referenciafeladatot: legyen xref=(1,2)⊤x_{\mathrm{ref}}=(1,2)^\top, és a célvektor

b=Axref+δ,δ=(1,−2,1)⊤,b=A x_{\mathrm{ref}}+\delta,\qquad \delta=(1,-2,1)^\top,

ahol δ\delta merőleges AA mindkét oszlopára, ezért A⊤δ=0A^\top\delta=0, és a legkisebb négyzetes megoldás pontosan xrefx_{\mathrm{ref}} marad. A megfelelő b=(4,1+2ε,4+4ε)⊤b=(4,1+2\varepsilon,4+4\varepsilon)^\top; a pontos reziduum δ\delta, négyzetes hibája ∥δ∥22=6\|\delta\|_2^2=6.

A labor munkakönyvtára lab/n011_lstsq/, futtatási parancsa:

python lab/n011_lstsq/n011_lstsq.py
# lab/n011_lstsq/n011_lstsq.py
# Input: nincs külső adat; CPU, float64, seed nem szükséges.
import numpy as np

EPS = 1e-5
A = np.array(
    [[1.0, 1.0],
     [1.0, 1.0 + EPS],
     [1.0, 1.0 + 2.0 * EPS]],
    dtype=np.float64,
)

x_ref = np.array([1.0, 2.0], dtype=np.float64)
delta = np.array([1.0, -2.0, 1.0], dtype=np.float64)
assert np.allclose(A.T @ delta, np.zeros(2), atol=1e-14)
b = A @ x_ref + delta

# 1) Expliciten invertált normálegyenlet.
x_explicit = np.linalg.inv(A.T @ A) @ A.T @ b
err_explicit = np.linalg.norm(x_explicit - x_ref)

# 2) Stabil, SVD-alapú megoldó.
x_lstsq, residues, rank_lstsq, _ = np.linalg.lstsq(A, b, rcond=None)
err_lstsq = np.linalg.norm(x_lstsq - x_ref)

print("x_ref      =", x_ref)
print("explicit   =", x_explicit, "hiba =", err_explicit)
print("lstsq      =", x_lstsq, "hiba =", err_lstsq)
print("rank       =", rank_lstsq, "reziduum-norma^2 =", residues[0])
print("cond(A.T A) =", np.linalg.cond(A.T @ A))
print("cond(A)     =", np.linalg.cond(A))

# Elméleti kontrollok, amelyek a stabil megoldóra vonatkoznak.
assert rank_lstsq == 2
assert np.allclose(x_lstsq, x_ref, rtol=0.0, atol=2e-5)
assert np.allclose(residues[0], 6.0, rtol=1e-10, atol=1e-10)
print("Ellenőrzés: rank, x_lstsq és reziduum rendben.")

A kimenet ebben a kéziratban nem futtatott; a levezetésből származó kontrollérték xref=(1,2)⊤x_{\mathrm{ref}}=(1,2)^\top és a reziduum-norma négyzete 66. A numerikus eltérés platformfüggő, ezért a feladat az elméleti kontrollt toleranciával ellenőrzi. A lstsq-t az elvárt, 2⋅10−52\cdot10^{-5} abszolút paramétertoleranciával ellenőrizzük; az explicit normálegyenlet hibája rendszerint nagyobb, de ennek mértéke platformfüggő. Az illesztett predikció és a reziduum stabilabb ellenőrzési tárgy, mint a rosszul kondicionált együtthatóvektor. A kondíciószám elméleti közelítése kis ε\varepsilon-ra κ2(A⊤A)≈6/ε2\kappa_2(A^\top A)\approx6/\varepsilon^2, azaz ε=10−5\varepsilon=10^{-5} esetén mintegy 6⋅10106\cdot10^{10}, ami már jelentősen felerősítheti a kerekítési hibát.

Kondíciószám a kollinearitás függvényében - A 6/eps^2 közelítésből számolt szemléltetés, nem mért futás.

A kód azt is kimutatja, hogy a rang az SVD-küszöb mellett még 22, tehát a mátrix matematikai értelemben teljes oszloprangú; a numerikus nehézséget nem szingularitás, hanem a nagy kondíciószám okozza.

3.3.7 Feladatok

F1 (fogalmi, nehézség 1). Legyen A∈ℝn×dA\in\mathbb R^{n\times d} és b∈ℝnb\in\mathbb R^n. Definiálja a reziduumot és a vetületet. Magyarázza el, miért merőleges a legkisebb négyzetes megoldás reziduuma AA minden oszlopára, és miért nem elegendő ez a merőlegesség a ranghiányos eset egyértelműségéhez.

F2 (levezetési, nehézség 2). Alkalmazza a 3. tételt a d=1d=1 speciális esetre, amikor A=a∈ℝnA=a\in\mathbb R^n egyetlen oszlopvektor. Vezesse le a normálegyenletet, adja meg az invertálhatóság feltételét, és fejezze ki x̂\hat x-et az aa és bb vektorok skalárszorzataival.

F3 (implementációs, nehézség 2). Írjon lab/n011_lstsq/least_squares.py fájlt, amely a

def least_squares(A: np.ndarray, b: np.ndarray) -> tuple[np.ndarray, np.ndarray, int]:
    ...

függvényt tartalmazza. A függvény np.linalg.lstsq-t használjon, adja vissza a megoldást, a reziduumot és a numerikus rangot. Ellenőrizze a főszöveg 3×23\times2-es példáján, hogy a visszaadott megoldás 10−810^{-8} abszolút tolerancián belül (1,2)⊤(1,2)^\top, a reziduum (1,−2,1)⊤(1,-2,1)^\top, a rang pedig 22.

F4 (hibakeresési, nehézség 2). Valaki a következő függvényt írja:

def bad_solve(A, b):
    return np.linalg.inv(A.T @ A) @ A.T @ b

Hol van a kettős hiba? Elemezze a ranghiányos esetet és a nagy kondíciószámú, de matematikailag teljes rangú esetet is. Adjon olyan javítást, amely mindkét hibát kezeli, és írja meg az ellenőrző tesztet.

F5 (kísérlettervezés, nehézség 3). Tervezzen kísérletet annak vizsgálatára, hogy a harmadik, a két közel kollineáris oszloptól független oszlop hozzáadása hogyan változtatja meg a legkisebb négyzetes megoldás stabilitását. Adja meg a kérdést, a generált adat sémáját, a baseline-t, a változó tényezőt, a metrikát és a következtetési korlátot. Nem szükséges futtatni; a protokollnak lektorálhatónak kell lennie.

3.3.8 Megoldások és indoklás

F1. A reziduum r(x)=b−Axr(x)=b-Ax; a vetület p=Ax̂=x*p=A\hat x=x^*? Pontosan: a vetület az U=range(A)U=\operatorname{range}(A) altér azon eleme, amelyre a távolság minimális. A 2. lemma bizonyítja, hogy a minimalizáló reziduum merőleges UU minden elemére, tehát AA minden oszlopára is, mert az oszlopok UU-t generálják. Ranghiányos AA esetén a merőlegesség A⊤r=0A^\top r=0 még teljesülhet, de a normálegyenletnek végtelen sok megoldása van: az oszlopok lineáris függősége miatt több xx adhatja ugyanazt a pp-t. A reziduum tehát a predikciót jellemzi, nem az együtthatók azonosíthatóságát.

F2. Ha A=aA=a, akkor a normálegyenlet

a⊤ax̂=a⊤b.a^\top a\,\hat x=a^\top b.

Az invertálhatóság feltétele a⊤a=∥a∥22>0a^\top a=\|a\|_2^2>0, azaz a≠0a\neq0. Ilyenkor

x̂=a⊤ba⊤a=⟨a,b⟩∥a∥22.\hat x=\frac{a^\top b}{a^\top a}=\frac{\langle a,b\rangle}{\|a\|_2^2}.

Ez éppen a bb-nek az aa irányára vett ortogonális vetületi együtthatója. Ha a=0a=0, akkor minden U={0}U=\{0\}, a vetület 00, és nincs egyértelmű x̂\hat x; a normálegyenlet 0x̂=00\,\hat x=0 alakú.

F3. Lehetséges teljes fájl:

# lab/n011_lstsq/least_squares.py
import numpy as np

def least_squares(A: np.ndarray, b: np.ndarray) -> tuple[np.ndarray, np.ndarray, int]:
    if A.ndim != 2 or b.ndim != 1:
        raise ValueError("A legyen 2D, b legyen 1D")
    if A.shape[0] != b.shape[0]:
        raise ValueError("A sorainak száma egyezzen b hosszával")
    x, _, rank, _ = np.linalg.lstsq(A, b, rcond=None)
    residual = b - A @ x
    return x, residual, rank

if __name__ == "__main__":
    EPS = 1e-5
    A = np.array([[1.0, 1.0], [1.0, 1.0 + EPS], [1.0, 1.0 + 2.0 * EPS]])
    x_ref = np.array([1.0, 2.0])
    b = A @ x_ref + np.array([1.0, -2.0, 1.0])
    x, r, rank = least_squares(A, b)
    assert rank == 2
    assert np.allclose(x, x_ref, rtol=0.0, atol=2e-5)
    assert np.allclose(r, [1.0, -2.0, 1.0], atol=1e-8)
    print("F3 kontroll: mindhárom feltétel teljesült.")

Futtatás: python lab/n011_lstsq/least_squares.py. A ranghiányos szélsőeseten, például A=[[1,2],[2,4]]A=[[1,2],[2,4]] és b=[1,2]b=[1,2], a visszaadott rang 11, a reziduum nulla, a megoldás pedig a minimum-norma (0.2,0.4)⊤(0.2,0.4)^\top lesz a NumPy lstsq konvenciója szerint; ezt a felhasználónak is tesztelnie kell.

F4. A bad_solve két hibája:

  1. Explicit inverz a normálegyenletben. A A⊤AA^\top A képzése a kondíciószámot négyzetre emeli, az inverz pedig további O(d3)O(d^3) műveletet és kerekítést igényel. Közel kollineáris oszlopoknál ez pontatlan vagy használhatatlan eredményt ad, miközben a matematikai feladat stabilan megoldható.
  2. Nincs rang- vagy kondícióvizsgálat. Ranghiányos AA esetén a függvény szinguláris mátrix inverzét kísérli meg, ami kivételt vethet vagy tetszőleges, kerekítésfüggő értéket adhat.

Javítás: használjon SVD- vagy QR-alapú megoldót, például

def good_solve(A, b):
    x, _, rank, _ = np.linalg.lstsq(A, b, rcond=None)
    if rank < A.shape[1]:
        raise np.linalg.LinAlgError("ranghiányos adatmátrix")
    return x

Ellenőrző teszt: a főszöveg közel kollineáris példáján a megoldás hibája a referenciaértékhez képest kisebb, mint 10−810^{-8}; a ranghiányos [[1,2],[2,4]][[1,2],[2,4]] példán a függvény kivételt dob, nem hallgat szingularitást. A numerikus toleranciát a float64 és az input skálája indokolja.

F5. Egy lehetséges terv:

3.3.9 Tipikus tévedés és ellenpélda

A normálegyenlet levezetése nem teszi az explicit inverzt ajánlott numerikus algoritmussá. A tétel azt mondja ki, hogy ha az inverz pontosan számítható lenne, akkor a képlet pontos lenne. A lebegőpontos számítás viszont kerekít, és eközben a A⊤AA^\top A mátrix kondíciószáma κ2(A)2\kappa_2(A)^2. A labor 3×23\times2-es mátrixánál ε=10−5\varepsilon=10^{-5} esetén ez mintegy 6⋅10106\cdot10^{10}, tehát az explicit normálegyenlet megoldása érezhetően érzékeny a kerekítésre. Ugyanaz a feladat np.linalg.lstsq-val, amely közvetlenül AA-n dolgozik, stabilabban oldható meg, mert ott a kondíciószám csak κ2(A)\kappa_2(A).

Ranghiányos ellenpélda a kézi részben szerepelt: A=(1224)A=\begin{pmatrix}1&2\\2&4\end{pmatrix} esetén a normálegyenlet mátrixa szinguláris, így az explicit inverz még egzakt aritmetikában sem létezik, holott a legkisebb négyzetes predikció tökéletesen definiált.

3.3.10 Önellenőrzés

Ellenőrizze az alakokat: A⊤AA^\top A alakja d×dd\times d, A⊤bA^\top b alakja dd, a megoldás dd-dimenziós, a reziduum pedig nn-dimenziós. Ha a feladat FF helyett 1nF\frac1nF átlagos négyzetes hibát minimalizál, a skálázás nem változtatja meg a minimalizálót. Ranghiányos esetben a predikció p=Ax̂p=A\hat x egyértelmű, de x̂\hat x nem; a kettőt ne keverje össze. A nagy kondíciószám nem azonos a szingularitással: a labor mátrixa rangja 22, mégis instabil a normálegyenlet. Visszahívás 3.2. Mátrixszorzás és affín réteg alfejezetből: az affin réteg csak akkor lineáris, ha a bias nulla; a regressziós baseline konstans oszloppal éppen affin modellt ad.

3.3.11 Rövid összefoglaló

A legkisebb négyzetes feladat a célvektor vetülete az adatmátrix képterére. A minimalizáló reziduum merőleges a képtérre, ami az A⊤Ax=A⊤bA^\top A x=A^\top b normálegyenletet adja. Teljes oszloprang esetén A⊤AA^\top A pozitív definit és invertálható, ezért a megoldás egyértelmű: x̂=(A⊤A)−1A⊤b\hat x=(A^\top A)^{-1}A^\top b. Ranghiányos esetben a predikció egyértelmű, az együttható nem; a könyvtárak minimum-norma megoldást adnak. A normálegyenlet mátrixának kondíciószáma κ2(A)2\kappa_2(A)^2, ezért közel kollineáris oszlopoknál az explicit inverz numerikusan megbízhatatlan; a stabil lstsq közvetlenül az eredeti mátrixon dolgozik. A kondíciószám nagy értéke nem szingularitás, hanem érzékenységi figyelmeztetés.

3.3.12 Következő alkalmazás

A 3.4. Sajátérték, SVD és spektrális határ a sajátértékeket, a szinguláris értékeket és a spektrális határokat tárgyalja; ott a kondíciószám pontos SVD-alapú definícióját és a perturbációs korlátokat is levezetjük.

3.3.13 Források