← 回部落格 數學

最適直線入門:最小平方法為什麼是「垂直距離平方和最小」

威威 Willy · 2026-09-16

威威學長|高一數據分析系列

📚 系列總覽:數據分析系列地圖|⬅️ 上一篇:r 到底在量什麼?為什麼一定要除以標準差|➡️ 下一篇:斜率與相關係數的關係,以及「向平均數迴歸」


散佈圖上有 5 個點,你想拉一條線穿過它們。手一動就是一條,換個角度又可以再拉一條,而且每一條看起來都「差不多貼」。

紙上可以畫出無限多條線,憑什麼說某一條最好?要回答這個問題,得先把「好」翻譯成一個能比大小的數字。所以第一步其實不是找線,是定義誤差。

假設心裡已經有一條線 $\hat y=ax+b$。對每一筆資料,把它的 $x$ 代進去得到線上的預測值 $\hat y_i$,再拿真實的 $y_i$ 減掉:

$$e_i=y_i-\hat y_i=y_i-(ax_i+b)$$

$e_i$ 叫殘差(residual)。點落在線上方 $e_i>0$、落在下方 $e_i<0$;它說的就是「這條線對這個人猜高了還是猜低了,差多少」。

有了殘差,下一步是想把「這條線有多爛」壓成一個數字。最直覺的做法是全部加起來,但正負會相消,一條爛線也可能加出 $0$。所以課本換了一個做法:

$$S(a,b)=\sum_{i=1}^{n}\left[y_i-(ax_i+b)\right]^2$$

最小平方法(method of least squares)就是找出讓 $S(a,b)$ 最小的那組 $a,b$;那條線叫最適直線,也叫迴歸直線。換句話說,最適直線就是「讓殘差平方和最小的那一條」。名字裡直接寫了答案,這章其實沒在藏。

為什麼量的是「鉛直距離」

殘差 $e_i$ 在圖形上是一段鉛直的線段,從點垂直往下(或往上)打到那條直線上。它不是點到直線的最短距離。

兩種距離畫出來長得不一樣,數學上更是完全不同的兩條線。課本選鉛直的那條,理由只有一句:我們是用 $x$ 去預測 $y$。

$y_i-(ax_i+b)$ 的意思是「我是看著這個人的 $x$ 去猜他的 $y$,猜錯了這麼多」。在這個劇本裡,$x$ 是我們完全信任的已知條件,$y$ 才是會晃動、會被猜錯的結果。誤差記在 $y$ 頭上,方向自然是鉛直的。

那如果反過來量「點到直線的最短距離」呢?那條距離是

$$d_i=\frac{\lvert y_i-(ax_i+b)\rvert}{\sqrt{1+a^2}}$$

分母多了 $\sqrt{1+a^2}$,它會跟著斜率跑,意思變成「$X$ 和 $Y$ 地位對等、兩邊都可能有誤差」。這在數學上完全合法,叫做主成分直線,但它不是我們在高一講的迴歸直線,兩條線通常不重合。考卷上把這兩條搞混,分數就是這樣飛掉的。

為什麼是平方,不是絕對值

用 $\sum|e_i|$ 不是更直覺嗎?三個理由讓數學家選了平方。

絕對值不好做微積分。 $|t|$ 在 $t=0$ 有一個尖角,導數不存在。最適直線的整套推導都是靠微分,遇到尖角會處處卡住;平方是光滑的多項式,愛怎麼微就怎麼微。

平方會放大離譜的誤差。 猜錯 $2$ 分貢獻 $4$,猜錯 $10$ 分貢獻 $100$。差錯越大,付出的代價是平方級成長,這逼得最小平方法的解「特別在意大誤差」:沒有一條線敢放著某個點錯得亂七八糟還自稱最好。

平方和只有一組最小值,絕對值不一定。 $S(a,b)$ 是 $a,b$ 的二次式,圖形是一個碗,碗底只有一個點;而 $\sum|e_i|$ 的圖形是一片「平的谷底」,資料少一點的時候整段都是最低點,答案不唯一,這對「求最適直線」來說是災難,你要交哪一條?

把碗底找出來

$$S(a,b)=\sum\left[y_i-(ax_i+b)\right]^2$$

分別對 $b$ 和 $a$ 偏微分,各令其為 $0$:

$$\frac{\partial S}{\partial b}=-2\sum\left[y_i-(ax_i+b)\right]=0 \tag{1}$$

$$\frac{\partial S}{\partial a}=-2\sum x_i\left[y_i-(ax_i+b)\right]=0 \tag{2}$$

