① 依序閱讀:每節先讀說明;遇到互動元件時,先預測結果,再操作驗證。 ② 對照來源:章節旁標示課本章節與講義主題,正文保留公式、條件與算例;計算細節、完整實作與證明預設收合,可按需要展開。來源標記可查原教材。 ③ 檢查理解:答錯時先看回饋,再回到相關說明;標為延伸的內容可留待第二輪。 ④ 最後翻關鍵詞彙卡自測術語,並用 重點速查與來源查閱。
教科書:An Introduction to Statistical Learning with Applications in Python(ISLP);
進階參考:The Elements of Statistical Learning(ESL)。章節旁的來源標記可點到本頁書目。
第 1 章介紹了統計學習的用途。這一章要把它寫成一條式子, 之後九章的方法都可以用這條式子來理解:
$$Y = f(X) + \varepsilon$$$Y$ 是你想預測的那個東西(銷售量、油耗、會不會違約), $X = (X_1, \dots, X_p)$ 是你手上量得到的那些變數。 $f$ 是「$X$ 對 $Y$ 提供的系統性資訊」——固定不變、真實存在,但你永遠看不到它。 $\varepsilon$ 是剩餘的隨機誤差,滿足 $E[\varepsilon\mid X]=0$。
整章只做兩件事:(一)怎麼估 f、(二)怎麼判斷估得好不好。 第二件事會影響方法的選擇,因為「在訓練資料上擬合得好」 不代表「在新資料上也預測得準」。
先把兩個常見的目的分清楚,因為它們會導向完全不同的方法選擇:
| 預測(prediction) | 推論(inference) | |
|---|---|---|
| 你要什麼 | Ŷ 愈接近 Y 愈好 | 描述 X 與 Y 的條件關聯 |
| f̂ 可以是黑盒子嗎 | 可以,重點是預測準確度 | 不行,必須看得懂 |
| 典型問題 | 這封信是垃圾郵件嗎?這支股票明天多少? | 控制其他媒體後,哪種廣告仍與銷售量相關?價格與銷量如何一起變動? |
| 偏好的模型 | 彈性高的(提升法、神經網路) | 可解釋的(線性模型、lasso) |
| 本章對應 | §2.2 怎麼量準不準 | §2.1.3 彈性換掉了解釋力 |
兩者也可以同時要。房價模型既想知道「靠河的房子貴多少」(推論), 也想知道「這間房子被高估了嗎」(預測)。只是通常得在中間選一個折衷點。
下列哪一句話正確描述了式子 Y = f(X) + ε 裡的 f?
先考慮一個問題:如果你猜對了 f,誤差會是 0 嗎? 不會。假設 $\hat f$ 與 $X$ 都固定,只有 $\varepsilon$ 在變動,那麼
$$E\left(Y - \hat Y\right)^2 = \underbrace{\left[f(X) - \hat f(X)\right]^2}_{\text{可縮減}} + \underbrace{\mathrm{Var}(\varepsilon)}_{\text{不可縮減}}$$這是 ISLP 式 2.3。左邊是你會量到的平均平方誤差,右邊拆成兩塊:
講義把同一件事寫成條件版本——把 $X = x$ 固定住, 只看這一個點上的均方誤差。這是後面每一章都會再用到的一行:
$$E\left[\left(Y - \hat f(x)\right)^2 \mid X = x\right] = \left[f(x) - \hat f(x)\right]^2 + \mathrm{Var}(\varepsilon)$$前提。模型是 $Y = f(X) + \varepsilon$,其中 $E[\varepsilon \mid X] = 0$、$\mathrm{Var}(\varepsilon \mid X) = \sigma^2$。 把 $X = x$ 固定住,並且把 $\hat f$ 當成已經訓練好、不再變動的函數。 於是 $f(x)$ 與 $\hat f(x)$ 都只是常數,式子裡唯一還在隨機的東西只有 $\varepsilon$。
第 1 步:把 $Y$ 換掉。令 $d(x) = f(x) - \hat f(x)$,它是一個常數:
$$Y - \hat f(x) = f(x) + \varepsilon - \hat f(x) = d(x) + \varepsilon$$第 2 步:平方展開。
$$\left(Y - \hat f(x)\right)^2 = d(x)^2 + 2\,d(x)\,\varepsilon + \varepsilon^2$$第 3 步:取條件期望。期望是線性的,常數提得出來:
$$E\left[(Y - \hat f(x))^2 \mid X = x\right] = d(x)^2 + 2\,d(x)\,E[\varepsilon \mid X = x] + E[\varepsilon^2 \mid X = x]$$第 4 步:把後面兩項算掉。中間那一項因為 $E[\varepsilon \mid X = x] = 0$ 而整項消失。最後一項用同一個條件:
$$E[\varepsilon^2 \mid X = x] = \mathrm{Var}(\varepsilon \mid X = x) + \left(E[\varepsilon \mid X = x]\right)^2 = \sigma^2 + 0 = \mathrm{Var}(\varepsilon)$$結論。兩項留下來,正好就是講義寫的那一行:
$$E\left[(Y - \hat f(x))^2 \mid X = x\right] = \underbrace{\left[f(x) - \hat f(x)\right]^2}_{\text{可縮減}} + \underbrace{\mathrm{Var}(\varepsilon)}_{\text{不可縮減}}$$怎麼讀它。第一項是你動得到的:換方法、加資料、加變數都會讓它變小, 理論上可以趨近 0。第二項完全不受方法影響,就算 $\hat f = f$ 也一樣在。
另外請注意「$\hat f$ 固定不動」這個前提。如果把訓練資料本身的隨機性 也算進來(每換一份訓練集就得到不同的 $\hat f$),第一項還會再拆成偏差平方與變異兩塊, 那是本頁後面偏差–變異拆解那一節的事。
下面的元件把這兩塊分開來看:真實的 $f$ 固定不動,只有雜訊的 $\sigma$ 在變。 在 $x$ 這條垂直線上,$Y$ 有一整個分佈,觀測值相對於中心的上下變動就是 $\varepsilon$。
到這裡還有一個坑沒有填:我們一直講「真實的 $f$」,可是 $f$ 本身到底是什麼?在 $X = x$ 這一點上,$f(x)$ 要取哪個數字才算最好? 下一節先把它定義清楚、證明它真的最好,再處理「拿不到它的時候怎麼辦」。
增加同類樣本不會改變不可縮減誤差;加入有用變數則會改變 ε 的定義,讓其中一部分能由 X 解釋。
不可縮減誤差是 $\mathrm{Var}(\varepsilon)$,而 $\varepsilon$ 的定義是 $Y - E[Y \mid X]$,也就是「在給定這組 X 之後,Y 還剩下的變異」。資料量 n 變大只會讓你把 f 估得更準(減少可縮減誤差),$\mathrm{Var}(\varepsilon)$ 是母體的性質,跟你抽了幾筆完全無關。
加變數就不一樣了。假設病人的反應其實還跟基因型有關,而你原本沒量。那部分變異現在被塞在 $\varepsilon$ 裡。一旦把基因型加進 X,條件期望值換成了 $E[Y \mid X, \text{基因型}]$——它能解釋的變異只多不少,剩下的殘差因此只小不大:$E\big[\mathrm{Var}(Y \mid X, \text{基因型})\big] \le E\big[\mathrm{Var}(Y \mid X)\big]$。(新變數真的帶進資訊時才會嚴格變小;毫無關係的變數只會讓等號成立。)所以嚴格說法是:不可縮減誤差的下限由你使用的這組 X 決定。
實務上的意義:如果經重複評估得到的測試風險已逼近你估計的 $\mathrm{Var}(\varepsilon)$,可優先考慮蒐集新變數,再評估是否需要更換模型或調整參數。
上一節一直在講「真實的 $f$」,但沒說 $f$ 在某一點上該取哪個數字。 講義用一個非常具體的問題把答案逼出來:手上的資料裡, $X = 4$ 的地方有一整群不同的 $Y$,而你只能給一個預測值。要給哪一個?
$X$ 是向量時完全一樣,只是條件多掛幾個(講義):
$$f(x) = f(x_1, x_2, x_3) = E\left[Y \mid X_1 = x_1,\, X_2 = x_2,\, X_3 = x_3\right]$$問題來了:為什麼是平均?中位數不行嗎?眾數不行嗎? 行不行取決於你用什麼量尺算帳,而這門課的回歸量尺是平方誤差。 講義那一行講的就是這件事:
要證的事。對任意函數 $f$,在每一點 $X = x$ 上都有
$$E\left[(Y - f(X))^2 \mid X = x\right] \;\ge\; E\left[(Y - \mu(x))^2 \mid X = x\right], \qquad \mu(x) = E[Y \mid X = x]$$第 0 步:把「對所有函數」降級成「對一個數字」。 $X = x$ 固定之後,$f(X)$ 就只是一個數字 $f(x)$,不再是函數。 所以「在所有函數裡找最好的」可以拆成「在每一點各自找最好的常數 $c = f(x)$」。 只要每一點的最佳常數都是 $\mu(x)$,把這些點串起來的那個函數就是最佳函數。 這正是講義那句「在所有函數上、在每一個 $X = x$ 點上」的意思。
第 1 步:加一項、減一項。硬把 $\mu(x)$ 塞進去:
$$Y - c = \underbrace{\left(Y - \mu(x)\right)}_{\text{隨機,條件期望 } 0} + \underbrace{\left(\mu(x) - c\right)}_{\text{常數}}$$左邊那一塊的條件期望確實是 0:$E[Y - \mu(x) \mid X = x] = \mu(x) - \mu(x) = 0$。 這就是整個證明的樞紐。
第 2 步:平方展開,取條件期望。
$$E\left[(Y - c)^2 \mid X = x\right] = E\left[(Y - \mu(x))^2 \mid X = x\right] + 2\left(\mu(x) - c\right)\underbrace{E\left[Y - \mu(x) \mid X = x\right]}_{=\,0} + \left(\mu(x) - c\right)^2$$第 3 步:交叉項歸零。剩下乾乾淨淨的兩項:
$$E\left[(Y - c)^2 \mid X = x\right] = \underbrace{\mathrm{Var}\left(Y \mid X = x\right)}_{\text{跟 } c \text{ 完全無關}} + \underbrace{\left(\mu(x) - c\right)^2}_{\ \ge\ 0}$$第 4 步:讀式子。第一項是資料本身的條件變異,你挑什麼 $c$ 都改不動它; 第二項是一個平方,最小值 0 只在 $c = \mu(x)$ 時取到,而且只有這一點取到。所以
$$\arg\min_{c} E\left[(Y - c)^2 \mid X = x\right] = \mu(x) = E[Y \mid X = x]$$順帶得到一件事:能達到的最小值就是 $\mathrm{Var}(Y \mid X = x)$, 也就是上一節的不可縮減誤差 $\mathrm{Var}(\varepsilon)$。兩節在這裡接起來了。
第 5 步:從一點推到全部。上式對每一個 $x$ 分別成立, 所以函數 $f^{*}(x) = E[Y \mid X = x]$ 在每一點都不輸給任何其他函數。 要全域版本就再對 $X$ 取一次期望(全期望公式):
$$E\left[(Y - f(X))^2\right] = E\Big[\,E\left[(Y - f(X))^2 \mid X\right]\Big]$$括號裡的東西逐點被 $f^{*}$ 最小化,外面再取期望當然也最小。$\blacksquare$
換個誤差就換個答案。如果改用絕對誤差 $E\left[\,\left|Y - c\right| \mid X = x\right]$,最佳的 $c$ 會變成條件中位數。 所以「取平均」不是天經地義,是平方誤差挑出來的。 這也解釋了為什麼本課後面量準確度時,回歸看 MSE、分類看錯誤率—— 量尺不同,最佳預測就不同。
如果資料點夠多,事情就簡單得多。 假設 $X = 4$ 這個位置真的躺著幾百筆觀測,那你什麼模型都不用建: 把那幾百筆的 $y$ 平均起來,就是 $E[Y \mid X = 4]$ 的估計, 而它要估的那個東西,照剛才的證明就是平方誤差下最好的預測。 獨立抽樣、變異數有限時,鄰域內筆數 $m$ 愈多,樣本平均就愈接近母體的條件期望。
麻煩在於「夠多」幾乎不會發生。講義下一頁就潑冷水:
那就把定義放鬆:不要求「剛好等於 $x$」,改成「離 $x$ 夠近」。 這就是最近鄰平均(nearest neighbor averaging),講義的式子:
$$\hat f(x) = \mathrm{Ave}\left(Y \mid X \in N(x)\right)$$$N(x)$ 是 $x$ 的一個鄰域——可以是「離 $x$ 最近的 $k$ 筆」, 也可以是「$\left|X - x\right| \le h$ 的那些筆」。這一步看起來只是權宜之計, 其實是整個非參數式方法的原型:第 7 章的核平滑與樣條、第 8 章的樹、 第 4 章的 KNN 分類,骨子裡都是它的變形。
放鬆是有代價的,而且代價正好是一組拉鋸。下面這個元件讓你親手拉:
最近鄰平均能用的前提是「鄰域夠小,小到裡面的 $f$ 幾乎是常數; 同時鄰域裡又有夠多的點,多到平均值不抖」。一維的時候這兩件事很容易同時成立。 下一節要說的是:維度提高後,要同時做到這兩點通常需要更多資料。
有人說:「既然 f(x) = E(Y | X = x) 是最好的預測,那我把它算出來,預測誤差就是 0 了。」這句話錯在哪裡?
維度增加後,資料會更難在每個方向上都靠得很近。為了湊到足夠的鄰居,往往需要擴大鄰域;鄰域太大時,就不能期待裡面的 f 幾乎不變。
實際表現還取決於資料量、有效維度、分布及 f 的形狀。更多同類資料可能讓我們用較小比例的鄰域估計;因此要共同選擇鄰居數或寬度,不能只看「樣本數很多」就認為局部估計一定可靠。
資料有許多預測變數。使用 KNN 時,為什麼不能只因為樣本數很多,就直接認定「最近鄰」一定夠局部?
那麼問題變成:在 $p$ 維的單位超立方體裡,要圈到 10% 的體積, 每個座標軸上得吃掉多長?答案很短:
$$e_p(r) = r^{1/p}, \qquad e_p(0.1) = 0.1^{1/p}$$| 維度 p | 1 | 2 | 3 | 5 | 10 | 20 | 50 |
|---|---|---|---|---|---|---|---|
| 每個軸要覆蓋的比例 $0.1^{1/p}$ | 10.0% | 31.6% | 46.4% | 63.1% | 79.4% | 89.1% | 95.5% |
$p = 10$ 的時候,這個所謂的「鄰域」在每一個座標軸上都得覆蓋 79% 的範圍。 它已經不是鄰域,是整個空間的縮小版。 「局部」這兩個字消失了——而局部正是我們用它來近似 $E[Y \mid X = x]$ 的唯一理由。 講義最後一行寫得很直接:在高維空間裡,一個 10% 的鄰域已經不再算是局部的, 於是我們就失去了「用局部平均去估 $E(Y \mid X = x)$」的本意。
講義換一個角度說同一件事,而且更震撼: 高維空間的體積幾乎全部躲在角落。 拿一個邊長 2 的超立方體,塞進它的內接球(半徑 $R = 1$,剛好碰到每一面)。 $p$ 維球的體積有閉式解:
$$V_{\text{ball}}(R) = \frac{\pi^{p/2}}{\Gamma\!\left(\frac{p}{2} + 1\right)} R^{p}, \qquad V_{\text{cube}} = 2^{p}$$ $$r = \frac{V_{\text{ball}}}{V_{\text{cube}}} = \frac{\pi^{p/2}}{2^{p}\,\Gamma\!\left(\frac{p}{2} + 1\right)}\, R^{p}$$講義把前六維逐項列出來,值得逐格看一次:
| $p$ | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| (a) 半徑 $R$ 的球體積 | $2R$ | $\pi R^2$ | $\frac{4}{3}\pi R^3$ | $\frac{\pi^2}{2} R^4$ | $\frac{8\pi^2}{15} R^5$ | $\frac{\pi^3}{6} R^6$ |
| (b) 超立方體體積 $2^p$ | 2 | 4 | 8 | 16 | 32 | 64 |
| $r = (a)/(b)$ | $R$ | $\frac{\pi R^2}{4}$ | $\frac{\pi R^3}{6}$ | $\frac{\pi^2 R^4}{32}$ | $\frac{\pi^2 R^5}{60}$ | $\frac{\pi^3 R^6}{384}$ |
把 $R = 1$(剛好內接)代進去,$r$ 就是「內接球佔整個立方體的比例」: $p = 1$ 是 100%、$p = 2$ 是 78.5%、$p = 3$ 是 52.4%、$p = 4$ 只剩 30.8%、 $p = 6$ 剩 8.1%、$p = 10$ 剩 0.25%、 $p = 20$ 剩 $2.5 \times 10^{-6}\%$(比例 $2.5 \times 10^{-8}$)。 換句話說,十維立方體裡有 99.75% 的體積落在內接球之外—— 也就是靠近各個角落的那些區域。 你以為自己站在中間,其實資料都在你摸不到的邊邊。
反過來問更有感:如果我就是要圈到超立方體的 10% 體積,球的半徑要多大? 把上面的式子解出 $R$(講義):
$$R = \frac{2}{\sqrt{\pi}}\left[\,r\,\Gamma\!\left(\frac{p}{2} + 1\right)\right]^{1/p}, \qquad \Gamma\!\left(\frac{p}{2} + 1\right) \sim \sqrt{\pi p}\,\left(\frac{p}{2e}\right)^{p/2}$$這條式子解的是「整顆球的體積等於立方體體積的 10%」。 $R > 1$ 之後球已經有一部分跑到立方體外面,真正落在立方體裡面的比例會略低於 10%, 所以它其實是「覆蓋 10% 所需半徑」的下界。講義用的是同一個簡化; 差距很小($p = 6$ 時實際覆蓋 9.9985%),不影響結論的方向。
右邊那個 $\Gamma$ 的 Stirling 近似說明了為什麼會炸: $\Gamma\!\left(\frac{p}{2}+1\right)$ 大致以 $(p/2e)^{p/2}$ 的速度成長, 開 $p$ 次方之後仍留下一個隨 $p$ 增大的 $\sqrt{p}$ 量級因子。代進去算: $p = 1$ 要 $R = 0.10$、$p = 3$ 要 0.58、$p = 6$ 就已經 1.04—— 超過內接球的半徑 1,球戳出立方體的面了;$p = 20$ 要 2.14, 是立方體半邊長的兩倍多。要「只看 10% 的鄰居」,你得把手伸出房間外面。
在 p 維半徑 R 的球中均勻取點,距離中心不超過 $(1-\delta)R$ 的機率為 $(1-\delta)^p$。 所以外側厚度 $\delta R$ 的球殼占比是
$$P\{(1-\delta)R<\|X\|\le R\}=1-(1-\delta)^p,\qquad0\le\delta\le1.$$例如外側 10% 厚度,在二維占 $1-0.9^2=19\%$,十維占約 65.1%,五十維占約 99.5%。 這是均勻球內取樣的結論;真實資料不一定均勻分布在球內,也不能直接套到任意核距離。 它補充了「內接球在立方體中占比很小」以外的另一個現象:即使只看球本身,靠近中心的體積比例也很小。
令 Aₚ 為單位球面面積。高斯積分分別用直角座標與極座標計算:
$$\pi^{p/2}=\int_{\mathbb R^p}e^{-\|x\|^2}\,dx =A_p\int_0^\infty e^{-r^2}r^{p-1}\,dr=\frac{A_p}{2}\Gamma(p/2).$$所以半徑 R 球體積為 $A_pR^p/p=\pi^{p/2}R^p/\Gamma(p/2+1)$。 球體積與半徑的 p 次方成正比,內球除以外球即為 $(1-\delta)^p$;取補集得到球殼比例。
來源:講義 02 指向的 Blum、Hopcroft、Kannan,Foundations of Data Science,§2.3–2.4.1,pp.16–19。 只延伸本節直接相關的高維幾何,不要求讀完整本書。
知道要估 $f$ 了,接下來的分岔是:要不要先假設 f 的形狀? 兩條路各有代價。
參數式方法(parametric method)分兩步。第一步假設形狀, 最簡單的假設是線性:
$$f(X) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_p X_p$$第二步用訓練資料估那 $p + 1$ 個係數(第 3 章的最小平方法)。 原本要估「一個任意的 $p$ 維函數」,做了線性假設後,只要估 $p+1$ 個數字。 代價是——函數形式假設錯誤會造成偏差。ISLP 圖 2.4 的黃色平面明顯漏掉了 真實 $f$ 的彎曲(圖 2.3 的藍色曲面)。
非參數式方法(non-parametric method)不預設固定維度的函數形式,
但仍要指定平滑、局部相似性、距離或尺度等結構。ISLP 圖 2.5 用薄板樣條
(thin-plate spline)擬合同一份 Income 資料,能呈現資料中的非線性關係。
但這個彈性也有代價:
| 參數式(parametric) | 非參數式(non-parametric) | |
|---|---|---|
| 做法 | 先假設 f 的固定形式,再估參數 | 不固定函數形式,但指定平滑或局部結構 |
| 要估什麼 | 有限個參數(β₀…βₚ) | 整個函數,沒有固定的參數個數 |
| 需要的資料量 | 少 | 多,而且隨 p 增加得非常快 |
| 結構假設錯的後果 | 固定形式錯誤會造成高偏差 | 距離、尺度或平滑假設錯也會造成偏差 |
| 額外要選的東西 | 形狀(線性?加二次項?) | 平滑程度 |
| ISLP 例子 | 圖 2.4 的線性平面 | 圖 2.5/2.6 的薄板樣條 |
| 本書章節 | 第 3、4、6 章 | 第 7(樣條、GAM)、8(樹)、9 章 |
你有 n = 60 筆資料、p = 12 個預測變數,而且懷疑關係不是線性的。直接使用一個很有彈性的非參數式方法,主要的風險是什麼?
把上一節的分岔攤開,其實是一條連續的光譜。一端是彈性低但看得懂, 另一端是彈性高但講不清楚。ISLP 圖 2.7 把本書的方法擺在這張圖上。
你可能會問:既然只要預測準,為什麼不永遠選最彈性的那個? ISLP 的回答很直接——彈性較低的方法有時反而預測更準。 原因是過度擬合,下一節就會用數字說清楚。
下列哪一組方法在 ISLP 圖 2.7 上「彈性最低、可解釋性最高」?
先確認資料、損失定義與程式正確,再比較訓練及獨立驗證表現。訓練誤差也很高,可能是模型類太受限,也可能是最佳化尚未找到這個模型能達到的解。前者可考慮更合適的特徵或更有彈性的模型;後者先檢查最佳化過程,不能只靠加資料。
訓練誤差低而驗證誤差高,既可能是過度擬合,也可能是資料分布不一致(distribution mismatch):例如訓練資料來自成人,而預測對象換成兒童。前者可考慮減少彈性、正則化或取得更多同分布訓練資料;後者需要檢查來源、收集與預測情境。只看兩個誤差數字不能辨認原因,須配合資料設計、學習曲線與誤差分析。
這是講義連結的模型誤差診斷流程的閱讀方式;第二章的偏差–變異公式預設同一資料生成分布,不能自動解釋任意分布轉移。
要比較方法,得先有量尺。迴歸問題最常用的是均方誤差(MSE):
$$\mathrm{MSE} = \frac{1}{n} \sum_{i=1}^{n} \left(y_i - \hat f(x_i)\right)^2$$問題在於:這個平均是對哪一批資料算的? 如果用的是擬合時那批資料,它叫訓練 MSE; 如果用的是模型完全沒見過的資料,它叫測試 MSE。 兩者的行為完全不同,我們用後者評估新資料上的表現。
為什麼不能用訓練 MSE 當代理?因為大部分方法就是直接或間接在最小化它。 你拿一個「已經被最佳化過的目標值」當成公正的評分,當然會太樂觀。 極端一點:一條通過每一個訓練點的曲線,訓練 MSE 是 0—— 而這個 0 完全沒有告訴你它在新資料上會怎樣。
講義最後一行把這件事寫成一句斷言,值得把它證出來:
先把話說精確。「典型上比較高」講的是期望值, 不是「每一次都」。要證的是這一條:
$$E_{Tr}\left[\widehat{R}(\hat f)\right] \;\le\; E_{Tr}\left[R(\hat f)\right]$$記號。訓練集 $Tr = \{(x_i, y_i)\}_{i=1}^{n}$ 是從母體分布 $P$ 獨立抽出來的。 對任何一個函數 $f$,定義
$$\widehat{R}(f) = \frac{1}{n}\sum_{i=1}^{n}\left(y_i - f(x_i)\right)^2 \quad\text{(訓練誤差)},\qquad R(f) = E_{(X, Y)\sim P}\left[(Y - f(X))^2\right] \quad\text{(測試誤差)}$$模型類 $\mathcal{F}$ 事先固定、不依賴訓練資料, 而 $\hat f = \arg\min_{f \in \mathcal{F}} \widehat{R}(f)$—— 它是看過 $Tr$ 之後才在 $\mathcal{F}$ 裡挑出來的,這是整件事的關鍵。 (這兩個條件都要。「隨便一個看過資料才決定的 $\hat f$」不夠: $n = 1$、$Y$ 零均值變異 $\sigma^2$ 時,故意取 $\hat f \equiv -y_1$, 期望訓練誤差是 $4\sigma^2$、期望測試誤差是 $2\sigma^2$,不等號會反過來。) 再令 $f^{*} = \arg\min_{f \in \mathcal{F}} R(f)$ 是類裡真正最好的那一個 (它只由母體決定,跟 $Tr$ 無關)。
第 1 步:對固定的 $f$,訓練誤差是測試誤差的不偏估計。 只要 $f$ 不依賴 $Tr$,每一項的期望都是 $R(f)$:
$$E_{Tr}\left[\widehat{R}(f)\right] = \frac{1}{n}\sum_{i=1}^{n} E\left[(y_i - f(x_i))^2\right] = R(f)$$注意這一步對 $\hat f$ 不成立,因為 $\hat f$ 是用 $y_i$ 挑出來的, 跟 $y_i$ 有相關。整個「訓練誤差太樂觀」就是從這裡漏出來的。
第 2 步:訓練誤差的期望不會超過類裡最好的風險。 $\hat f$ 是最小值,所以對每一個 $f \in \mathcal{F}$ 都有 $\widehat{R}(\hat f) \le \widehat{R}(f)$。兩邊取期望,再用第 1 步:
$$E_{Tr}\left[\widehat{R}(\hat f)\right] \;\le\; E_{Tr}\left[\widehat{R}(f)\right] = R(f) \qquad \text{對每個 } f \in \mathcal{F}$$對右邊取下確界,得 $E_{Tr}[\widehat{R}(\hat f)] \le R(f^{*})$。 (這就是 $E[\min] \le \min[E]$:先看答案再挑,當然挑得比較低。)
第 3 步:測試誤差的期望不會低於類裡最好的風險。 $\hat f$ 本身也在 $\mathcal{F}$ 裡,所以不管抽到哪一份 $Tr$ 都有 $R(\hat f) \ge R(f^{*})$。取期望:
$$E_{Tr}\left[R(\hat f)\right] \;\ge\; R(f^{*})$$合起來。把兩條夾在 $R(f^{*})$ 的兩側:
$$E_{Tr}\left[\widehat{R}(\hat f)\right] \;\le\; R(f^{*}) \;\le\; E_{Tr}\left[R(\hat f)\right] \qquad \blacksquare$$「typically」到底在哪裡。上面證的是期望值的不等式,
有兩個地方會讓它在單一次實驗裡看起來不成立:
1. 有限的測試集只是 $R(\hat f)$ 的一個估計,運氣好時可以低於訓練誤差。
2. 如果 $\hat f$ 不是用 $Tr$ 挑的(例如模型是別人給你的、參數也不重估),
第 1 步就對它成立,兩邊期望相等,不等式退化成等號。
差距完全來自「用同一批資料又挑模型又評分」。
差距有多大?在一個更受限的設定下可以算出來(ESL §7.4)。 把訓練輸入 $\mathbf{X}$ 固定住,只讓反應值隨機, 並把樂觀程度定義成「同樣那些 $x_i$ 上換一批新的 $y$」與訓練誤差的差:
$$\omega(\mathbf{X}) = E\left[R_{\text{in}}(\hat f) - \widehat{R}(\hat f) \;\middle|\; \mathbf{X}\right] = \frac{2}{n}\sum_{i=1}^{n}\mathrm{Cov}\left(\hat y_i,\, y_i \;\middle|\; \mathbf{X}\right)$$擬合愈是「跟著 $y_i$ 跑」,這個共變異數就愈大。 條件在 $\mathbf{X}$ 上這件事不能省:不然一個完全不看資料的 $\hat y_i = f(x_i)$ 樂觀程度明明是 0,無條件的共變異數卻是 $\mathrm{Var}(f(X_i)) \neq 0$。
再多一個假設就有漂亮的閉式:若擬合是線性平滑器 $\hat{\mathbf{y}} = S\mathbf{y}$(給定 $\mathbf{X}$ 後 $S$ 固定), 且 $\mathrm{Cov}(\varepsilon \mid \mathbf{X}) = \sigma^2 I$,則
$$\omega(\mathbf{X}) = \frac{2\sigma^2}{n}\,\mathrm{tr}(S)$$固定設計的普通最小平方法裡 $\mathrm{tr}(S) = \mathrm{rank}(\mathbf{X})$, 滿秩時就是含截距的參數個數 $d$,於是回到常見的 $\omega = 2 d \sigma^2 / n$: 參數愈多、樣本愈少,訓練誤差就愈樂觀。
兩個要提醒的地方:這是 in-sample 的樂觀程度($x_i$ 沒有換), 不是一般測試誤差差距的精確公式;而且 $d$ 要用 $\mathrm{tr}(S)$, 資料驅動地選變數、選節點之後不能再拿名目參數個數去代。 這條式子正是 第 6 章 $C_p$ 與 AIC 「罰一項與 $\mathrm{tr}(S)$ 成正比的量」的來源(BIC 的 $d\log n$ 是另一套推導)。 它也解釋了 1-最近鄰的極端情形:它把每個訓練點都完美記住,訓練誤差 0, 但測試誤差一點都不是 0。
這組模型依序擴大且用同一訓練目標擬合,所以訓練 MSE 單調不增; 測試 MSE 常隨彈性先降後升,但最低點也可能落在端點。 當訓練 MSE 很小、測試 MSE 卻很大,我們就說發生了過度擬合(overfitting)。
期望值是依機率加權的平均;MSE 則是把平方誤差平均。 重點是對哪些隨機量取平均:只對新觀測值的誤差取平均,與連訓練資料也重抽後取平均, 是不同的問題。若需要複習加權平均的程式寫法,可看 附錄:流程控制中的 zip 與加權平均(課程 Lab Ch2 的迴圈範例)。
先講訓練 MSE。彈性愈高,模型能生出的函數集合愈大(本頁的樣條是巢狀的,df = 6 能擬合出的每一條曲線 df = 7 都能擬合出來)。既然在更大的集合裡找最小值,最小值只可能更小或一樣。所以訓練 MSE 單調不上升。這是純粹的最佳化事實,跟資料是什麼無關。
測試 MSE 就沒有這個保護,因為它衡量的是「在沒見過的點上」的表現。拆解式(下一節)說它等於偏差² + 變異 + $\mathrm{Var}(\varepsilon)$。彈性上升時偏差²下降、變異上升。一開始偏差²掉得比變異漲得快,所以總和往下;某個點之後偏差²已經幾乎為 0、沒東西可掉了,變異卻還在漲,總和於是往上。兩個反向的量相加,形狀就是 U。
要注意「U 型」講的是一般趨勢。真實 f 剛好接近線性時,偏差²從一開始就幾乎是 0,U 的左半邊等於不存在,圖看起來就是單調上升(下一節的情境 B)。所以嚴格的說法是:測試 MSE 的最低點可能落在任何位置,包含最左邊。
上一節看到了 U 型,這一節解釋它是怎麼長出來的。可以證明: 在某個測試點 $x_0$ 上,期望測試 MSE 一定能拆成三塊 (ISLP 式 2.7、ESL 式 7.9):
$$E\left(y_0 - \hat f(x_0)\right)^2 = \mathrm{Var}\!\left(\hat f(x_0)\right) + \left[\mathrm{Bias}\!\left(\hat f(x_0)\right)\right]^2 + \mathrm{Var}(\varepsilon)$$三項都非負,所以期望測試 MSE 永遠不可能低於 $\mathrm{Var}(\varepsilon)$。 這條式子同時給了 U 型的機制與 P01 那條下限。三項各是什麼意思:
講義只寫了一行「這個拆解的證明」就跳過去了,這裡補完:
設定與記號。把測試點的位置 $x_0$ 固定住, 真實模型是 $Y = f(X) + \varepsilon$,其中 $f(x) = E[Y \mid X = x]$、 $E[\varepsilon \mid X] = 0$,並沿用本章的同變異假設 $\mathrm{Var}(\varepsilon \mid X) = \sigma^2$(允許異變異時, 下面的 $\mathrm{Var}(\varepsilon)$ 都要讀成 $\mathrm{Var}(Y \mid X = x_0)$)。測試觀測值是
$$y_0 = f(x_0) + \varepsilon_0$$為了讀起來不擠,令 $f_0 = f(x_0)$、$\hat\mu = \hat f(x_0, Tr)$、 $m = E_{Tr}\left[\hat\mu\right]$。
這裡有兩層隨機,一定要分清楚:
1. 訓練集 $Tr$——每換一份訓練資料,$\hat\mu$ 就是另一個數字。
2. 測試點的雜訊 $\varepsilon_0$——它是新抽的,沒有參與訓練。
所以 $\varepsilon_0$ 與 $Tr$ 獨立,因而與 $\hat\mu$ 獨立。外面那個 $E$ 是對這兩層一起取的,
這正是講義那句「這個期望值同時把 $y_0$ 的變動與 $Tr$ 的變動都平均掉」的意思。
本頁 P01 那條推導是把 $\hat f$ 固定住的版本,
這裡把 $\hat f$ 的隨機性也放進來,所以可縮減的那一塊會再裂成兩塊。
第 1 步:把 $y_0$ 換掉、湊出 $\varepsilon_0$。
$$y_0 - \hat\mu = \left(f_0 + \varepsilon_0\right) - \hat\mu = \varepsilon_0 + \left(f_0 - \hat\mu\right)$$第 2 步:平方展開、取期望。
$$E\left[(y_0 - \hat\mu)^2\right] = E\left[\varepsilon_0^2\right] + 2\,E\left[\varepsilon_0\left(f_0 - \hat\mu\right)\right] + E\left[\left(f_0 - \hat\mu\right)^2\right]$$中間那一項因為獨立而可以拆開,再用 $E[\varepsilon_0] = 0$:
$$E\left[\varepsilon_0\left(f_0 - \hat\mu\right)\right] = E[\varepsilon_0]\;E\left[f_0 - \hat\mu\right] = 0$$第一項則是 $E[\varepsilon_0^2] = \mathrm{Var}(\varepsilon) = \sigma^2$。 於是只剩下
$$E\left[(y_0 - \hat\mu)^2\right] = \mathrm{Var}(\varepsilon) + E\left[\left(\hat\mu - f_0\right)^2\right]$$第 3 步:把剩下那一項再拆一次——一樣是加一項、減一項。 這次塞進去的是 $\hat\mu$ 自己的平均 $m$:
$$\hat\mu - f_0 = \underbrace{\left(\hat\mu - m\right)}_{\text{隨 } Tr \text{ 變動,期望 } 0} + \underbrace{\left(m - f_0\right)}_{\text{常數}}$$ $$E\left[\left(\hat\mu - f_0\right)^2\right] = E\left[\left(\hat\mu - m\right)^2\right] + 2\left(m - f_0\right)\underbrace{E\left[\hat\mu - m\right]}_{=\,0} + \left(m - f_0\right)^2$$第 4 步:認出這兩塊是誰。
$$E\left[\left(\hat\mu - m\right)^2\right] = \mathrm{Var}_{Tr}\left(\hat f(x_0)\right), \qquad m - f_0 = E\left[\hat f(x_0)\right] - f(x_0) = \mathrm{Bias}\left(\hat f(x_0)\right)$$合起來就是講義那一行:
$$E\left[\left(y_0 - \hat f(x_0)\right)^2\right] = \underbrace{\mathrm{Var}\!\left(\hat f(x_0)\right)}_{\text{換一份訓練資料會抖多少}} + \underbrace{\left[\mathrm{Bias}\!\left(\hat f(x_0)\right)\right]^2}_{\text{平均而言偏掉多少}} + \underbrace{\mathrm{Var}(\varepsilon)}_{\text{怎麼樣都在}} \qquad \blacksquare$$三個立刻讀得出來的推論。
1. 三項都非負,所以期望測試 MSE 有下限 $\mathrm{Var}(\varepsilon)$,
跟 P01 得到的下限是同一件事。
2. 偏差與變異都是對 $Tr$ 取的統計量,
所以「這一次擬合的殘差有多大」跟它們是兩回事——要看它們得想像重抽很多份訓練集。
3. 彈性一升,$\mathrm{Var}(\hat f(x_0))$ 通常上去、
$\mathrm{Bias}$ 通常下來,兩者相加才有 U 型。沒有哪一邊可以單獨最佳化——
這就是講義說的 bias-variance trade-off。
整條曲線的版本。上面只證了單一個 $x_0$。 把等式對測試點的分布再取一次期望(或在測試網格上平均), 左邊變成期望測試 MSE、右邊三項變成各自的平均,形式一模一樣。 下面那張圖畫的就是這個平均版本。
ESL §7.3 也給出一個可直接計算的特例。對 KNN 迴歸, 在固定訓練輸入(因而鄰居的位置也固定)、雜訊零均值同變異且彼此獨立的條件下, 三項有封閉形式(ESL 式 7.10):
$$\mathrm{Err}(x_0) = \sigma_\varepsilon^2 + \left[f(x_0) - \frac{1}{k} \sum_{\ell=1}^{k} f(x_{(\ell)})\right]^2 + \frac{\sigma_\varepsilon^2}{k}$$看第三項:在這個固定設計之下,變異就是 $\sigma_\varepsilon^2 / k$,$k$ 愈大愈小。 第二項是「$f(x_0)$ 與 $k$ 個鄰居上 $f$ 的平均」之差:$k$ 愈大鄰居愈遠, 這個差通常愈大(但不保證單調——$f$ 是直線而鄰居左右對稱時, 多收一個對面的鄰居反而可能把偏差抵消掉)。 一條式子把偏差–變異取捨寫得清清楚楚,也預告了本頁最後一節的 KNN。
總測試誤差同時平均重複抽到的訓練集與測試點的新反應值。其中偏差與變異描述訓練集重抽造成的模型變動,Var(ε) 則來自新反應值的雜訊。
拆解式裡的 $\hat f(x_0)$ 是一個隨機變數:它的隨機性來自「你剛好抽到哪一組訓練資料」。$E[\hat f(x_0)]$ 是「想像重複蒐集無數份訓練資料、每份都擬合一次模型、把這些 $\hat f(x_0)$ 平均起來」。偏差是這個平均與真值 $f(x_0)$ 的差;變異是這些 $\hat f(x_0)$ 自己的散開程度。
所以下面兩句話是不同的意思,不要搞混:
實務上的後果:你手上只有一份訓練資料,所以偏差與變異沒辦法分別算出來。上面那張圖能畫,是因為那是模擬,我們知道真實的 f,也能想抽幾組訓練集就抽幾組。真實資料上你只能估它們的總和(第 5 章的交叉驗證),然後靠這一節的直覺判斷該往哪邊調。
維持相同的母體分佈與預測變數,只增加訓練樣本數。拆解式中哪一項確定不會因此改變?
前面全都在講迴歸。搬到分類問題,觀念一個都不用丟,只要換掉量尺: 把 MSE 換成錯誤率(error rate)。
條件機率還不熟時,可先複習 S2 的條件機率與 Bayes 公式。
$$\text{訓練錯誤率} = \frac{1}{n} \sum_{i=1}^{n} I(y_i \neq \hat y_i), \qquad \text{測試錯誤率} = \mathrm{Ave}\left(I(y_0 \neq \hat y_0)\right)$$$I(\cdot)$ 是指示變數:分錯是 1、分對是 0,所以這個式子就是「分錯的比例」。 跟迴歸一樣,我們在意的是測試錯誤率,而訓練錯誤率會系統性偏低。
先把「最佳」的框架講清楚,因為它跟迴歸是同一套。 PART 02 說「最好的預測是條件期望」時,前提是用平方誤差算帳; 換成絕對誤差,最佳解就變成條件中位數。也就是說,「什麼叫最好」永遠是 先挑一個損失函數 $L$,再在每一點上最小化條件期望損失:
$$a^{*}(x) = \arg\min_{a} E\left[L(Y, a) \mid X = x\right]$$分類問題只是把損失換成 0–1 損失(分錯罰 1、分對罰 0), 因為這裡的量尺是錯誤率。同一個框架再跑一次,答案就從「條件期望」 變成「條件眾數」——把 $x_0$ 指派給條件機率最大的那個類別:
$$\text{把 } x_0 \text{ 指派給使 } \Pr(Y = j \mid X = x_0) \text{ 最大的 } j$$這叫做 Bayes 分類器。兩類問題裡,它就是 「$\Pr(Y = 1 \mid X = x_0) > 0.5$ 就猜 1,否則猜 2」。 機率恰好等於 0.5 的那條線是 Bayes 決策邊界。 它達到的母體風險是所有分類器期望錯誤率的下限:
$$\text{Bayes 錯誤率} = 1 - E\left[\max_j \Pr(Y = j \mid X)\right]$$| 用什麼量尺(損失函數) | 在每一點 $x$ 上的最佳預測 | 本站哪裡講 |
|---|---|---|
| 平方誤差 $\left(Y - a\right)^2$ | 條件期望 $E[Y \mid X = x]$ | PART 02(迴歸) |
| 絕對誤差 $\left|Y - a\right|$ | 條件中位數 | PART 02 證明的最後一段 |
| 0–1 損失 $I(Y \neq a)$ | 條件眾數 $\arg\max_k \Pr(Y = k \mid X = x)$ | 本節(分類) |
講義只寫了一句「Bayes 分類器的(母體)錯誤率最小」, 這裡把它證出來,順便看它跟迴歸那條有多像:
要證的事。令 $p_k(x) = \Pr(Y = k \mid X = x)$,$k = 1, \dots, K$。 對任意分類器 $C$(任何一個把 $x$ 對應到某個類別標籤的函數)都有
$$E\left[I\!\left(Y \neq C(X)\right)\right] \;\ge\; E\left[I\!\left(Y \neq C^{*}(X)\right)\right] = 1 - E\left[\max_k p_k(X)\right]$$第 0 步:把整體錯誤率拆成逐點的問題。用全期望公式:
$$E\left[I\!\left(Y \neq C(X)\right)\right] = E_X\Big[\,E\left[I\!\left(Y \neq C(X)\right) \mid X\right]\Big]$$跟 PART 02 完全一樣的招式:$X = x$ 固定之後,$C(x)$ 只是 $K$ 個標籤裡的一個, 不再是函數。所以「在所有分類器裡找最好的」可以拆成「在每一點各自從 $K$ 個標籤裡挑一個」。
第 1 步:算出固定 $x$ 的條件風險。 指示變數的期望就是機率,所以對任何一個候選標籤 $c$:
$$E\left[I(Y \neq c) \mid X = x\right] = \Pr\left(Y \neq c \mid X = x\right) = 1 - \Pr\left(Y = c \mid X = x\right) = 1 - p_c(x)$$第 2 步:在這一點上挑最好的標籤。 要讓 $1 - p_c(x)$ 最小,就是要讓 $p_c(x)$ 最大:
$$\min_{c \in \{1, \dots, K\}} \left[1 - p_c(x)\right] = 1 - \max_k p_k(x), \qquad \text{在 } c = \arg\max_k p_k(x) \text{ 取到}$$第 3 步:逐點最小推到全域最小。 上式對每一個 $x$ 分別成立,所以對任意 $C$ 都有 $E[I(Y \neq C(x)) \mid X = x] \ge 1 - \max_k p_k(x)$。兩邊對 $X$ 取期望:
$$E\left[I\!\left(Y \neq C(X)\right)\right] \;\ge\; E_X\left[1 - \max_k p_k(X)\right] = 1 - E\left[\max_k \Pr(Y = k \mid X)\right]$$而 $C^{*}$ 在每一點都取到等號,所以這個下限確實達得到。$\blacksquare$
兩類的特例。$K = 2$ 時 $\max\left(p_1(x),\, 1 - p_1(x)\right)$, 所以在 $x$ 的條件錯誤率是 $\min\left(p_1(x),\, 1 - p_1(x)\right)$, 而 Bayes 規則就是「$p_1(x) > 0.5$ 猜 1」。條件錯誤率的最大值 0.5 只在 $p_1(x) = 0.5$ 那條線上取到——那正是 Bayes 決策邊界,也是最分不開的位置。
跟迴歸完全平行。把兩邊的結論並排看,會發現是同一件事的兩個外衣:
$$\min_{a} E\left[(Y - a)^2 \mid X = x\right] = \mathrm{Var}\left(Y \mid X = x\right), \qquad a^{*} = E[Y \mid X = x]$$ $$\min_{c} E\left[I(Y \neq c) \mid X = x\right] = 1 - \max_k p_k(x), \qquad c^{*} = \arg\max_k p_k(x)$$兩邊都是「逐點最小 ⇒ 全域最小」,也都留下一個跟方法無關的下限: 迴歸留下 $\mathrm{Var}(\varepsilon)$,分類留下 Bayes 錯誤率。 後者大於 0 的理由也一模一樣——只要有一塊 $x$ 沒有任何類別的條件機率是 1, 也就是知道 $X$ 之後 $Y$ 仍有隨機性。
錯誤代價不一樣的時候。0–1 損失把所有錯誤看成一樣重。 如果把病人判成健康、跟把健康判成病人代價不同,就要換成一般的損失矩陣 $L(k, c)$, 第 1 步的條件風險變成 $\sum_k L(k, c)\, p_k(x)$,最佳規則跟著變成
$$c^{*}(x) = \arg\min_{c} \sum_{k=1}^{K} L(k, c)\, p_k(x)$$框架沒有變,只是量尺換了——這也是第 4 章調整門檻與看 ROC 的出發點。
只要有一塊 $x$(機率為正)上沒有任何類別的條件機率是 1,它就大於 0—— 也就是兩類在母體裡本來就重疊。 Bayes 錯誤率就是分類問題版本的不可縮減誤差。 下面這個元件把「重疊」直接畫出來:
Bayes 分類器要求你知道 $\Pr(Y \mid X)$——真實資料上不可能。 K 最近鄰(K-nearest neighbors, KNN)用鄰近樣本的類別比例估計它: 找出離 $x_0$ 最近的 $K$ 個訓練點(記作 $\mathcal{N}_0$),數一數裡面各類佔幾成。
$$\widehat{\Pr}(Y = j \mid X = x_0) = \frac{1}{K} \sum_{i \in \mathcal{N}_0} I(y_i = j)$$然後指派給比例最高的那一類。KNN 不預設固定維度的函數形式,但仍依賴距離、變數尺度, 以及「鄰近的 X 有相近條件分佈」這項局部假設。在這個基本元件裡,$K$ 是控制平滑程度的旋鈕: $1/K$ 可視為 KNN 的彈性度。
看到這裡應該會有一個疑問:PART 03 不是說最近鄰在高維會壞掉嗎? 講義把話補完了——會壞,但分類壞得比較慢:
直覺先講。分類最後只用到誰最大, 不是大多少。$\arg\max$ 把一整組機率壓成一個標籤, 是比機率本身粗糙得多的資訊。 只要估計誤差沒有大到把排名弄反,決策就跟用真實機率時一模一樣。
兩類情形可以寫成等式。令 $\eta(x) = \Pr(Y = 1 \mid X = x)$, $C^{*}$ 是 Bayes 規則、$\hat C$ 是你手上那個插入式(plug-in)分類器 $\hat C(x) = I\!\left(\hat\eta(x) > 0.5\right)$。把 BAYES 那條證明的第 1 步逐點展開再相減:
$$R(\hat C) - R(C^{*}) = E\Big[\left|2\eta(X) - 1\right| \cdot I\!\left(\hat C(X) \neq C^{*}(X)\right)\Big]$$這條式子有兩個很強的讀法:
1. 右邊有一個指示函數——只有在你猜錯邊的那些 $x$ 上才付代價。
$\hat\eta$ 估成 0.9 而真值是 0.6?只要兩個都在 0.5 的同一側,超額風險是 0。
2. 付的代價還被 $\left|2\eta(x) - 1\right|$ 加權。
愈靠近決策邊界($\eta \approx 0.5$)猜錯,罰得愈輕;
而那裡剛好就是最容易猜錯的地方。兩個效應互相抵消。
由此得到一條乾淨的界。在 $\hat C \neq C^{*}$ 的地方, $\hat\eta$ 與 $\eta$ 一定落在 0.5 的兩側,所以 $\left|\eta - 0.5\right| \le \left|\hat\eta - \eta\right|$,代進去:
$$R(\hat C) - R(C^{*}) \;\le\; 2\,E\left|\hat\eta(X) - \eta(X)\right|$$這條界是單向的,而單向正是重點。 機率估得準 $\Rightarrow$ 分類一定準; 但反過來完全不成立——機率可以估得一塌糊塗,分類卻幾乎沒有損失。 這就是講義那句「對 $\hat C(x)$ 的衝擊小於對 $\hat p_k(x)$」的數學內容。
但不要過度樂觀。講義用的字是「一樣會隨著維度增加而失效」——
分類還是會壞掉,只是慢一點:
「排名弄反」的那一層薄殼繞在決策邊界附近。維度一高、鄰域不再局部,
$\hat\eta$ 的誤差變大,這層殼就跟著變厚。
如果你真正要的是機率本身——風險分數、期望損失、
調整門檻、畫 ROC——那就沒有這層保護,$\hat p_k$ 的誤差會原封不動傳下去。
什麼時候需要機率、什麼時候只需要標籤,是第 4 章的主題。
KNN 元件已經同時列出 K = 1、10、100 的訓練與獨立測試錯誤,足以看見 「訓練誤差偏好高彈性、測試誤差不一定」的差異。
K = 1 時,要預測訓練點 $x_i$ 的類別,KNN 會去找「離 $x_i$ 最近的 1 個訓練點」——而那個點就是 $x_i$ 自己,距離 0。本頁資料沒有重複的 X,實作也把自己算進鄰居,所以它回報自己的標籤,訓練錯誤率為 0。若相同 X 出現相反標籤,或評分時排除自己,就沒有這項保證。
這個 0 本身不能證明過度擬合;還要和較不彈性模型的新資料表現比較。它也不能提供泛化表現的證據,因為使用的是擬合時那批資料。跟迴歸那邊「通過每一個點的曲線訓練 MSE = 0」是同一種評估問題。本頁的模擬裡,K = 1 的測試錯誤率是 0.1964,是所有 K 之中最差的幾個之一,而 Bayes 下限只有 0.1382。
那 K = 1 有什麼用?它是彈性的極端:偏差極低(決策邊界可以任意扭曲)、變異極高(換一份訓練資料邊界就整個變樣)。資料量非常大、雜訊非常小的時候,K = 1 是可以贏的。ISLP 第 4 章與第 9 章會再回到這個取捨。
在一份二維兩類資料上,你發現 K = 1 的測試錯誤率比 K = 25 高很多。最合理的解讀是什麼?
對固定的訓練輸入,KNN 迴歸把鄰居的 y 平均,可寫成 $\hat y=Sy$。鄰域只由 X 決定、每點使用 K 個等權鄰居且包含自己時,線性平滑器的有效自由度為 $\operatorname{tr}(S)=n/K$。K 越小,模型保留越多訓練反應的個別變動。這個等式使用線性迴歸平滑器的定義;分類的多數決含非線性門檻,不能直接照搬。
距離同分須固定處理方式;若不含自身,不能再使用上述對角線計算。
令 $S_{ij}=I\{j\in N_K(i)\}/K$,便有 $\hat y_i=\sum_jS_{ij}y_j$。自點包含於鄰域使 $S_{ii}=1/K$,故 $\operatorname{tr}(S)=\sum_iS_{ii}=n/K$。
若給定 X 後 $\operatorname{Cov}(y)=\sigma^2I$,則 $\operatorname{Cov}(\hat y_i,y_i)=\sigma^2S_{ii}$。用 $\sum_i\operatorname{Cov}(\hat y_i,y_i)/\sigma^2$ 定義自由度也得到相同結果。
下面幾題取自 ISLP §2.4 的課後習題,題號都對得回課本。先自己想過再點選項; 每個選項都有解說;需要完整解答時,可查閱下面3個站。
第 1 題問「彈性方法會比不彈性方法好還是差」。考慮 (b) p 極大而 n 很小,以及 (d) 誤差項的變異 σ² = Var(ε) 極大。這兩種情況呢?
第 2 題 (a):蒐集美國前 500 大公司的資料,每家記錄「利潤、員工數、產業、CEO 薪水」,想了解哪些因素影響 CEO 薪水。這是什麼問題、n 與 p 是多少?
第 3 題要你在同一張圖上畫五條曲線(偏差²、變異、訓練誤差、測試誤差、Bayes/不可縮減誤差),橫軸是彈性。哪一組形狀是對的?
第 7 題給了六筆資料(X₁, X₂, X₃, Y):(0,3,0,紅)、(2,0,0,紅)、(0,1,3,紅)、(0,1,2,綠)、(−1,0,1,綠)、(1,1,1,紅)。要在測試點 X₁ = X₂ = X₃ = 0 上用 KNN 預測。K = 1 與 K = 3 分別預測什麼?
考前把這一頁掃過去就好。
| 迴歸(regression) | 分類(classification) | |
|---|---|---|
| Y 是什麼 | 數值 | 類別 |
| 量尺 | MSE $= \frac1n\sum (y_i - \hat f(x_i))^2$ | 錯誤率 $= \frac1n\sum I(y_i \ne \hat y_i)$ |
| 最好的預測函數 | 迴歸函數 $f(x) = E[Y \mid X = x]$ | Bayes 分類器(取條件機率最大者) |
| 期望風險的理論下限 | $\mathrm{Var}(\varepsilon)$(不可縮減誤差) | Bayes 錯誤率 |
| 訓練版的問題 | 用擬合資料自評會偏樂觀 | 用擬合資料自評會偏樂觀(本例 K = 1 時是 0) |
| 彈性度的例子 | 樣條自由度 df、多項式次數 | KNN 的 $1/K$ |
| 參數式 | 非參數式 | |
|---|---|---|
| 固定函數形式 | 先指定 | 不預先固定 |
| 仍需的結構 | 線性等形式 | 平滑、局部相似性、距離或尺度 |
| 要估的東西 | 有限個參數 | 整個函數 |
| 主要風險 | 形狀假設錯 → 高偏差 | 資料不夠 → 高變異 |
| 額外要選 | 形狀 | 平滑程度 |
| 高維表現 | 相對穩健 | 容易受維度詛咒影響 |
| ISLP 例子 | 圖 2.4 線性平面(第 3 章) | 圖 2.5/2.6 薄板樣條(第 7 章) |
| 名稱 | 式子 | 備註 |
|---|---|---|
| 基本框架 | $Y = f(X) + \varepsilon$ | 式 2.1,$E[\varepsilon\mid X] = 0$ |
| 迴歸函數 | $f(x) = E[Y \mid X = x]$ | 平方誤差下最好的預測函數 |
| 兩種誤差 | $E(Y-\hat Y)^2 = [f(X)-\hat f(X)]^2 + \mathrm{Var}(\varepsilon)$ | 式 2.3,$\hat f$ 與 $X$ 固定 |
| 線性模型 | $f(X) = \beta_0 + \beta_1 X_1 + \cdots + \beta_p X_p$ | 式 2.4,參數式的代表 |
| MSE | $\frac1n\sum_{i=1}^{n}(y_i - \hat f(x_i))^2$ | 式 2.5 |
| 偏差–變異拆解 | $E(y_0-\hat f(x_0))^2 = \mathrm{Var}(\hat f(x_0)) + [\mathrm{Bias}(\hat f(x_0))]^2 + \mathrm{Var}(\varepsilon)$ | 式 2.7;ESL 式 7.9 同 |
| KNN 迴歸的拆解 | $\sigma_\varepsilon^2 + [f(x_0) - \frac1k\sum_\ell f(x_{(\ell)})]^2 + \frac{\sigma_\varepsilon^2}{k}$ | ESL 式 7.10,變異就是 $\sigma^2/k$ |
| 錯誤率 | $\frac1n\sum_{i=1}^{n} I(y_i \ne \hat y_i)$ | 式 2.8/2.9 |
| Bayes 分類器 | 取使 $\Pr(Y=j \mid X=x_0)$ 最大的 $j$ | 式 2.10 |
| Bayes 錯誤率 | $1 - E[\max_j \Pr(Y=j \mid X)]$ | 式 2.11,分類版的不可縮減誤差 |
| KNN 機率估計 | $\frac1K\sum_{i \in \mathcal{N}_0} I(y_i = j)$ | 式 2.12;本頁以 $1/K$ 表示相對彈性 |
詞彙卡整理本章講義與 ISLP 第 2 章中常用的統計或機器學習專有名詞,正面附英文名稱。 先看正面的術語,試著說出定義,再翻面核對。可以洗牌複習,也可以搭配本章例子練習解釋。