M1.2 13 分鐘閱讀 2026年9月

M1.2 天氣預報該報幾度:MSE 的最小值是 Conditional Expectation

本篇重用M1.1從鞋子猜身高:Conditional Expectation

起點:一天只能報一個數字

你是氣象主播。每天早上,根據手上的資料,你必須報一個明天的最高溫。年底,電視台把你每天的預報減掉實際溫度、平方、加起來算平均——這個數字越小,年終獎金越高。

今天的資料顯示明天是一個不好報的日子:有 60% 的機率冷鋒不會到,最高溫 30 °C;40% 的機率冷鋒到了,最高溫 22 °C。中間的溫度幾乎不可能發生。

你報幾度?

多數人的第一反應是報 30——「最可能發生的情況」。也有人說報 26 或 27,「折衷一下」,但馬上會被質疑:那是一個幾乎不會發生的溫度,報它不是很怪嗎?請寫下你的選擇與確定程度。

這一篇會算出:在平方誤差的計分下,報 26.8 是最佳的,而且比報 30 好很多;但如果電視台改用絕對誤差計分,報 30 才是對的。 直覺「報最可能的」不是無腦的錯,它只是在回答另一種計分方式的問題。要看清這件事,需要把「最佳策略」變成一個可以求極值的式子。

課堂提問Q1

把情境翻成數學:隨機變數是什麼?「策略」是什麼樣的數學物件?「長期平均的平方誤差」怎麼寫?我們在對什麼東西求最小?

先想一想,再展開看整理後的答案

最直覺的做法是直接寫 (Ya)2(Y-a)^2,但這樣就停了,漏掉了「策略」這一層。

兩個隨機變數:明天的實際最高溫 YY,以及你早上看到的資料 XX(衛星圖、模式輸出、今天的溫度……全部打包)。它們有關——資料好的時候能把 YY 的範圍縮小。

策略是一個函數 gg:看到資料 xx,報出 g(x)g(x)。不是一個數,是「每種資料狀況該報什麼」的一整張表——和 M1.1 裡「每個鞋碼一格」的表是同一種物件。

計分:長期平均的平方誤差是

MSE(g)=E[(Yg(X))2],\mathrm{MSE}(g)=\mathbb E\big[(Y-g(X))^2\big],

期望對「日子」取——每天抽一組 (X,Y)(X,Y)。我們在所有函數 gg 裡找讓它最小的那個。這聽起來很大(函數空間),但下一節會看到只要三行就能解掉,答案正好是上一篇的那張表。

蹺蹺板的支點

在一根木尺上放砝碼:60% 的重量放在 30 的位置、40% 放在 22 的位置。問:支點放哪裡,木尺會平衡?答案是重心 0.6×30+0.4×22=26.80.6\times30+0.4\times22=26.8——一個沒有砝碼的位置。

平方誤差在做的事和重心一樣:它問「哪一個點到所有砝碼的距離平方加權總和最小」,答案就是重心,而重心不需要落在任何砝碼上。「最可能發生的溫度」是最重的那顆砝碼,兩者是不同的問題。

如果改問「到所有砝碼的距離(不平方)加權總和最小」,答案就變了:那是中位數——把砝碼的重量從兩端往中間數,數到一半的位置。這裡就是 30。

為什麼最小值一定落在條件期望

m(X)=E[YX]m(X)=\mathbb E[Y\mid X](每種資料狀況下 YY 的桶內平均)。對任何策略 gg,把 Yg(X)Y-g(X) 拆成 (Ym(X))+(m(X)g(X))(Y-m(X))+(m(X)-g(X)) 再平方:

E[(Yg(X))2]=E[(Ym(X))2]+E[(m(X)g(X))2]+2E[(Ym(X))(m(X)g(X))].\mathbb E\big[(Y-g(X))^2\big] =\mathbb E\big[(Y-m(X))^2\big]+\mathbb E\big[(m(X)-g(X))^2\big]+2\,\mathbb E\big[(Y-m(X))(m(X)-g(X))\big].

交叉項是零:先對 XX 條件,m(X)g(X)m(X)-g(X) 在桶內是常數可以提出(M1.1 的性質 3),剩下 E[Ym(X)X]=m(X)m(X)=0\mathbb E[Y-m(X)\mid X]=m(X)-m(X)=0。於是

MSE(g)=E[(Ym(X))2]與 g 無關+E[(m(X)g(X))2]0, g=m 時為 0.\mathrm{MSE}(g)=\underbrace{\mathbb E\big[(Y-m(X))^2\big]}_{\text{與 }g\text{ 無關}}+\underbrace{\mathbb E\big[(m(X)-g(X))^2\big]}_{\ge0,\ g=m\text{ 時為 }0}.

結論:g=E[YX]g^*=\mathbb E[Y\mid X] 讓 MSE 最小,而且是唯一的最小點(第二項為零迫使 g=mg=m)。剩下的第一項是 E[Var(YX)]\mathbb E[\mathrm{Var}(Y\mid X)]——桶內的散佈,任何策略都消不掉;上一篇說「多一個條件讓桶內散佈變小」,此刻它有了精確的意義:條件越好,MSE 的下限越低。

展開細節換成絕對誤差為什麼是中位數;不對稱懲罰為什麼是 quantile

