← 回部落格 數學

多項式迴歸:多一個平方項,是解決問題還是製造問題

威威 Willy · 2026-10-12

威威學長|高中數學


📚 系列總覽:數據分析系列地圖|⬅️ 上一篇:係數說的是「其他變數固定時」的效果|➡️ 下一篇:把一朵歪掉的雲轉正

你有一組資料點,趨勢明顯是彎的。用直線去配,殘差沒有隨機散開,它會「中間一段全偏一邊、兩端偏另一邊」:這種有系統性的殘差,是模型形狀不對的訊號。 於是你加了一個 $x^2$ 項。殘差立刻變小,圖看起來也順了。 問題是:繼續加呢?加到 $x^5$、$x^{10}$,殘差還會更小。那什麼時候該停?

原則沒有變,只是多了一個參數

多項式迴歸用的還是最小平方法,同一條原則:讓殘差平方和 $\sum(y_i-\hat y_i)^2$ 最小。差別只在你用來預測的那條式子變長了: $$\hat y=b_0+b_1x+b_2x^2+\cdots+b_kx^k$$ 直線是 $k=1$ 的特例。找到係數的方法也一樣:對每一個 $b$ 偏微分、令其為 $0$,解一組聯立方程式。這套推導跟最適直線的微積分證明做的是同一件事,只是未知數從兩個變成 $k+1$ 個。這裡不必展開細節,重點在下面這件事。

為什麼不能只看 $R^2$ 挑次數

$R^2$ 量的是「模型解釋了資料變異的多少比例」。它有兩個等價的長相: $$R^2=1-\frac{SSE}{SST}$$ 其中 $SSE$ 是殘差平方和、$SST$ 是總變異(跟模型無關的常數)。 現在關鍵來了:參數越多,能選的函數就越多。$k=2$ 的候選函數集合,完整包含 $k=1$ 的集合(把 $b_2$ 設成 $0$ 就退回直線)。所以 $k=2$ 能找到的最小 $SSE$,不可能比 $k=1$ 的大。$SSE$ 不變大,$R^2$ 就不會變小。 結論很硬:只要加項,$R^2$ 一定不減。 所以「$R^2$ 最高的模型」永遠是參數最多的那一個,這個指標單獨看根本沒有篩選能力。

👑 威威說重點:$R^2$ 只會愈加愈高,它不能拿來選模型複雜度。能拿來選的是「模型在沒看過的資料上表現如何」,或「調整後 $R^2$」。

極端情況:完美穿過每一個點

極端一點的例子最能說明問題。有 $n$ 個資料點,你用一個 $n-1$ 次的多項式去配,因為有 $n$ 個係數、$n$ 條方程式,通常剛好有唯一解,$SSE=0$,$R^2=1$。 完美。但也完全沒用。這條曲線只是把每個點串起來,兩個點之間發生什麼事它完全不管。而且點跟點之間的間隔越窄,曲線就抖得越兇。 ⚠️ 學長的警告:這個現象有個名字。Runge 在 1901 年指出,用高次多項式在等距的節點上做內插,區間的兩端會出現劇烈振盪,而且次數越高振盪越大。所以「高次多項式」不是「更精確」的同義詞,它常常是相反的。

外推比擬合危險得多

多項式在兩端跑得很快。$x^5$ 在 $x=10$ 的時候是 $100000$,$x=11$ 就變成 $161051$。所以你的資料只涵蓋到 $x=10$,卻拿它去預測 $x=15$,那個答案基本上沒有意義。 實際上的建議只有三條:

  • 看殘差圖,不是只看 $R^2$。殘差有沒有系統性彎曲、有沒有隨 $x$ 變大而擴散,比一個數字有用得多。
  • 次數不要超過你能解釋的範圍。二次多項式你可以說「有加速或減速的效果」,五次多項式你很難講出那五個係數各自在幹嘛。
  • 留下一部分資料不要拿來配,配完再拿它檢驗。這是最接近實務做法的一條。

換你動手

練習 1:資料點 $(0,1)$、$(1,2)$、$(2,5)$、$(3,10)$。試著用 $\hat y=b_0+b_1x+b_2x^2$ 配適,猜一組係數。 猜 $\hat y=1+x^2$。逐點檢查:$x=0$ 給 $1$ ✓、$x=1$ 給 $2$ ✓、$x=2$ 給 $5$ ✓、$x=3$ 給 $10$ ✓。四點全部命中,所以 $SSE=0$、$R^2=1$。 這組資料是刻意造的(第二個差分都是 $2$,那是二次函數的特徵),所以剛好完美。真實資料不會這樣。 練習 2:承上,如果改用直線配,有可能得到 $SSE=0$ 嗎? 不可能。前三個點 $(0,1)$、$(1,2)$、$(2,5)$ 就已經不共線了:從 $(0,1)$ 到 $(1,2)$ 的斜率是 $1$,從 $(1,2)$ 到 $(2,5)$ 的斜率是 $3$。兩個斜率不同,這三點不可能落在同一條直線上;只要有一點偏離,$SSE$ 就大於 $0$。 練習 3:既然複雜模型的 $R^2$ 一定不會更差,那要怎麼判斷「加這個平方項值得」? 看三件事:加項之後殘差圖的系統性彎曲有沒有消失(這是加項的真正理由);用留下來的資料檢驗,誤差有沒有變小(沒有的話就只是記住了訓練資料);以及原先的係數有沒有劇烈變動(係數不穩通常代表新舊變數在講同一件事)。


找一份你手邊有的一組資料(課堂實驗、任何你有興趣的數字都行),先用直線配一次,把殘差按 $x$ 的順序寫成一列,看看正負號是不是連續出現。如果連續出現,那就是直的配不夠了;如果正負交錯,那直線可能就是對的,硬加平方項只是讓 $R^2$ 好看。 如果你不確定某一筆資料該不該留著配、還是拿去檢驗,把資料的來源和你想問的問題丟給我,我們一起決定怎麼切。

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