從 (1) 開始。兩邊除以 $-2$:

$$\sum y_i-a\sum x_i-nb=0$$

全部除以 $n$,注意 $\frac{\sum y_i}{n}=\bar y$、$\frac{\sum x_i}{n}=\bar x$:

$$\bar y-a\bar x-b=0\ \Longrightarrow\ \boxed{\,b=\bar y-a\bar x\,}$$

再處理 (2)。展開:

$$\sum x_iy_i-a\sum x_i^2-b\sum x_i=0 \tag{3}$$

把 $b=\bar y-a\bar x$ 代進去,整理後得到

$$a=\frac{\sum x_iy_i-n\bar x\bar y}{\sum x_i^2-n\bar x^2}=\frac{\sum(x_i-\bar x)(y_i-\bar y)}{\sum(x_i-\bar x)^2}$$

分子就是上一回的「乘積和」,分母是「$x$ 的離均差平方和」。整理成兩條:

$$a=\frac{\sum(x_i-\bar x)(y_i-\bar y)}{\sum(x_i-\bar x)^2},\qquad b=\bar y-a\bar x$$

用中文唸出來是:斜率 $=$ 乘積和 $\div$ X 平方和;截距 $=$ Y 平均 $-$ 斜率 $\times$ X 平均。

順帶說一句:這組解是「全域唯一」的最小值,不是什麼區域極小。因為 $\partial^2S/\partial b^2=2n>0$,而且混合偏導的行列式 $4n\sum(x_i-\bar x)^2>0$(只要 $x$ 不全相等)。這叫 Hessian 正定,碗只有一個底。想寫詳細版可以看補充篇。

這條線一定穿過 $(\bar x,\bar y)$

上面 (1) 式展開後是

$$\sum y_i-a\sum x_i-nb=0$$

移項看它的長相:$\sum\left[y_i-(ax_i+b)\right]=0$,也就是

$$\sum e_i=0$$

殘差的總和是 0。 猜高的、猜低的,全部互相抵銷。

這句話的幾何翻譯是:這條線被資料「拉」到重心上。如果它跑到 $(\bar x,\bar y)$ 上方,表示下半部的點集體被猜高、上半部集體被猜低,這個不平衡馬上會在 $\sum e_i$ 上穿幫,線就會被扯回來。

把 $\bar x$ 代進 $\hat y=ax+b$:

$$\hat y_{\bar x}=a\bar x+b=a\bar x+(\bar y-a\bar x)=\bar y$$

👑 威威說重點:最適直線必過 $(\bar x,\bar y)$。 這句話填充題考到爛,而且還是最快的驗算工具——算完 $a,b$ 之後順手代 $\bar x$,看有沒有回到 $\bar y$。

手算一遍:5 筆資料

5 位同學的「每週複習時數」$x$ 與「段考成績」$y$:

$i$ $x_i$ $y_i$ $x_i^2$ $x_iy_i$
1 1 20 1 20
2 2 50 4 100
3 3 50 9 150
4 4 80 16 320
5 5 100 25 500
合計 15 300 55 1090

$\bar x=\frac{15}{5}=3$,$\bar y=\frac{300}{5}=60$。代進去:

$$a=\frac{5\times1090-15\times300}{5\times55-15^2}=\frac{5450-4500}{275-225}=\frac{950}{50}=19$$

$$b=\bar y-a\bar x=60-19\times3=60-57=3$$

所以最適直線是 $\hat y=19x+3$。

(分子分母各自乘了 $n$,是為了避開小數。這條「考場版公式」很有用:

$$a=\frac{n\sum x_iy_i-\sum x_i\sum y_i}{n\sum x_i^2-(\sum x_i)^2}$$

原始資料是漂亮整數的時候,用它比先算離均差快得多。)

驗算

$x_i$ $y_i$ 預測 $\hat y_i=19x_i+3$ 殘差 $e_i$ $e_i^2$
1 20 22 $-2$ 4
2 50 41 $9$ 81
3 50 60 $-10$ 100
4 80 79 $1$ 1
5 100 98 $2$ 4
合計 0 190

殘差和是 $0$ ✓。這正是上一節的性質,也是免費的檢查工具。再看 $(\bar x,\bar y)=(3,60)$:$19\times3+3=60$ ✓,直線真的穿過重心。

殘差平方和 $S=4+81+100+1+4=190$。它有多小?跟總變異比一下就知道了:

$$\sum(y_i-\bar y)^2=(-40)^2+(-10)^2+(-10)^2+20^2+40^2=1600+100+100+400+1600=3800$$

