JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

最小平方:把直線擬合到資料

當資料雜亂且方程過定,使得 Ax = b 沒有精確解時,最小平方會找出最好的近似解。從幾何上看,它把 b 投影到行空間上;正規方程讓它變得可計算——這正是把直線擬合到資料的方法。

當根本沒有精確解時

真實資料不會乖乖落在一條完美的直線上。假設你測了許多點,想用一條直線穿過它們。把「這條直線恰好經過每一個點」寫出來,會得到一個方程比未知數多的方程組 A x = b——這就是過定的。幾乎總是沒有精確解;雜訊讓這些方程互相矛盾。

fit y = m*t + c to three points:
  (t,y) = (0,1), (1,2), (2,2)

[0 1][m]   [1]
[1 1][c] = [2]    <- 3 equations, 2 unknowns
[2 1]      [2]       no exact (m,c) hits all three
方程比未知數多:通常無法精確求解。

退而求其次:要最接近的

如果你打不中 b 本身,那就改打搆得著的最近的點。你能造出的每一個 A x 都住在 A 的行空間裡——也就是 A 各列的所有組合構成的集合。而你真正想要的 b,通常落在那個空間之外最小平方挑選這樣的 x:讓它的 A x 離 b 最近,用總平方誤差來衡量。

正規方程

怎樣把「誤差垂直於行空間」變成能算的東西?A 的每一列都必須與誤差 b - A x 正交,也就是 A^T (b - A x) = 0。整理一下,就是著名的正規方程:A^T A x = A^T b。這下成了一個方陣的、可解的方程組,求出最佳的 x。

  1. 由資料矩陣 A 和目標 b 構造 A^T A 與 A^T b。
  2. 解方陣方程組 A^T A x = A^T b 得到 x(直線的斜率與截距)。
  3. 這個 x 使總平方誤差最小——就是你的最佳擬合直線。