固定資料狀況(也就是在一個桶內),把 EYa\mathbb E|Y-a|aa 微分:aa 往右移一點,所有在 aa 左邊的 YY 距離增加、右邊的減少,所以導數是 P(Y<a)P(Y>a)P(Y<a)-P(Y>a)。令它為零得 P(Y<a)=P(Y>a)P(Y<a)=P(Y>a)——aa 是中位數。例子裡 aa 在 22 與 30 之間時導數是 0.40.6<00.4-0.6<0,一路遞減到 30 才停,所以最佳是 30。

若低估一度罰 cuc_u、高估一度罰 coc_o(例如低估讓民眾沒帶外套,罰得重),同樣的微分給 coP(Y<a)=cuP(Y>a)c_o\,P(Y<a)=c_u\,P(Y>a),最佳 aaYYcucu+co\frac{c_u}{c_u+c_o} quantile——懲罰越不對稱,最佳預報越往被罰重的那一側偏。平方誤差是 cu=coc_u=c_o 且懲罰隨距離加速的特例,所以它選的是 mean 而不是任何 quantile。

回到情境:報 26.8,還是報 30?

平方誤差計分。 這一天 XX 已知,桶內分佈是「30 佔 60%、22 佔 40%」,E[YX]=26.8\mathbb E[Y\mid X]=26.8。三種做法的期望平方誤差:

期望平方誤差
30(最可能)0.4×82=25.60.4\times8^2=25.6
26.8(桶內平均)0.6×3.22+0.4×4.82=15.360.6\times3.2^2+0.4\times4.8^2=15.36
220.6×82=38.40.6\times8^2=38.4

報 26.8 比報 30 少了四成的誤差。它「幾乎不會發生」這件事與平方誤差無關——平方誤差只在乎距離,而 26.8 離兩個可能都不遠;報 30 賭對時零誤差,賭錯時 8 度的平方是 64,40% 的機率就夠拖垮它。直覺「報最可能的」錯在一個隱含假設:它以為計分只看「有沒有猜中」,那是 0–1 式的計分,不是平方誤差。

絕對誤差計分。 同一天,EYa\mathbb E|Y-a|:報 30 是 0.4×8=3.20.4\times8=3.2,報 26.8 是 0.6×3.2+0.4×4.8=3.840.6\times3.2+0.4\times4.8=3.84。這次 30 贏。所以直覺沒有錯——它是絕對誤差(或更接近「猜中與否」)下的正確答案。 兩種計分給不同答案,數學告訴你的是「哪種計分對應哪個中心」,選哪種計分是電視台的事。

這個結論依賴什麼。 第一,桶內分佈(60/40、30/22)要對——它來自你的資料與模式,錯了兩個答案都錯。第二,YY 的 variance 要有限;碰到極端厚尾的量(偶爾出現離譜的值),mean 會被那幾天拖著跑,平方誤差的最佳策略本身變得不穩,中位數反而穩。第三,證明用到 gg 可以是任何函數——實務上你用一個模型逼近 mm,逼不到的部分就是第二項,不為零。

回到情境:模擬三千天

import numpy as np
rng = np.random.default_rng(2); days = 3000
Y = np.where(rng.random(days) < 0.6, 30.0, 22.0)          # 60% 是 30 度、40% 是 22 度
grid = np.linspace(20, 32, 241)
mse = [((Y - a)**2).mean() for a in grid]; mae = [np.abs(Y - a).mean() for a in grid]
print(f"MSE 最佳預報 {grid[np.argmin(mse)]:.1f}(理論 26.8)  MAE 最佳預報 {grid[np.argmin(mae)]:.1f}(理論 30)")
print(f"報 30 的 MSE {((Y-30)**2).mean():.1f},報 26.8 的 MSE {((Y-26.8)**2).mean():.1f}")
# 違反假設:把每天的溫度換成極厚尾的分佈(偶爾出現離譜值),看 mean 還穩不穩
Z = 26 + 2*rng.standard_t(df=1, size=days)                 # Cauchy 尾巴:variance 不存在
for k in (100, 1000, 3000):
    print(f"前 {k} 天:mean {Z[:k].mean():8.2f}   median {np.median(Z[:k]):6.2f}")

前兩行印出 MSE 最佳在 26.8、MAE 最佳在 30,兩個數字與表格一致。最後三行是刻意違反「variance 有限」:厚尾之下,累積的 mean 隨著天數不收斂(一個離譜值就把它拉走幾度),median 卻穩穩停在 26 附近——這時「MSE 最佳=mean」在數學上仍成立,但那個 mean 已經不是一個能從資料穩定估出來的量。

先消化一下

想一想

一家快遞公司要對每個包裹報一個「預計送達時間」,客戶的不滿意程度與「實際減預計」的平方成正比。給定包裹的資訊 XX,最佳的報法是:

想一想

承上例,若不滿意程度改成與「實際減預計」的絕對值成正比,且送達時間的分佈右偏(偶爾嚴重延誤),最佳報法會怎麼變?

想一想

三行證明裡「交叉項為零」這一步用到了什麼?

參考文獻

  1. Grimmett, G., Stirzaker, D. Probability and Random Processes, 3rd ed. Oxford University Press 2001.(conditional expectation 作為最佳平方誤差預測、法則與例題。)
  2. Bishop, C. M. Pattern Recognition and Machine Learning. Springer 2006, Ch. 1.5.5.(平方損失的最小值是 conditional mean;Minkowski loss 一族與中位數。)
  3. Gneiting, T. Making and Evaluating Point Forecasts. JASA 2011.(哪種計分函數對應哪個統計量——mean、median、quantile——的系統整理。)