$$\frac{S}{\sum(y_i-\bar y)^2}=\frac{190}{3800}=0.05$$

意思是:用這條線猜,剩下的誤差只有「完全不用 $X$、每次都拿 $\bar y=60$ 去猜」的 5%。換句話說,這條線吃掉了 95% 的變動。那個 95% 就是 $R^2=0.95$,也等於 $r^2$(這組的 $r=\frac{190}{\sqrt{10\times3800}}\approx0.975$,平方就是 $0.95$)。

還有一個超好用的速算性質。把 $a$ 的公式乘開:

$$S=\sum(y_i-\bar y)^2-a\cdot\sum(x_i-\bar x)(y_i-\bar y)$$

驗一下:$3800-19\times190=3800-3610=190$ ✓。不想逐筆算殘差的時候,這條直接給你誤差平方和。

拿來預測——然後踩一個坑

想預測每週複習 6 小時的人:$\hat y=19\times6+3=117$。

117 分。可是段考滿分是 100 分。

⚠️ 學長的警告:資料的 $x$ 只到 $5$,你卻拿去問 $x=6$,這叫外推。線性關係很少能一路延伸到天邊——成績會撞到天花板,身高會停止生長,廣告費投再多也有邊際效應。迴歸線只在資料涵蓋的範圍內可信。 算得出 117,不代表世界上真的有 117 分。

交卷前多花十秒:看一眼殘差圖

殘差不是算完就丟的東西。把每一筆的 $e_i$ 畫在 $x$ 軸上(橫軸還是 $x_i$,縱軸改成殘差),你會得到一張「殘差圖」。正常情況下它應該是一盤散沙:正負交錯,看不出任何形狀。

如果殘差圖出現了形狀,就代表你的直線假設有問題:

  • 殘差排成一條 U 形或倒 U 形:資料其實是彎的,直線硬套上去,中間一段全部猜高、兩頭全部猜低。這時候該考慮二次式,不是硬拉直線。
  • 殘差像喇叭口一樣越往右越開:$x$ 大的時候預測特別不準,誤差不是固定的。
  • 殘差裡還有一顆孤零零飛很遠的點:那可能是離群值,跟上一篇講的「一筆資料翻掉整條線」是同一件事。

係數看趨勢,殘差看破口。拿到一組迴歸結果,先掃一眼殘差圖,比盯著 $R^2$ 更有用。

為什麼叫「迴歸」?

這個名字有點怪,明明是「找到最貼的線」,為什麼叫迴歸?

19 世紀的 Francis Galton 在研究父子身高時發現一件反直覺的事:高個子爸爸的兒子,平均而言沒有爸爸那麼高;矮個子爸爸的兒子,平均而言比爸爸高。兩代身高不是照著放大的,而是往全體平均靠攏。他當時把這個現象叫做「向平庸迴歸」(regression towards mediocrity),後來簡化成「迴歸」。

這件事在數學上完全可以解釋。把 $y$ 和 $x$ 都標準化之後,迴歸線的斜率剛好就是 $r$:$\hat z_y=r\cdot z_x$。因為 $|r|\le1$,所以 $|\hat z_y|\le|z_x|$。極端值的預測一定被縮小。父親比平均高 2 個標準差、$r=0.5$ 的話,兒子的預測只會高於平均 1 個標準差。

$r$ 就是那個「阻尼係數」。下一篇我們把這件事講完,順便解釋為什麼「用 Y 預測 X」不能直接把斜率倒過來。


範例與小測

範例 1:某組 10 筆資料,已知 $\sum x_i=50$、$\sum y_i=80$、$\sum x_i^2=300$、$\sum x_iy_i=460$。求最適直線方程式。

題目只給總和,那就是「考場版公式」的場合,直接套:

$$\bar x=5,\qquad \bar y=8$$

$$a=\frac{10\times460-50\times80}{10\times300-50^2}=\frac{4600-4000}{3000-2500}=\frac{600}{500}=1.2$$

$$b=\bar y-a\bar x=8-1.2\times5=8-6=2$$

最適直線 $\hat y=1.2x+2$。驗算:代 $\bar x=5$ 得到 $1.2\times5+2=8=\bar y$ ✓,過重心。那 $x=8$ 時的預測值呢?$\hat y=1.2\times8+2=11.6$。

範例 2:某組資料的最適直線斜率 $a=3$、$\bar x=5$、$\bar y=40$。求直線方程式,並回答:如果這組資料的相關係數是 $r=0.8$、$S_x=2$,$S_y$ 是多少?

$b=\bar y-a\bar x=40-15=25$,直線是 $\hat y=3x+25$。第二部分用 $a=r\cdot\frac{S_y}{S_x}$ 反解:

$$3=0.8\times\frac{S_y}{2}=0.4S_y\ \Longrightarrow\ S_y=\frac{3}{0.4}=7.5$$

這裡順便留心一件事:光知道 $a$ 跟 $r$ 不足以決定這條線,你還需要 $\bar x,\bar y$ 或 $S_x,S_y$。這就是為什麼題目一定要送你平均值。

範例 3:已知某組資料的最適直線是 $\hat y=2x-1$,且這組資料的 $\bar x=3$。其中一筆資料是 $(4,9)$。求 $\bar y$,並算出這一筆的殘差。

最適直線必過 $(\bar x,\bar y)$,所以 $\bar y=2\times3-1=5$,不用再算任何迴歸。殘差是「真實減預測」:$\hat y=2\times4-1=7$,所以 $e=9-7=2$。這一點被低估了 2 分,它在線的上方。

殘差是 $y_i-\hat y_i$,不是 $\hat y_i-y_i$。 順序寫反,正負全顛倒。而且「殘差和為 0」檢查的是整組,不是單一筆。

小測

1. 為什麼最小平方法量的是「鉛直距離」,而不是點到直線的最短距離?

2. 為什麼用平方和,不用絕對值和?請說出三個理由。

3. 已知 $\sum(x_i-\bar x)^2=20$、$\sum(x_i-\bar x)(y_i-\bar y)=30$,求最適直線的斜率 $a$。

4. 已知 $r=0.6$、$S_x=4$、$S_y=5$,求 $a$。

5. 某組資料的最適直線是 $\hat y=3x-1$,且 $\bar x=2$。求 $\bar y$。

6. 已知 $\sum(y_i-\bar y)^2=100$、$a=0.8$、$\sum(x_i-\bar x)(y_i-\bar y)=50$。求殘差平方和 $S$ 與 $R^2$。

📖 詳解

1. 因為我們是「用 $x$ 預測 $y$」:$x$ 被當成精準的已知條件,誤差只記在 $y$ 頭上。點到直線的最短距離 $d_i=\frac{\lvert e_i\rvert}{\sqrt{1+a^2}}$ 分母會隨斜率變動,等於假設 $x$、$y$ 都有誤差,那是另一條線(主成分直線),不是迴歸直線。

2. $|t|$ 在 $t=0$ 有尖角、不可微,微積分推不下去;平方放大誤差,讓離譜的預測付出更高代價;平方和是嚴格的二次式,只有唯一最小值,絕對值和可能出現一整段都是最低點的狀況,答案不唯一。

3. $a=\dfrac{\sum(x_i-\bar x)(y_i-\bar y)}{\sum(x_i-\bar x)^2}=\dfrac{30}{20}=1.5$。

4. $a=r\cdot\dfrac{S_y}{S_x}=0.6\times\dfrac{5}{4}=0.6\times1.25=0.75$。注意 $a$ 帶單位、$r$ 不帶,所以兩個數字不一樣是正常的。

5. 最適直線過 $(\bar x,\bar y)$,所以 $\bar y=3\times2-1=5$。

6. 用速算式 $S=\sum(y_i-\bar y)^2-a\cdot\sum(x_i-\bar x)(y_i-\bar y)=100-0.8\times50=100-40=60$,所以

$$R^2=1-\frac{S}{100}=1-0.6=0.4$$

(順帶一提,$R^2=r^2$,所以這組的 $\lvert r\rvert=\sqrt{0.4}\approx0.632$。是正相關還是負相關?看 $\sum(x_i-\bar x)(y_i-\bar y)=50>0$,答案是正的。)


課本上一定有一組例題資料,或者你手上任何一張兩欄的成績表都可以。把它的 $\sum x_i$、$\sum y_i$、$\sum x_i^2$、$\sum x_iy_i$ 四個數字算出來,套考場版公式求 $a,b$,然後做兩件事:把 $\bar x$ 代進去,看有沒有回到 $\bar y$;把殘差逐筆列出來,看總和是不是 $0$。

兩個檢查都過,這條線就是對的。如果殘差和不是 $0$,先別急著整題重算,把那一步貼給我,我們看是公式套錯,還是平均值算錯。

威威
威威 Willy
德國數學碩士、前 Amazon 資料科學家。數學是邏輯的語言,英文是世界的窗口。
← 回部落格