分類:從機率到決策邊界

ISLP 第 4 章 — 對應講義 04
$\operatorname{logit}(p)=\beta_0+\beta^\mathsf{T}x$|勝算比|Bayes 定理|LDA|QDA|Naive Bayes|混淆矩陣|ROC 與 AUC
向下捲動開始互動↓
📌 本頁使用方式(ISLP Ch.4|講義 04)

① 依序閱讀:每節先讀說明;遇到互動元件時,先預測結果,再操作驗證。 ② 對照來源:章節旁標示課本章節與講義主題,正文保留公式、條件與算例;計算細節、完整實作與證明預設收合,可按需要展開。來源標記可查原教材。 ③ 檢查理解:答錯時先看回饋,再回到相關說明;標為延伸的內容可留待第二輪。 ④ 最後翻關鍵詞彙卡自測術語,並用 重點速查與來源查閱。

教科書:An Introduction to Statistical Learning with Applications in Python(ISLP);
進階參考:The Elements of Statistical Learning(ESL)。章節旁的來源標記可點到本頁書目。

CONTENTS · 內容目錄
PROLOGUE · 開場

把類別編成 1、2、3 會出什麼事 教科書 · 第 4.2 節講義 04

第 3 章的 y 是連續的數字。現在換一種問題:y 是類別。這個人會不會違約、 今天股市漲還是跌、這封信是不是垃圾信。這叫做分類(classification)。 本章用 ISLP 的 Default 資料(n = 10000,違約率 3.33%)與課程 lab 的 Smarket 資料當主線。

講義補充連結:ISLP 的 Default 資料說明。

直覺會說:把類別編成數字,然後照第 3 章擬合線性迴歸就好。這樣做會遇到兩個問題, 這兩個問題都會影響結果的解讀。

線性迴歸用在類別上的兩個問題 1. 多於兩類時,編碼本身就帶進了假設。 把「中風 = 1、藥物過量 = 2、癲癇 = 3」丟進迴歸,等於宣告這三種病有順序, 而且「中風到藥物過量」的距離等於「藥物過量到癲癇」的距離。換一個編碼順序,模型就變了。
2. 只有兩類時編碼沒問題,但輸出會跑出 [0, 1]。直線沒有上下界, 模型沒有把輸出限制在機率的範圍內,可能給出負值或大於 1 的值。

第二點值得寫成式子。把 y 編成 0/1,然後擬合 $p(X) = \beta_0 + \beta_1 X$:

$$\hat p(\texttt{balance}) = -0.0752 + 0.00013 \times \texttt{balance}$$

這是 Default 資料上真的擬合出來的直線。把 balance 代 300 進去 得到 −0.036——負的機率。ISLP 圖 4.2 左圖畫的就是這件事。 右圖換成邏輯斯迴歸,整條曲線就維持在 0 與 1 之間。

›拖滑桿選一個 balance,右邊會同時給出兩個模型的預測機率。
1000
課程/lab 資料
怎麼看這張圖 圖 4.2
橫軸是 balance,上下兩排短刻度是真實資料:上排(y = 1)是違約的人,下排(y = 0)是沒違約的人。紅線是線性迴歸的擬合,綠線是邏輯斯迴歸。紅色陰影是線性版給出負機率的區段。
在這個 balance 上
balance1000
線性迴歸 $\hat{p}$—
邏輯斯 $\hat{p}$—
線性版合法嗎—
兩個係數的來歷
邏輯斯的 $\hat{\beta}_{0}$ = −10.6513、$\hat{\beta}_{1}$ = 0.0055 就是 ISLP 表 4.1 的數字;線性版的 −0.0752 與 0.00013 是同一份資料上的最小平方解。線性版在 balance < 579 給負值;要到 balance ≈ 8279 才會超過 1,那已經在資料範圍外了,這個模型並未保證機率的有效範圍。

三類的編碼實驗:換個順序,模型就換了

下面同一批急診病人,只是換了編碼順序。線性迴歸看到的是「數字」, 所以它會擬合這些完全人造的順序與間距:

編碼方式中風藥物過量癲癇這個編碼隱含的假設
編碼 A123三種病有順序,而且「中風→藥物過量」與「藥物過量→癲癇」的差距一樣大
編碼 B132順序變成中風 < 癲癇 < 藥物過量——同一份資料,擬合出完全不同的模型
編碼 C213又是另一個模型。哪一個才對?都不對。

這些類別沒有順序也沒有距離,數字編碼卻加入了順序與等距的假設。 可以用二元或多類別邏輯斯迴歸,也可以用本章後半介紹的生成式分類模型。

QUIZ · 為什麼不用迴歸

把二元反應編成 0/1 之後擬合線性迴歸,跟邏輯斯迴歸比,最根本的問題是什麼?

(A) 線性模型沒有將擬合機率限制在 [0, 1],可能給出範圍外的值
(B) 係數沒辦法用最小平方法估計,必須改用最大概似法
(C) 二元反應違反常態誤差假設,所以 p 值與信賴區間都不能用
PART 01 · 邏輯斯迴歸

從 Bernoulli 模型到 logistic 機率 教科書 · 第 4.3 節講義 04

從前一章的條件平均出發

線性迴歸用預測變數描述 $E(Y\mid X=x)$。把二元反應編成 0/1 後,我們仍然關心這個條件平均;只是現在它恰好就是事件發生的機率:

$$\begin{aligned} E(Y\mid X=x)&=p(x),\\ P(Y=1\mid X=x)&=p(x).\end{aligned}$$

因為只有 0 與 1 兩種結果,條件平均就是 $0\{1-p(x)\}+1\cdot p(x)=p(x)$。

只要反應是單次的 0/1 結果,它的條件分布就一定是 Bernoulli(伯努利分布):機率 $p(x)$ 給 1,其餘機率給 0。這不是額外猜一個分布形狀;真正要建模的是 $p(x)$ 如何隨 $x$ 改變。

$$Y\mid X=x\sim\operatorname{Bernoulli}(p(x)).$$

把線性分數壓回 0 與 1 之間

沿用前章的線性式 $\eta(x)=\beta_0+\beta_1x$,再讓它通過logistic 函數:

$$\begin{aligned}p(x)&=\frac{e^{\eta(x)}}{1+e^{\eta(x)}}\\ &=\frac{1}{1+e^{-\eta(x)}}.\end{aligned}$$

$\eta(x)$ 可以是任何實數,轉換後的 $p(x)$ 都落在 $(0,1)$,因此能當作機率。線性式負得愈多,機率愈接近 0;正得愈多,愈接近 1;分數為 0 時,機率是 0.5。

誤差在哪裡?為什麼沒有共同的變異數?

前章的 Gaussian 模型可寫成 $Y=\eta(X)+\varepsilon$,其中誤差有共同的變異數 $\sigma^2$。Logistic regression 直接指定 $Y\mid X$ 的 Bernoulli 分布,隨機性已經包含在這個分布裡,不必再加上一個獨立的常態誤差。

$$\operatorname{Var}(Y\mid X=x)=p(x)\{1-p(x)\}.$$

若想沿用「觀測值減掉條件平均」的想法,仍可定義 $\varepsilon=Y-p(X)$,寫成 $Y=p(X)+\varepsilon$。但給定 $X=x$ 後,誤差只有 $1-p(x)$ 與 $-p(x)$ 兩個可能值;它的分布和變異數會隨 $x$ 改變。這不具有前章獨立、同變異加法雜訊的結構,也沒有另一個可自由估計的 $\sigma^2$。

估計時還會假設:給定各筆預測變數後,觀測結果彼此獨立。獨立不等於同變異,因為各筆的 $p(x)$ 可以不同。

延伸閱讀:為什麼線性迴歸要寫雜訊項,邏輯斯迴歸卻不用?

線性迴歸寫成 $Y=\eta(X)+\varepsilon$:條件平均 $\eta(X)$ 之外,還需要一個參數 $\sigma^2$ 描述觀測值在平均附近散得多開,所以要另外寫出雜訊項並估計它的變異數。

邏輯斯迴歸直接指定 $Y\mid X\sim\operatorname{Bernoulli}(p(X))$。Bernoulli 只有一個參數 $p$:平均是 $p$,變異數 $p(1-p)$ 也由 $p$ 決定,觀測值的隨機性已經完整包含在這個分布裡。沒有另一個可以自由調整的散布參數,所以不必、也不能再加一個獨立的常態雜訊。若想用「雜訊」的語言理解,可看本節後面「反應誤差、潛在變數與分離」收合中的潛在變數表示 $Y=I\{x^\mathsf{T}\beta+\epsilon>0\}$,其中的 $\epsilon$ 服從標準 logistic 分布,它的尺度被固定下來才能識別係數。

講義補充連結:為什麼線性迴歸要寫雜訊項,邏輯斯迴歸卻不用。

整理式子後,可以定義勝算與 log-odds。先移項:

$$\underbrace{\frac{p(X)}{1 - p(X)}}_{\text{勝算 odds}} = e^{\beta_0 + \beta_1 X} \qquad\Longleftrightarrow\qquad \underbrace{\log\!\left(\frac{p(X)}{1-p(X)}\right)}_{\text{log-odds / logit}} = \beta_0 + \beta_1 X$$

勝算(odds)是「發生機率 ÷ 不發生機率」,範圍 (0, ∞); 取 log 之後範圍變成整個實數線,這個量叫 log-odds 或 logit。 所以邏輯斯迴歸的 log-odds 是線性函數;機率則隨 x 呈 S 形變化,係數須依 log-odds 解讀。

logit 與 logistic 互為反函數。logit 把機率 $p\in(0,1)$ 送到整條實數線,logistic 再把任意實數送回 $(0,1)$:

$$\operatorname{logit}(p)=\log\frac{p}{1-p},\qquad \operatorname{logistic}(z)=\frac{1}{1+e^{-z}},\qquad \operatorname{logistic}\bigl(\operatorname{logit}(p)\bigr)=p.$$

所以模型可以從兩個方向讀:左邊寫成 $\operatorname{logit}(p(x))=\beta_0+\beta^\mathsf{T}x$,強調線性的是 log-odds;右邊寫成 $p(x)=\operatorname{logistic}(\beta_0+\beta^\mathsf{T}x)$,強調輸出是機率。機器學習常說的 sigmoid 函數,通常就是這個 logistic 函數。

推導:從 logit 解回機率

令 $z=\log\{p/(1-p)\}$,目標是把 $p$ 寫成 $z$ 的函數。

第一步:兩邊取指數。

$$e^z=\frac{p}{1-p}.$$

第二步:移項,把含 $p$ 的項放在同一邊。

$$e^z(1-p)=p\quad\Longrightarrow\quad e^z=p\,(1+e^z).$$

第三步:解出 $p$,再上下同除 $e^z$。

$$p=\frac{e^z}{1+e^z}=\frac{1}{1+e^{-z}}=\operatorname{logistic}(z).$$

反過來把 $p=\operatorname{logistic}(z)$ 代入 logit,會得到 $\log\{e^z\}=z$。兩個方向都回到原值,因此兩者互為反函數。logistic 嚴格遞增,這也是「機率大於 $t$」等價於「線性分數大於 $\operatorname{logit}(t)$」的原因。

為什麼仍叫線性分類器?

分類是根據 $x$ 的線性函數來決定的。機率曲線雖然是 S 形,但 logistic 函數單調遞增。若用固定門檻 $0\lt t\lt1$:

$$p(x)>t\iff\beta_0+\beta_1x_1+\cdots+\beta_px_p> \log\frac{t}{1-t}.$$

門檻為 0.5 時,就是看線性分數是否大於 0;兩個預測變數的邊界是直線,多個變數則是超平面。這裡指模型使用的特徵空間:若加入平方項或交互作用,邊界在原始座標中就可能彎曲。

延伸閱讀:機率曲線是 S 形,為什麼邊界是直線?

分類規則是「$p(x)>t$ 就判為 1」。logistic 函數嚴格遞增,所以

$$p(x)>t\iff \operatorname{logistic}(\eta(x))>t\iff \eta(x)>\operatorname{logit}(t).$$

$\eta(x)=\beta_0+\beta^\mathsf{T}x$ 是 $x$ 的線性函數,所以判為 1 的區域 $\{x:\beta_0+\beta^\mathsf{T}x>\operatorname{logit}(t)\}$ 是半空間,邊界是超平面。S 形只決定「離邊界多遠時機率變化多快」,不改變邊界的形狀。若特徵裡放了 $x^2$ 或交互作用,邊界在擴充後的特徵空間仍是超平面,回到原始座標才會彎曲。

講義補充連結:為什麼邏輯斯迴歸是線性分類器。

係數如何估計?

最大概似法(MLE)選擇讓已觀察到的 0/1 結果最可能出現的係數。對每筆資料,若結果為 1 就拿 $p_i$,若為 0 就拿 $1-p_i$,再把它們乘起來:

$$L(\beta)=\prod_{i=1}^n p_i^{y_i}(1-p_i)^{1-y_i}.$$

一般沒有像 OLS 那樣的係數封閉解,要用數值方法反覆更新。這是同一個估計原則的不同模型:在獨立、同變異的 Gaussian 線性模型下,最大化概似得到的係數才會等同最小平方解。

資料完全分開時,係數為什麼可能估不出來?

先想像用一條直線把平面分成兩側,一側判為 0,另一側判為 1:

關鍵是能不能找到一條完全分開兩類的線。若有更多特徵,把直線換成超平面,道理相同。

完全分離時,把 logistic 曲線變得更陡,可以讓所有訓練點的正確類別機率更接近 1。準完全分離時,線以外的點仍可繼續改善,線上的兩類卻無法全部分開。因此,只用最大概似法、沒有另外限制係數大小時,係數可能一直變大,卻找不到有限的最佳值。相關推導見「反應誤差、潛在變數與分離」收合區。

摘要表為什麼用 z,而不是 t?

依據是 MLE 的大樣本常態近似。模型與一般正則條件成立、樣本夠大且有有限估計時,檢定 $H_0:\beta_j=\beta_{j,0}$ 使用

$$z=\frac{\hat\beta_j-\beta_{j,0}}{SE(\hat\beta_j)}\approx N(0,1).$$

常見的係數表檢定 $\beta_j=0$,所以分子只剩 $\hat\beta_j$。這裡的標準誤一樣是估出來的;估計標準誤本身並不代表要用 $t$。Bernoulli 沒有額外的 $\sigma^2$,也沒有 Gaussian 線性迴歸那個精確的 $t$ 結構。小樣本或分離情況下,這個 $z$ 近似可能不可靠。

延伸閱讀:邏輯斯迴歸的 Wald 檢定

檢定 $H_0:\beta_j=0$ 時,Wald 統計量是 $z=\hat\beta_j/\widehat{SE}(\hat\beta_j)$,大樣本下近似 $N(0,1)$;等價地 $z^2$ 近似自由度 1 的卡方分布。對應的近似 95% 信賴區間是 $\hat\beta_j\pm1.96\,\widehat{SE}(\hat\beta_j)$,換成勝算比就是兩端各取指數。

Wald 檢定只需要擬合一次完整模型,所以軟體的係數表都用它。它的弱點出現在係數很大、資料接近分離時:標準誤增加得比係數快,$z$ 反而變小,檢定力下降。這時可改用概似比檢定,比較含與不含 $X_j$ 兩個模型的偏差差異。

講義補充連結:邏輯斯迴歸的 Wald 檢定。

›推兩個滑桿看 S 曲線怎麼動;下面那條 log-odds 永遠是直線。
-1
0.8
講義/課本重繪
目前的模型
$\beta_{0}$−1.00
$\beta_{1}$0.80
p(0)—
p(1)—
p = 0.5 的 x—
勝算比 $e^{\beta_{1}}$—
兩張圖要一起看
上圖是機率 p(x),S 形、有上下界、斜率一直在變;下圖是同一個模型的 log-odds,一條直線,斜率永遠是 $\beta_{1}$。虛線是勝算(odds),它為正,依 $\beta_{1}$ 的符號指數增加或減少。勝算和機率的量尺不同,讀圖時要分清楚。
$\beta_{1}$ 的符號與大小
$\beta_{1}$ > 0 曲線往右上、$\beta_{1}$ < 0 往右下;|$\beta_{1}$| 愈大轉折愈陡,$\beta_{1}$ = 0 時,這個模型的預測機率不隨 x 改變。$\beta_{1}$ 不為 0 時,固定 $\beta_{1}$、改變 $\beta_{0}$ 會水平移動曲線;p = 0.5 的位置在 x = −$\beta_{0}$/$\beta_{1}$。

固定其他變數時,$x_j$ 增加一單位,log-odds 增加 $\beta_j$,勝算乘上 $e^{\beta_j}$。機率的增量則取決於原本的機率,不能直接把係數讀成機率差。

勝算和賠率有什麼關係?

課本習題用「違約勝算為 0.37」作例子。這表示違約機率與不違約機率的比值為 0.37,所以

$$\frac{p}{1-p}=0.37\quad\Longrightarrow\quad p=\frac{0.37}{1+0.37}\approx0.270.$$

賠率常從相反方向描述:若每下注一單位,猜中時的淨利是 $b$ 單位、猜錯就損失一單位,公平賠率要求平均淨收益為零:

$$pb-(1-p)=0\quad\Longrightarrow\quad b=\frac{1-p}{p}.$$

這個淨利賠率是事件勝算的倒數;若報的是含本金的總回收倍數,則是 $b+1=1/p$。實際報價還可能含莊家利潤,不能直接當成真實機率。先確認賠率的定義,再和模型中的 odds 對照。

回到 Default:表 4.1 的 balance 係數是 0.0055,每增加一元,違約勝算乘上 $e^{0.0055}\approx1.0055$,約增加 0.55%。這不是機率增加 0.55 個百分點。對單變數模型,$dp/dx=\beta_1p(1-p)$,同樣的係數在機率接近 0.5 時,造成的局部機率變化最大。

和前章比較:為什麼 Gaussian regression 有精確的 t?

在固定設計、滿秩且獨立同變異的 Gaussian 誤差模型下,若 $\sigma$ 已知,用真正標準差標準化的係數服從標準常態。當 $\sigma$ 未知,以殘差估計 $s^2=RSS/\nu$,其中 $\nu=n-p-1$,會有特殊的精確結果:

$$\frac{\nu s^2}{\sigma^2}\sim\chi^2_\nu,\qquad s^2\ \text{與}\ \hat\beta\ \text{獨立},\qquad \frac{N(0,1)}{\sqrt{\chi^2_\nu/\nu}}\sim t_\nu.$$

最後的比值中,分子與分母必須獨立。這就是 Gaussian regression 使用 $t$ 的理由。Logistic regression 的標準誤也需要估計,但在一般大樣本條件下,估計標準誤與真正標準差的比值趨近 1,代入後仍保留常態近似:

$$\frac{SE(\hat\beta_j)}{SD(\hat\beta_j)}\xrightarrow{P}1, \qquad \frac{\hat\beta_j-\beta_j}{SE(\hat\beta_j)}\overset{\mathrm{approx}}{\sim}N(0,1).$$

這是 Slutsky theorem 的應用。上課先記住:logistic 的 $z$ 來自大樣本 MLE 理論;Gaussian 的精確 $t$ 則還需要上述卡方與獨立結構。

延伸:講義引用的 Stanford:Logistic regression 的係數與標準誤。

完整實作:sm.GLM + Binomial(六個預測變數)

講義完整實作:在 Smarket 上擬合邏輯斯迴歸

講義 04 · sm.GLM + Binomial(六個預測變數)
allvars = Smarket.columns.drop(['Today', 'Direction', 'Year']) design = MS(allvars) X = design.fit_transform(Smarket) y = Smarket.Direction == 'Up' glm = sm.GLM(y, X, family=sm.families.Binomial()) results = glm.fit() summarize(results)
預期輸出
             coef  std err      z  P>|z|
intercept -0.1260    0.241 -0.523  0.601
Lag1      -0.0731    0.050 -1.457  0.145
Lag2      -0.0423    0.050 -0.845  0.398
Lag3       0.0111    0.050  0.222  0.824
Lag4       0.0094    0.050  0.187  0.851
Lag5       0.0103    0.050  0.208  0.835
Volume     0.1354    0.158  0.855  0.392

family=sm.families.Binomial() 是關鍵——同一支 sm.GLM()換一個 family 就變成別的廣義線性模型(最後一節會回來講)。看那排 p 值:最小的是 Lag1 的 0.145,各係數都未達 0.05 顯著水準。這份資料未提供這些係數異於零的充分證據;預測表現仍要另外評估。

來源:Ch04-classification-lab-zh.ipynb
講義 04 · 從機率到標籤,再到混淆矩陣
probs = results.predict() probs[:10] labels = np.array(['Down']*1250) labels[probs>0.5] = "Up" confusion_table(labels, Smarket.Direction)
預期輸出
Truth      Down   Up
Predicted           
Down        145  141
Up          457  507

predict() 回傳的是機率,不是標籤;要自己挑一個門檻值把它切成 Up/Down。這裡用 0.5,正確率 (507 + 145) / 1250 = 52.2%,但這是訓練正確率,同一批資料又訓練又評估,不能當作獨立測試;訓練表現通常較樂觀。

來源:Ch04-classification-lab-zh.ipynb
講義 04 · 用 2001–2004 擬合、在 2005 年比較
X_train, X_test = X.loc[train], X.loc[~train] y_train, y_test = y.loc[train], y.loc[~train] glm_train = sm.GLM(y_train, X_train, family=sm.families.Binomial()) results = glm_train.fit() probs = results.predict(exog=X_test) labels = np.array(['Down']*252) labels[probs>0.5] = 'Up' confusion_table(labels, L_test)
預期輸出
Truth      Down  Up
Predicted          
Down         77  97
Up           34  44

用 2001–2004 擬合、在 2005 年比較,正確率是 48.0%(錯誤率 52.0%)。不過前一張卡已用包含 2005 年的完整資料查看係數與 p 值;因此這是課本探索流程的教材示範,2005 年不是從頭到尾未碰的獨立測試集。

來源:Ch04-classification-lab-zh.ipynb
QUIZ · 係數的解讀

某邏輯斯迴歸模型裡 balance 的係數是 0.0055。下面哪個說法對?

(A) balance 每多一元,違約機率增加 0.0055
(B) balance 每多一元,違約機率乘上 1.0055
(C) balance 每多一元,違約的勝算乘上 $e^{0.0055}$ ≈ 1.0055
計算細節:概似、Newton/IRLS 與標準誤

從觀測到估計:完整的最大概似問題

給定 X 後,假設各 $Y_i$ 獨立且 $Y_i\sim\operatorname{Bernoulli}(p_i)$,$p_i=\operatorname{logistic}(x_i^T\beta)$,$x_i$ 含截距。用 $\eta_i=x_i^T\beta$ 表示線性預測量,估計問題為

$$\max_\beta L(\beta)=\prod_i p_i^{y_i}(1-p_i)^{1-y_i},\qquad \ell(\beta)=\sum_i\{y_i\eta_i-\log(1+e^{\eta_i})\}.$$

最小化 $-\ell$ 也就是最小化二元交叉熵。對數概似的一階導數稱為分數函數(score),二階偏導數組成 Hessian 矩陣:

$$U(\beta)=X^T(y-p),\qquad \nabla^2\ell(\beta)=-X^TWX,\qquad W=\operatorname{diag}\{p_i(1-p_i)\}.$$

一個 Newton 更新為 $\beta^{new}=\beta+(X^TWX)^{-1}X^T(y-p)$;實作用線性方程求解並檢查目標改善,避免直接計算逆矩陣。也可寫成反覆加權最小平方(IRLS):令工作反應 $z=X\beta+W^{-1}(y-p)$,以 W 加權擬合 z,重算 p、W、z,直到收斂。

完全或準完全分離時,無懲罰的有限 MLE 可能不存在;秩不足時係數也不唯一,不能把數值停止一概當成成功估計。

正確指定的條件模型、有限內點 MLE 與一般大樣本正則條件下,$\widehat{\operatorname{Cov}}(\hat\beta)=(X^T\hat WX)^{-1}$;係數 SE 是對角線平方根,Wald z 為 $\hat\beta_j/\widehat{SE}_j$,近似 95% CI 為 $\hat\beta_j\pm1.96\widehat{SE}_j$。觀測獨立不等於 p 相同;給定不同 X 時,反應變異數可不同。

來源:講義連結的概似估計教材、Stanford 邏輯斯迴歸推論講義。

證明:概似、梯度、Hessian 與 IRLS

Bernoulli 機率質量為 $p_i^{y_i}(1-p_i)^{1-y_i}$。獨立性讓聯合概似相乘;取對數後,利用 $\log p_i=\eta_i-\log(1+e^{\eta_i})$ 與 $\log(1-p_i)=-\log(1+e^{\eta_i})$,得到正文的 ℓ。

$\partial p_i/\partial\eta_i=p_i(1-p_i)$,故 $\partial\ell/\partial\beta=\sum_ix_i(y_i-p_i)$,再微分為 $-\sum_i p_i(1-p_i)x_ix_i^T=-X^TWX$。任意 v 的二次型為 $-\sum_i p_i(1-p_i)(x_i^Tv)^2\le0$,所以 ℓ 凹;在有限 $\beta$、X 滿欄秩時嚴格凹,但這不保證最大值在有限處取得。

對 score 做一次 Taylor 線性化:$0\approx U(\beta)-X^TWX(\beta^{new}-\beta)$。解出正文 Newton 更新,並將右側寫成 $X^TW[X\beta+W^{-1}(y-p)]$,便得到 IRLS 加權 normal equations。

Hessian 給定 X 後不含 y,故期望負 Hessian 就是 Fisher information $I=X^TWX$。在 MLE 漸近常態條件下,其逆矩陣近似係數共變異數。若條件模型的假設不成立,此簡單逆資訊公式不一定可靠,需採用適合該資料的推論方法;不能只憑分類正確率驗證推論條件。

證明:score 的變異與大樣本係數共變異數

在正確指定且可交換微分與積分的模型,對 $\int f_\theta(z)dz=1$ 微分,得到 $E[u_\theta(Z)]=0$。再微分一次,得到 $E[u_\theta u_\theta^T]=-E[\nabla u_\theta]=J$,這是每筆資料的資訊等式。

假設 MLE 一致、真參數在內點、J 正定且滿足 score 中央極限定理與 Hessian 大數法則,則 $n^{-1/2}U_n(\theta_0)\Rightarrow N(0,J)$,$-n^{-1}\nabla U_n(\tilde\theta)\to J$。對 $U_n(\hat\theta)=0$ 作 Taylor 展開:

$$\sqrt n(\hat\theta-\theta_0)=\left[-\frac1n\nabla U_n(\tilde\theta)\right]^{-1}\frac{U_n(\theta_0)}{\sqrt n}\Rightarrow N(0,J^{-1}).$$

總資訊約為 nJ,所以估計共變異數約為總資訊的逆。模型錯置時,score 變異 B 與期望負 Hessian A 不再相同,結果變成 $A^{-1}BA^{-1}/n$。觀測資訊是負 對數概似的 Hessian,不是其逆;SE 則是逆資訊矩陣對角元素的平方根,也不是先逐一取對角元素再倒數。

計算細節:預測機率的信賴區間

預測機率的信賴區間

對固定新輸入 $x_0$,令 $\hat\eta=x_0^T\hat\beta$、$s_\eta^2=x_0^T\widehat Vx_0$,其中 $\widehat V$ 是完整係數共變異數矩陣。常用近似 95% 機率信賴區間為 $[\operatorname{logistic}(\hat\eta-1.96s_\eta),\operatorname{logistic}(\hat\eta+1.96s_\eta)]$。不能把每個係數 CI 的下端一起代入、上端一起代入:那會漏掉係數間的共變異數。

這是對事件機率的估計不確定性,個別新反應仍是 0 或 1;不能照線性迴歸在 logit 的變異數裡隨意加 1 當成預測區間。

證明:線性預測量到機率的區間

MLE 的漸近常態近似給 $x_0^T\hat\beta$ 的變異數 $x_0^TVx_0$。logistic 函數單調遞增,所以把 $\eta$ 的區間兩端逐一通過 logistic 函數,涵蓋事件 $\eta\in[L,U]$ 與 $\operatorname{logistic}(\eta)\in[\operatorname{logistic}(L),\operatorname{logistic}(U)]$ 相同。這保留 $\eta$ 區間的近似涵蓋率且不越出 (0,1)。

若用一階 delta method,$\nabla_\beta p=p(1-p)x_0$,因此 $\widehat{SE}(\hat p)=\hat p(1-\hat p)s_\eta$。直接用 $\hat p\pm1.96SE$ 在接近 0 或 1 時可能越界;單純截到 [0,1] 不會自動修正近似涵蓋率。

延伸閱讀:反應誤差、潛在變數與分離

反應誤差、潛在變數與完全分離

正文已用 Bernoulli 說明反應誤差。以下是講義附錄連結的另一種表示,以及完全分離的推導;可參考誤差與潛在變數討論及分離時的估計問題。

給定 x,logistic 模型的反應仍是 Bernoulli,不是 logistic 分布。若定義誤差 $e=Y-p(x)$,它以機率 p 取 1−p,以機率 1−p 取 −p,條件平均為零、變異數為 p(1−p)。因此不能再自由估一個與 p 無關的共同誤差變異數,也不能把 logit(p) 當成 logit(Y)。

另一種等價的生成表示是 $Y=I\{x^T\beta+\epsilon>0\}$,其中 $\epsilon$ 服從標準 logistic 分布。這裡的 $\epsilon$ 是未觀測連續變數上的誤差,和上面的二點誤差 e 不同。取相同 x 並不決定固定的 0 或 1,仍需要依 p 抽樣。

完全分離時,無懲罰的概似可能沒有有限最大點。資料也可能因小樣本偶然分離,不能把它當成母體機率必為 0 或 1。一般可加入正則化或使用針對分離的估計方法;對分離資料反覆做普通 pairs bootstrap 不會自動解決有限 MLE 不存在的問題。

用固定門檻值 t 分類,logistic 在所用特徵上的邊界為 $x^T\beta=\log[t/(1-t)]$;如果特徵包含原始變數的平方或交互作用,邊界在原始輸入空間可呈非線性。

證明:潛在 logistic 表示與分離時的概似極限

標準 logistic 的 CDF 為 $F(u)=1/(1+e^{-u})$。因此

$$P(x^T\beta+\epsilon>0\mid x)=1-F(-x^T\beta)=\operatorname{logistic}(x^T\beta)$$

。另一方面,Bernoulli 反應的 $E[Y-p]=0$,

$$E[(Y-p)^2]=p(1-p)^2+(1-p)p^2=p(1-p)$$

。

令 $s_i=2y_i-1$。完全分離表示存在 v 使所有 $s_ix_i^Tv>0$。沿 $\beta$=cv、c→∞,每項概似為 $\operatorname{logistic}(cs_ix_i^Tv)\to1$,故總對數概似遞增趨近 0。有限 c 時每項仍小於 1,不能取得上確界,所以沒有有限 MLE。

PART 02 · 多元與多類別

多個預測變數、多於兩類要怎麼做 教科書 · 第 4.3.4–4.3.5 節講義 04

把一個預測變數換成 p 個,式子幾乎不用改——線性部分變成 $\beta_0 + \beta_1 X_1 + \cdots + \beta_p X_p$ 就好。加入變數後,原有係數可能變號。

類別解釋變數的加入方式和前章相同:挑一個基準水準,其餘水準用指示變數(indicator)表示:條件成立取 1,不成立取 0。例如 $s=I(\texttt{student}=\text{Yes})$,以非學生為基準:

$$\eta(x)=\beta_0+\beta_1\,\texttt{balance}+\beta_2\,\texttt{income}+\beta_3s.$$

固定 balance 與 income 時,學生相對於非學生的 log-odds 差為 $\beta_3$,勝算比為 $e^{\beta_3}$。有 $J$ 個水準時,含截距的模型通常放入 $J-1$ 個 indicator。這裡的類別解釋變數,和接下來的多類別反應是兩件事。

ISLP 的 Default 例子呈現了這個差異。只用 student 一個變數擬合(表 4.2), student[Yes] 的係數是 +0.4049:學生比較容易違約。 可是把 balance 與 income 一起放進去(表 4.3), 同一個 student[Yes] 變成 −0.6468:學生比較不容易違約。 同一份資料,符號翻過來了。

混淆(confounding):條件改變,係數的意義也改變 兩個係數都對,只是在回答不同的問題。
+0.4049 回答的是:「隨便抓一個學生跟一個非學生比,誰比較容易違約?」——學生。 因為學生的 balance 整體偏高。
−0.6468 回答的是:「在 balance 與 income 相同 的前提下,學生跟非學生誰比較容易違約?」——非學生。
多元迴歸的每個係數描述「控制模型中其他變數後」的條件關聯。 這是模型中的比較,沒有因果設計與相應假設時,不代表改變學生身分會造成違約率改變。 ISLP 圖 4.3 左圖比較違約機率曲線,右圖用箱形圖呈現學生與非學生的 balance 分布。
延伸閱讀:冰淇淋與鯊魚——共同原因造成的關聯

講義附的漫畫:冰淇淋銷量和鯊魚目擊次數一起上升,但兩者沒有因果關係,背後的共同原因是天氣熱:天熱時海邊遊客多,冰淇淋也賣得多。只看兩個變數會得到正相關;把氣溫放進模型、比較同樣氣溫的日子,這個關聯就大致消失。

Default 的學生身分也是同樣的結構:學生的 balance 整體偏高,而 balance 高的人容易違約。只看 student 時學生顯得風險高;控制 balance 之後,係數變成負的。

講義補充連結:冰淇淋銷量與鯊魚目擊次數:共同原因的漫畫。

用表 4.3 的係數算兩個具體的人(ISLP 式 4.8、4.9):balance = 1500、income = 40(千元)的 學生違約機率是 0.058,同樣條件的非學生是 0.105—— 同樣的 balance 與 income 下,學生的預測違約機率較低。

多於兩類:多類別邏輯斯迴歸

一次觀測若只會落在 $K$ 個互斥類別之一,給定 $X=x$ 後,各類機率就完整決定了它的分布。這是 Bernoulli 的多類別版本:

$$Y\mid X=x\sim\operatorname{Categorical}(p_1(x),\ldots,p_K(x)),\qquad p_k(x)\ge0,\quad\sum_{k=1}^Kp_k(x)=1.$$

多類別 logistic 再用線性分數與 softmax 指定這些機率如何隨 $x$ 改變。每個指標 $I(Y=k)$ 的條件期望是 $p_k(x)$;類別的數字編碼本身沒有可解讀的平均。

兩類的邏輯斯迴歸沒辦法直接處理 K > 2。做法是挑一類當基準(baseline, 習慣挑第 K 類),然後對其餘每一類寫一條 log-odds:

$$\log\!\left(\frac{\Pr(Y = k \mid X = x)}{\Pr(Y = K \mid X = x)}\right) = \beta_{k0} + \beta_{k1} x_1 + \cdots + \beta_{kp} x_p, \qquad k = 1, \ldots, K-1$$

只要估 K − 1 組係數。也可寫成 K 類對稱的 softmax;分母讓所有類別的機率加總為 1,但估計時仍需加識別限制,例如把基準類的整組係數固定為零,避免同一組機率對應多組係數:

$$\Pr(Y = k \mid X = x) = \frac{e^{\beta_{k0} + \beta_{k1} x_1 + \cdots + \beta_{kp} x_p}} {\sum_{l=1}^{K} e^{\beta_{l0} + \beta_{l1} x_1 + \cdots + \beta_{lp} x_p}}$$
基準類寫法(式 4.10–4.12)softmax 寫法(式 4.13)
要估幾組係數K − 1 組K 組分數,須加識別限制;自由參數仍是 (K−1)(p+1)
係數怎麼解讀相對於基準類的 log-odds只有兩類之間的差 $\beta$k − $\beta$k′ 有意義
換基準/平移係數係數全變,但預測值不變每類係數同加一個向量,預測機率不變
常見於統計軟體(statsmodels)機器學習與神經網路(第 10 章會再遇到)
兩種寫法給的預測值完全一樣 ISLP §4.3.5 講得很清楚:換基準類、或用 softmax, 擬合值、任兩類之間的 log-odds、以及分類結果都不變,變的只有係數本身的數值。 解讀多類別係數前,先確認基準類別與參數限制, 才能知道各係數比較的是哪兩類。
完整實作:探索後只留 Lag1 與 Lag2

講義完整實作:只留 Lag1 與 Lag2

講義 04 · 探索後只留 Lag1 與 Lag2
model = MS(['Lag1', 'Lag2']).fit(Smarket) X = model.transform(Smarket) X_train, X_test = X.loc[train], X.loc[~train] glm_train = sm.GLM(y_train, X_train, family=sm.families.Binomial()) results = glm_train.fit() probs = results.predict(exog=X_test) labels = np.array(['Down']*252) labels[probs>0.5] = 'Up' confusion_table(labels, L_test)
預期輸出
Truth      Down   Up
Predicted           
Down         35   35
Up           76  106

完整資料的 p 值看過 2005 年標籤後,才挑出看起來較有希望的兩個變數。2005 年正確率從 48.0% 升到 (35 + 106) / 252 = 56.0%;而且在「模型說會漲」的日子裡,它有 106 / (106 + 76) = 58.2% 準。那 252 天裡本來就有 141 天在漲,每天都猜漲也有 56%。這組數字適合說明流程與混淆矩陣,不能當成選模後的新測試證據。乾淨評估須只用訓練年份決定變數。

來源:Ch04-classification-lab-zh.ipynb
QUIZ · 混淆

只用 student 擬合時它的係數是正的,加入 balance 後變成負的。該怎麼理解?

(A) 其中一個模型擬合錯了,應該相信變數比較多的那一個
(B) 這是共線性造成的,把 student 或 balance 移掉一個就好
(C) 兩個係數在回答不同的關聯問題:後者比較 balance 相同的人
計算細節:多類別概似與識別限制

多類別模型如何估計?

概念和二分類一樣:對第 $i$ 筆資料,只取模型給實際類別 $y_i$ 的機率 $p_{i,y_i}$。給定預測變數後,各筆結果獨立,因此

$$L(\beta)=\prod_{i=1}^n p_{i,y_i}.$$ $$\ell(\beta)=\sum_{i=1}^n\log p_{i,y_i}.$$

例如三筆資料的實際類別是 A、C、B;模型依 A、B、C 順序給出的機率如下:

實際類別ABC取用的機率
A0.70.20.10.7
C0.10.20.70.7
B0.20.60.20.6
$$L=0.7\times0.7\times0.6=0.294.$$

MLE 調整所有係數,讓這個乘積最大。實際上通常最大化它的對數,避免把許多小機率直接相乘。

第 K 類當基準

對 $k=1,\ldots,K-1$ 設 $\eta_{ik}=\beta_{k0}+\sum_j\beta_{kj}x_{ij}$,並固定 $\eta_{iK}=0$,則

$$p_{ik}=\frac{e^{\eta_{ik}}}{1+\sum_{\ell=1}^{K-1}e^{\eta_{i\ell}}},\quad p_{iK}=\frac1{1+\sum_{\ell=1}^{K-1}e^{\eta_{i\ell}}}.$$ $$\ell(\beta)=\sum_i\left[\sum_{k=1}^{K-1}I(y_i=k)\eta_{ik} -\log\left(1+\sum_{\ell=1}^{K-1}e^{\eta_{i\ell}}\right)\right].$$

對稱 softmax 與識別限制

若將所有類別寫成 $p_{ik}=e^{\eta_{ik}}/\sum_\ell e^{\eta_{i\ell}}$,同一個對數概似是

$$\ell(\beta)=\sum_i\left[\eta_{i,y_i}-\log\left(\sum_{\ell=1}^Ke^{\eta_{i\ell}}\right)\right].$$

每類分數同時加上相同的 $c(x_i)$,分子與分母的共同倍數會抵消,機率不變。因此 K 組係數不能全部自由且唯一地估計;固定 $\beta_K=0$ 就回到基準類寫法。這是同一組類別機率的不同參數化。

一般沒有封閉解,仍用 Newton 等數值方法找 $\hat\beta=\arg\max_\beta\ell(\beta)$。負對數概似 $-\sum_i\log p_{i,y_i}$ 就是多類別 cross-entropy;它延續了二分類對正確類別機率的估計原則。

延伸:講義引用的多類別 logistic 推導。

證明:多類別概似梯度與識別性

令 $y_{ik}=I(y_i=k)$,表示第 $i$ 筆是否屬於第 $k$ 類;它是 0/1 指示變數,每筆恰有一類為 1。再寫 $\eta_{ik}=x_i^T\beta_k$,其中 $x_i$ 含截距,則 $\ell=\sum_{i,k}y_{ik}\eta_{ik}-\sum_i\log\sum_l e^{\eta_{il}}$,其中用到 $\sum_ky_{ik}=1$。對 $\beta_k$ 微分,第一項給 $\sum_i y_{ik}x_i$,第二項給 $\sum_i p_{ik}x_i$。若把每個 $\beta_k$ 換成 $\beta_k+c$,分子分母共同乘 $e^{x_i^Tc}$,相除抵消,故須施加識別限制。

PART 03 · LDA

換個方向想:先建各類的機率模型再用 Bayes 定理 教科書 · 第 4.4.1–4.4.3 節講義 04

已經有 logistic,為什麼還需要其他方法?

Logistic regression 已能把線性分數轉成類別機率,但估計是否穩定、能否利用資料的分布資訊,以及能不能看出類別間的幾何關係,是另外幾個問題。講義從這三點介紹 LDA。

1. 資料容易分開,不代表 logistic 的係數容易估計

前面定義的完全分離,表示一條分界就能把訓練資料中的兩類嚴格分開。沿著正確方向放大係數,模型會把已觀察到的類別機率推得更接近 1,概似也持續增加,卻可能沒有有限的最大點。這時分類標籤看似很穩,係數和標準誤卻不穩定,不能照一般情況解讀係數表。

LDA 改由各類的平均、共變異數與先驗決定邊界。只要這些量能穩定估計,兩類分得開本身不會造成 logistic 那種係數發散。不過資料太少或變數共線時,共變異數仍可能無法估穩;LDA 也有自己的限制。

2. 樣本少時,合理的分布假設能提供額外資訊

LDA 假設各類內近似常態,而且共用共變異數。這相當於先限制資料雲的形狀,再用所有類的資料一起估計共同的散布;資料少時,這些限制可能讓估計較穩定。

代價是要承擔假設不合適的偏差。若類內資料明顯偏離常態,或各類散布差很多,LDA 的限制也可能妨礙預測。因此,講義說的是在假設合理時 LDA 可能更穩定,實際表現仍需和 logistic 等方法一起比較。

3. 多類別的分類規則,也能提供低維視圖

LDA 為每一類計算一個判別分數,選分數最大的類,二類與多類使用同一套規則。Logistic 也能透過 softmax 處理多類別;LDA 的另一個用途,是找出最能呈現類別差異的投影方向。

例如 Iris 有四個測量變數、三個品種。LDA 的完整判別資訊最多只需兩個方向,就能畫成一張平面圖,同時觀察類別分離與重疊的位置。為什麼最多是 $K-1$ 個方向,會在本節後段的 Fisher LDA 小節用幾何方式解釋。

判別式與生成式:分別在建模什麼?

Logistic regression 是判別式模型(discriminative model),直接描述 $P(Y=k\mid X=x)$。生成式模型(generative model)則先描述類別比例與各類的 $X$ 分布,組成聯合分布,再用 Bayes 定理求後驗機率。

令 $\pi_k=P(Y=k)$ 為先驗機率,$f_k(x)$ 為 $X\mid Y=k$ 的密度。對連續 $X$,密度不是單點機率 $P(X=x\mid Y=k)$。分類用的是

$$P(Y=k\mid X=x)=\frac{\pi_kf_k(x)}{\sum_{\ell=1}^K\pi_\ell f_\ell(x)}.$$

對同一筆 $x$,若選第 $k$ 類,判錯的機率就是 $1-P(Y=k\mid X=x)$。因此,誤判代價相同時,選後驗機率最大的類別,會讓這筆資料的條件錯誤率最小。這是 Bayes 分類的理由;LDA/QDA 再用資料估計其中的機率,所以實際表現仍有估計誤差。

分母對所有類別相同,所以選 $\pi_kf_k(x)$ 最大的類別即可。和前面的 Bernoulli/Categorical 不同,這裡接下來的常態與共變異數限制是額外的模型假設,需要檢查是否適合資料。

生成式模型除了分類,還能做什麼?

生成式模型同時描述「各類出現的比例」與「每一類裡的資料長什麼樣」。因此,有了先驗 $\pi_k$ 和類內分布 $f_k$,就能進一步討論整筆資料如何產生、常不常見,以及未觀測部分可能是什麼。

生成新的資料:先抽類別,再抽特徵

先依各類的先驗機率抽一個 $Y$,再從該類的 $f_k$ 抽出 $X$。以 Iris 為例,先抽一個品種,再依這個品種的模型產生花萼長、花萼寬、花瓣長、花瓣寬。LDA 會使用各品種自己的平均與共用的共變異數來生成。

這些是符合已建立模型的模擬資料,可以幫助理解模型假設的資料形狀;它們不等於新增的真實觀測。只描述 $P(Y\mid X)$ 的判別式模型,則還缺少 $X$ 如何產生的模型,不能單靠這個條件機率生成整筆特徵。

異常檢查:分得出類別,不代表資料很常見

將各類密度依先驗加權相加,就得到整體資料的邊際密度:

$$f_X(x)=\sum_{k=1}^K\pi_k f_k(x).$$

若一筆觀測在每一類的模型裡都很少見,這個密度就低,可以作為異常檢查的線索。例如一朵花的測量組合與三個品種的資料雲都離得很遠,即使分類器仍選出最可能的品種,也值得回頭檢查。

後驗機率比較的是各類之間的相對可能性:所有類都不太能解釋這筆資料時,其中一類仍可能遠高於其他類。因此「分類有把握」與「這筆資料符合整體分布」是不同問題。低密度也不等於資料有錯,可能是真實少見的個案,或模型沒有描述好的情況。

缺值處理:使用已觀測到的特徵

假設花瓣長缺失,但其他測量還在。將已觀測部分記為 $x_{\mathrm{obs}}$,缺失部分記為 $x_{\mathrm{mis}}$。若只想分類,可以把缺失的特徵積分掉:

$$f_k(x_{\mathrm{obs}})=\int f_k(x_{\mathrm{obs}},x_{\mathrm{mis}})\,dx_{\mathrm{mis}}.$$

接著用這個邊際密度代入 Bayes 公式,根據已知特徵計算各類的後驗機率。若想推估缺失數值,則使用缺失特徵在已知特徵下的條件分布;模型中的變數相關性,可能提供比直接填整體平均更具體的資訊。

是否適合這樣處理,仍取決於模型及缺值原因。這裡說明的是聯合機率模型提供的計算途徑;一般 LDA 套件未必直接提供缺值估計功能。

講義補充連結:判別式與生成式模型的比較。

LDA(linear discriminant analysis,線性判別分析)的假設是: 各類的平均數可不同,但變異數共用,即 $X\mid Y=k\sim N(\mu_k,\sigma^2)$。這個常態假設描述類內資料的形狀。p = 1 時

$$f_k(x) = \frac{1}{\sqrt{2\pi}\,\sigma} \exp\!\left(-\frac{(x - \mu_k)^2}{2\sigma^2}\right)$$

代進 Bayes 定理、取 log、把跟 k 無關的項全部丟掉,剩下的就是判別函數 (discriminant function):

$$\delta_k(x) = x \cdot \frac{\mu_k}{\sigma^2} - \frac{\mu_k^2}{2\sigma^2} + \log \pi_k$$

把 x 分到 $\delta_k(x)$ 最大的那一類。$\delta$ 是 x 的一次式。這就是名字裡「線性」的來源。 兩類平均不同且 $\pi_1 = \pi_2$ 時,邊界剛好落在兩個平均數的中點 $(\mu_1 + \mu_2)/2$。

推導:一維 LDA 的判別函數從哪裡來?

第一步:比較後驗機率。Bayes 公式的分母對所有類別相同,因此最大化後驗機率,等同最大化 $\pi_k f_k(x)$。各類先驗為正時,再取單調遞增的 log,也不會改變大小順序:

$$\arg\max_k P(Y=k\mid X=x)=\arg\max_k\{\log\pi_k+\log f_k(x)\}.$$

第二步:代入類內常態密度。LDA 假設 $X\mid Y=k\sim N(\mu_k,\sigma^2)$,且各類共用 $\sigma^2>0$,所以

$$\log\pi_k+\log f_k(x)=\log\pi_k-\log(\sqrt{2\pi}\sigma)-\frac{(x-\mu_k)^2}{2\sigma^2}.$$

第三步:展開平方。利用 $(x-\mu_k)^2=x^2-2x\mu_k+\mu_k^2$:

$$\begin{aligned} \log\pi_k+\log f_k(x) &=\underbrace{-\log(\sqrt{2\pi}\sigma)-\frac{x^2}{2\sigma^2}}_{C(x)\text{,不隨類別改變}}\\ &\quad+\frac{x\mu_k}{\sigma^2}-\frac{\mu_k^2}{2\sigma^2}+\log\pi_k. \end{aligned}$$

第四步:移除共同項。分類時 $x$ 已固定,$C(x)$ 對每類都一樣,不影響哪個分數最大。留下

$$\boxed{\delta_k(x)=\frac{x\mu_k}{\sigma^2}-\frac{\mu_k^2}{2\sigma^2}+\log\pi_k}.$$

這個分數是 $x$ 的一次式。實際分類把未知的先驗、平均與變異數換成估計值,再選判別分數最大的類別。

直接用資料估計參數

第 $k$ 類有 $n_k$ 筆資料,總共 $n$ 筆。先驗用類別比例估計,平均用類內樣本平均;所有類的變異數合併估計:

$$\hat\pi_k=\frac{n_k}{n},\qquad \hat\mu_k=\frac1{n_k}\sum_{i:y_i=k}x_i,$$ $$\hat\sigma^2=\frac1{n-K}\sum_{k=1}^K\sum_{i:y_i=k}(x_i-\hat\mu_k)^2 =\sum_{k=1}^K\frac{n_k-1}{n-K}\hat\sigma_k^2.$$

這些都是封閉解(closed-form estimates),可以直接計算,再代入判別函數。上式採講義的不偏估計,分母為 $n-K$;嚴格的最大概似估計則用分母 $n$。兩者不要混稱。

›推 μ 與 σ 的滑桿看兩個常態密度怎麼動,虛線是決策邊界。
-1.25
1.25
1
1
0.5
講義/課本重繪
目前的設定
模型LDA(共用 $\sigma$)
$\pi_{1}$ · $\pi_{2}$0.50 · 0.50
使用的 $\sigma_{1}$ · $\sigma_{2}$—
決策邊界—
中點 ($\mu_{1}$+$\mu_{2}$)/2—
為什麼畫的是 $\pi_{k}$·fₖ(x) 而不是 fₖ(x) 圖 4.4
因為要讓「兩條曲線的交點」正好就是決策邊界。Bayes 分類器比的是 $\pi$kfk(x) 的大小,所以把先驗乘進去畫,交點在哪裡、邊界就在哪裡,不用另外算。在初始設定中,第 1 類位於左側,拉大 $\pi_{1}$ 會讓邊界往右移;一般而言,提高某類先驗會擴大該類的決策區域。
勾了「允許不同 $\sigma$」就變成 QDA
共用 $\sigma$ 時 $x^{2}$ 的係數在相減時剛好抵消,只剩一次項,當兩類平均不同時,邊界是一個點;平均相同時,分數差只剩先驗差異。一旦 $\sigma_{1}$ ≠ $\sigma_{2}$,$x^{2}$ 的係數不再抵消,邊界變成二次方程式的根——可能有兩個點。這就是兩者決策邊界不同的原因。

p > 1 時把常態換成多變量常態 $N(\mu_k, \Sigma)$, $\mu_k$ 是各類自己的平均向量、$\Sigma$ 是所有類共用的共變異數矩陣。 判別函數變成矩陣版:

$$\delta_k(x) = x^{\mathsf{T}} \Sigma^{-1} \mu_k - \frac{1}{2} \mu_k^{\mathsf{T}} \Sigma^{-1} \mu_k + \log \pi_k$$
推導:多變數 LDA 為什麼仍是線性判別函數?

沿用一維的比較方式,從 $\log\pi_k+\log f_k(x)$ 出發。現在 $X\mid Y=k\sim N_p(\mu_k,\Sigma)$,所有類共用正定的共變異數矩陣 $\Sigma$:

$$f_k(x)=\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}} \exp\!\left[-\frac12(x-\mu_k)^T\Sigma^{-1}(x-\mu_k)\right].$$

其中 $|\Sigma|$ 是行列式。取 log 後,指數變成二次型:

$$\log\pi_k+\log f_k(x)=\log\pi_k-\frac p2\log(2\pi)-\frac12\log|\Sigma| -\frac12(x-\mu_k)^T\Sigma^{-1}(x-\mu_k).$$

因為 $\Sigma^{-1}$ 對稱,兩個交叉項相同,展開得到

$$\begin{aligned}(x-\mu_k)^T\Sigma^{-1}(x-\mu_k) &=x^T\Sigma^{-1}x-2x^T\Sigma^{-1}\mu_k\\ &\quad+\mu_k^T\Sigma^{-1}\mu_k. \end{aligned}$$

代回並整理:

$$\log\pi_k+\log f_k(x)=C(x)+x^T\Sigma^{-1}\mu_k -\frac12\mu_k^T\Sigma^{-1}\mu_k+\log\pi_k,$$ $$C(x)=-\frac p2\log(2\pi)-\frac12\log|\Sigma|-\frac12x^T\Sigma^{-1}x.$$

$C(x)$ 不隨類別改變,移除後不影響分類。因此

$$\boxed{\delta_k(x)=x^T\Sigma^{-1}\mu_k-\frac12\mu_k^T\Sigma^{-1}\mu_k+\log\pi_k}.$$

共用共變異數是關鍵。它使含 $x$ 的二次項對每類都相同,能從比較中消去。剩下的 $x^T\Sigma^{-1}\mu_k$ 對 $x$ 線性,其餘都是該類的常數;比較兩類分數就得到線性邊界。

QDA 則讓各類使用自己的 $\Sigma_k$,二次項與 $\log|\Sigma_k|$ 都不能消去,於是保留

$$\delta_k^{\mathrm{QDA}}(x)=-\frac12(x-\mu_k)^T\Sigma_k^{-1}(x-\mu_k) -\frac12\log|\Sigma_k|+\log\pi_k.$$

來源:講義的 LDA/QDA 推導,及其引用的Discriminative analysis 教材。

矩陣寫法看似複雜,但令 $c_k=\Sigma^{-1}\mu_k$、$c_{k0}=-\mu_k^\mathsf T\Sigma^{-1}\mu_k/2+\log\pi_k$,就能看出

$$\boxed{\delta_k(x)=c_{k0}+c_{k1}x_1+\cdots+c_{kp}x_p}.$$

它是 $x$ 的線性函數(含截距)。比較兩類分數的邊界 $\delta_k(x)=\delta_\ell(x)$ 是超平面。在二維、三類的圖中,至多有三條兩兩分數相等的直線;只有沒有被第三類分數超過的部分才構成實際分類邊界。

判別分數、機率與距離怎麼連起來?

$\delta_k(x)$ 是用來比較類別的分數,可以是負數,也不必介於 0 與 1。前面的推導保留了後驗機率的大小順序,因此分數最大的類,後驗機率也最大。若要把這裡的 LDA 分數還原成機率,可以再經過前面學過的 softmax:

$$P(Y=k\mid X=x)=\frac{e^{\delta_k(x)}}{\sum_{\ell=1}^K e^{\delta_\ell(x)}}.$$

這就連回 logistic regression:兩者都能用線性分數得到分類機率。LDA 先估各類的平均、共用共變異數與先驗,再算出線性分數;logistic 則直接用類別標籤估計線性分數的係數。因此形式相近,估計結果卻不一定相同。

也可以從距離理解 LDA:看觀測離哪個類別中心較近,同時考慮類內散布與先驗。一維時,偏離中心一個單位算不算遠,要看這一類本來有多分散;多維時,還要看偏離的方向。

前章判斷殘差大小會考慮其尺度;這裡則用特徵的類內散布調整距離。沿著資料雲本來就拉得很長的方向移動,比朝很窄的方向偏離更常見。這種同時考慮尺度與相關性的距離,就是 Mahalanobis 距離。只將各欄分別標準化,還沒有處理資料雲傾斜所反映的相關性。

若各類都是同樣大小的球形、先驗也相同,就回到普通的「選最近中心」。先驗不同時,較常見的類別會得到較高的分數;前面的一維圖可以直接觀察先驗改變如何移動邊界。白化後為什麼能用普通距離比較,下面的 Mahalanobis 小節會一步步說明。

延伸閱讀:Ghojogh 與 Crowley:LDA/QDA tutorial 的第 5、7、9 節,分別連接判別分數、距離及 logistic regression。

多變數時,類別平均改成向量,共用變異數改成共變異數矩陣:

$$\hat\mu_k=\frac1{n_k}\sum_{i:y_i=k}x_i,\qquad \hat\Sigma=\frac1{n-K}\sum_{k=1}^K\sum_{i:y_i=k} (x_i-\hat\mu_k)(x_i-\hat\mu_k)^\mathsf T.$$

這同樣是不偏的 pooled 估計;MLE 分母仍為 $n$。以下使用共變異數可逆的情況,推導與估計細節可在本節收合區查閱。

Mahalanobis 距離:用資料自己的尺度量距離

講義把多變數判別函數寫成距離形式。令共用共變異數 $\Sigma$ 正定,定義 Mahalanobis 距離(Mahalanobis distance)

$$d_M(x,\mu)=\sqrt{(x-\mu)^\mathsf{T}\Sigma^{-1}(x-\mu)}.$$

LDA 的分數可以改寫成「距離平方的一半取負號,再加上先驗」;與類別無關的項不影響比較:

$$\delta_k(x)=-\tfrac12\,d_M^2(x,\mu_k)+\log\pi_k+\text{(與 }k\text{ 無關的項)}.$$

先驗相等時,LDA 就是選 Mahalanobis 距離最近的類別中心。它不看原始座標差了多少,看的是相對於資料本身的散布,差了多少。

一維:離平均幾個標準差

只有一個變數時,$\Sigma$ 就是變異數 $\sigma^2$:

$$d_M(x,\mu)=\sqrt{\frac{(x-\mu)^2}{\sigma^2}}=\frac{|x-\mu|}{\sigma}.$$

這就是「$x$ 離平均幾個標準差」。例如有兩個變數,$X_1$ 的標準差是 100、$X_2$ 的標準差是 1。兩個方向都差 10 時,歐氏距離(Euclidean distance)把它們當成一樣遠;但 $10/100=0.1$ 在 $X_1$ 方向只是很小的偏離,$10/1=10$ 在 $X_2$ 方向卻已經非常極端。

多維:變異大的方向權重小

多維時 $\Sigma$ 還包含相關。若資料大致沿著 $x_2\approx x_1$ 的斜線分布,沿斜線移動是常見的變化;垂直斜線移動同樣的歐氏距離,卻可能很少見。對 $\Sigma$ 做特徵分解 $\Sigma=Q\Lambda Q^\mathsf{T}$,令 $y=Q^\mathsf{T}(x-\mu)$ 為沿主軸的座標,則

$$d_M^2(x,\mu)=\sum_{i=1}^p\frac{y_i^2}{\lambda_i}.$$

這就是乘上 $\Sigma^{-1}$ 的理由:反矩陣讓變異大的方向權重變小、變異小的方向權重變大。只把每一欄分別標準化,處理的只是各變數的尺度,資料雲傾斜所反映的相關性還沒處理。

白化之後就是普通距離

令 $z=\Sigma^{-1/2}(x-\mu)$,其中 $\Sigma^{-1/2}=Q\Lambda^{-1/2}Q^\mathsf{T}$。這個轉換把共變異數變成單位矩陣,稱為白化(whitening),而

$$d_M^2(x,\mu)=z^\mathsf{T}z=\|z\|^2.$$

也就是說,Mahalanobis 距離是把變異數與相關都消掉之後的歐氏距離。多變量常態的密度只透過 $d_M$ 依賴 $x$,所以等密度線是橢圓,不是圓;$d_M$ 可以理解成跨過了幾層這樣的共變異數橢圓。下面的元件可以拖動觀測點,比較歐氏距離與 Mahalanobis 距離。

›拖動紅點或使用按鈕;滑桿改變相關係數與投影方向。
0.8
45
概念示意
觀測點與投影方向
相關係數 $\rho$0.80
歐氏距離 $\|x-\mu\|$—
Mahalanobis 距離 $d_M$—
投影座標 $a^\mathsf{T}(x-\mu)$—
投影後變異 $a^\mathsf{T}\Sigma a$—
150 點投影的樣本變異—
怎麼看這張圖
灰點是 $N(0,\Sigma)$ 的固定抽樣;三個實線橢圓是 $d_M=1,2,3$。紅點是可拖動的觀測 $x$,虛線圓是和 $x$ 歐氏距離相同的點,粗線橢圓是和 $x$ 的 Mahalanobis 距離相同的點。直線是方向 $a$,小方塊是 $x$ 在 $a$ 上的投影。
兩個對照
「沿長軸」與「沿短軸」兩個按鈕把 $x$ 放在歐氏距離都是 2 的位置,Mahalanobis 距離卻差很多。轉動 $a$,$a^\mathsf{T}\Sigma a$ 在長軸方向最大、短軸方向最小;它就是下一小節 Fisher 準則裡「投影後的散布」。
計算細節:特徵分解、白化矩陣與距離公式

第一步:分解共變異數。$\Sigma$ 對稱正定,所以可寫成 $\Sigma=Q\Lambda Q^\mathsf{T}$,$Q$ 的各欄是單位正交的特徵向量,$\Lambda=\operatorname{diag}(\lambda_1,\ldots,\lambda_p)$ 且每個 $\lambda_i>0$。

第二步:寫出反矩陣。因為 $Q^\mathsf{T}Q=I$,

$$\Sigma^{-1}=Q\Lambda^{-1}Q^\mathsf{T}.$$

第三步:代入距離。令 $y=Q^\mathsf{T}(x-\mu)$:

$$\begin{aligned}d_M^2&=(x-\mu)^\mathsf{T}Q\Lambda^{-1}Q^\mathsf{T}(x-\mu)\\ &=y^\mathsf{T}\Lambda^{-1}y=\sum_{i=1}^p\frac{y_i^2}{\lambda_i}.\end{aligned}$$

第四步:白化矩陣。定義 $\Sigma^{-1/2}=Q\Lambda^{-1/2}Q^\mathsf{T}$,它對稱,而且 $\Sigma^{-1/2}\Sigma^{-1/2}=\Sigma^{-1}$。令 $z=\Sigma^{-1/2}(x-\mu)$:

$$z^\mathsf{T}z=(x-\mu)^\mathsf{T}\Sigma^{-1/2}\Sigma^{-1/2}(x-\mu)=d_M^2.$$

若 $X\sim N(\mu,\Sigma)$,則 $\operatorname{Cov}(Z)=\Sigma^{-1/2}\Sigma\Sigma^{-1/2}=I$,各方向的變異都變成 1,而且彼此不相關。$\Lambda^{-1/2}Q^\mathsf{T}$ 也能白化(PCA 白化),差別只在最後少乘一次旋轉 $Q$;兩者給出相同的距離。

講義補充連結:逆共變異數矩陣與 Mahalanobis 距離的分解、LDA/QDA 教學文件中的判別函數。

Bayes 決策邊界與 LDA 估計出的邊界

講義的二維、三類圖同時畫了兩種邊界。Bayes 決策邊界(Bayes decision boundary)使用真實的先驗與類內分布,例如真正的 $\mu_k$、$\Sigma$、$\pi_k$,算出真正的後驗機率再分類。在 0–1 損失(每種誤判代價相同)下,它能達到所有分類規則中最低的期望錯誤率,稱為 Bayes 錯誤率(Bayes error rate);證明見第 2 章的 Bayes 分類器最佳性。

實際上我們不知道母體參數,只能用訓練資料估計:

$$\mu_k\to\hat\mu_k,\qquad \Sigma\to\hat\Sigma,\qquad \pi_k\to\hat\pi_k.$$

把估計值代入判別函數得到的,就是 LDA 邊界;QDA 則估計各類自己的 $\hat\Sigma_k$。因此:

ISLP 圖 4.6 每類 20 筆訓練資料,Bayes 與 LDA 的測試錯誤率分別是 0.0746 與 0.0770,兩條邊界很接近。要注意前提:這裡的 Bayes 邊界由真正的資料分布決定。若真實分布不是共用共變異數的常態,就算把常態模型的參數估得再準,LDA 邊界也不保證收斂到 Bayes 邊界;只有在某些特殊情況(例如後面情境 3 那種同尺度、等先驗的 t 分布)兩者的邊界才剛好一致。後面 QDA 一節的互動圖會把兩種邊界畫在一起。

觀念釐清
Q:LDA 與邏輯斯迴歸都給線性邊界,那差在哪?什麼時候該選哪個?

前面的 softmax 連結說明兩者可有相同的機率函數形式;這裡補充選擇時要檢查的條件。LDA 需要類內常態與共用共變異數,logistic 則直接限制 log-odds 的形式。

可依資料與用途比較:

  • 各類內的 X 真的近似常態、n 又小:共用共變異數也合理時,可優先比較 LDA。它利用了分布資訊,估計可能較穩定。ISLP 情境 1 中 LDA 表現良好。
  • X 明顯不常態(重尾、類別型變數、極端值多):可考慮邏輯斯迴歸,並評估條件機率形式是否合理。ISLP 情境 3 把資料換成 t 分布,邏輯斯就贏了 LDA。
  • 兩類完全可分:未正則化 logistic 可能沒有有限 MLE;共變異數能穩定估計時,可比較 LDA。
  • 要做推論、要 p 值、要處理類別型預測變數:邏輯斯迴歸能直接納入 indicator,並用係數、標準誤與檢定描述條件關聯。

兩者可能給出相近的分類結果。以 Lag1、Lag2 擬合的 LDA 混淆矩陣(35/35/76/106)跟使用相同變數的邏輯斯相同。這是這份資料上的結果。式 4.32 只說兩者的 log-odds 都是線性形式;估計係數的方法不同,並不保證預測機率、分類結果或混淆矩陣相同。

完整實作:擬合 LDA 並讀出估計的參數

講義完整實作:LinearDiscriminantAnalysis

講義 04 · 擬合 LDA 並讀出估計的參數
X_train, X_test = [M.drop(columns=['intercept']) for M in [X_train, X_test]] lda.fit(X_train, L_train) lda.means_ lda.priors_
預期輸出
array([[ 0.04279022,  0.03389409],
       [-0.03954635, -0.03132544]])

means_ 是 $\hat{\mu}_{1}$、$\hat{\mu}_{2}$(每一列一類、每一欄一個變數):市場下跌的日子前兩天報酬偏正,上漲的日子前兩天偏負。priors_給 $\hat{\pi}$ = [0.49198397, 0.50801603],就是訓練資料裡 Down/Up 的比例——LDA 的先驗預設就是這樣估的。注意 drop(columns=['intercept']):LDA 自己會處理截距。

來源:Ch04-classification-lab-zh.ipynb
講義 04 · 線性判別方向與預測結果
lda.scalings_ lda_pred = lda.predict(X_test) confusion_table(lda_pred, L_test)
預期輸出
Truth      Down   Up
Predicted           
Down         35   35
Up           76  106

scalings_ = [[-0.642], [-0.514]] 是那條線性組合的方向:它描述投影方向;實際分類還要依平均、尺度與先驗設定切點。混淆矩陣跟邏輯斯完全相同。相同混淆矩陣不代表兩個方法的機率或邊界完全相同。

來源:Ch04-classification-lab-zh.ipynb
QUIZ · LDA 的假設

LDA(p > 1)到底假設了什麼?

(A) 每一類的 X 服從多變量常態,各類有自己的平均向量,共變異數矩陣所有類共用
(B) 每一類的 X 服從多變量常態,平均與共變異數矩陣都各類共用
(C) X 的各個分量在每一類內互相獨立,且服從常態
要估的參數p = 2, K = 2 時p = 50, K = 2 時
先驗 $\pi$kK − 1 個11
平均 $\mu$kK × p 個4100
共用 $\Sigma$(LDA)p(p+1)/2 個31275
各自 $\Sigma$k(QDA)K·p(p+1)/2 個62550

〔選讀〕Fisher LDA:找出最能分開類別的投影方向

生成式 LDA 從各類的常態分布與共用共變異數出發,計算後驗機率。 Fisher 線性判別分析先問另一個問題:把資料投影到哪個方向,最容易看出類別差異? 投影就像把資料點在一條直線上留下位置;選不同方向,原本的兩團資料可能分開,也可能重疊。

投影:$a^\mathsf{T}x$ 是一維座標

Fisher 的作法是把 $p$ 維的點壓成一個數 $z=a^\mathsf{T}x$。由內積公式 $a^\mathsf{T}x=\|a\|\,\|x\|\cos\theta$,其中 $\theta$ 是 $a$ 與 $x$ 的夾角。若 $a$ 是單位向量($\|a\|=1$),

$$a^\mathsf{T}x=\|x\|\cos\theta,$$

正好是 $x$ 沿著 $a$ 方向的有號長度,也就是投影後在那條直線上的座標。例如 $x=(3,4)^\mathsf{T}$、$a=(1,0)^\mathsf{T}$,$a^\mathsf{T}x=3$:投影到水平軸後座標是 3。

要分清楚兩個東西:

LDA 寫 $z=a^\mathsf{T}x$ 時就是在降維:把每個資料點沿著方向 $a$ 投影到一條線上。Fisher 準則只在乎方向,把 $a$ 整體放大不會改變分類比較,所以常把 $a$ 規範成某種單位長度。

投影後的散布:$\operatorname{Var}(a^\mathsf{T}X)=a^\mathsf{T}\Sigma a$

若隨機向量 $X$ 的共變異數是 $\Sigma$,投影後的 $Z=a^\mathsf{T}X$ 只是一個數,它的變異數為

$$\boxed{\operatorname{Var}(a^\mathsf{T}X)=a^\mathsf{T}\Sigma a}.$$

直覺上,$\Sigma$ 記錄原本 $p$ 維資料「各個方向有多分散」,$a^\mathsf{T}\Sigma a$ 只取出 $a$ 方向上的那一份。例如 $\Sigma=\operatorname{diag}(4,1)$:投影到 $x_1$ 軸時 $a^\mathsf{T}\Sigma a=4$,投影到 $x_2$ 軸時是 1,投影到斜 45° 的 $a=(1,1)^\mathsf{T}/\sqrt2$ 時是 $(4+1)/2=2.5$。上面 Mahalanobis 元件的「投影後變異」讀數就是這個量。對應到 Fisher:把 $\Sigma$ 換成類內散布矩陣 $W$,$a^\mathsf{T}Wa$ 就衡量投影到 $a$ 之後,同一類內部還有多散。

推導:投影後的變異數

令 $\mu=E[X]$。$a$ 是固定向量,所以 $E[a^\mathsf{T}X]=a^\mathsf{T}\mu$。

第一步:寫成平方的期望。

$$\operatorname{Var}(a^\mathsf{T}X)=E\bigl[(a^\mathsf{T}X-a^\mathsf{T}\mu)^2\bigr]=E\bigl[(a^\mathsf{T}(X-\mu))^2\bigr].$$

第二步:純量的平方等於它乘上自己的轉置。$a^\mathsf{T}(X-\mu)$ 是純量,等於 $(X-\mu)^\mathsf{T}a$,所以

$$(a^\mathsf{T}(X-\mu))^2=a^\mathsf{T}(X-\mu)(X-\mu)^\mathsf{T}a.$$

第三步:把常數向量移出期望。

$$\operatorname{Var}(a^\mathsf{T}X)=a^\mathsf{T}E\bigl[(X-\mu)(X-\mu)^\mathsf{T}\bigr]a=a^\mathsf{T}\Sigma a.$$

同樣的步驟用在樣本上:把樣本共變異數 $S$ 代入,$a^\mathsf{T}Sa$ 就是投影後分數 $a^\mathsf{T}x_i$ 的樣本變異數。變異數不能是負的,所以 $a^\mathsf{T}\Sigma a\ge0$ 對所有 $a$ 成立,這也是共變異數矩陣必為半正定的原因。

平均分得開,還要看同類資料有多散

只比較兩個投影平均的距離還不夠。若平均雖然分開,每類資料卻在那個方向上散得很廣,兩類仍可能大量重疊。Fisher 因此同時看類間與類內散布:希望投影後各類中心分得開,同一類的資料又聚得近。

這個準則使用類別標籤,但定義它不需要常態假設。使用相同的類別平均與 pooled 類內共變異數時,它找到的方向和生成式 LDA 的判別方向相連;要變成完整分類規則,仍須加上切點與先驗。

白化:先把各個方向的尺度調整好

先把 LDA 的分數改寫成距離。省略與類別無關的項,分類等同於最小化

$$\frac12(x-\mu_k)^T\Sigma^{-1}(x-\mu_k)-\log\pi_k.$$

第一項是前面 Mahalanobis 小節的距離平方的一半。令 $z=\Sigma^{-1/2}x$、 $m_k=\Sigma^{-1/2}\mu_k$,就是把共用類內共變異數變成單位矩陣的白化(whitening)。 此時第一項變成 $\|z-m_k\|^2/2$。先驗相等時選最近的中心;先驗不等時仍須扣掉 $\log\pi_k$, 較常見的類別因而得到較大的決策區域。

白化可想成先沿著資料雲的主要方向重新取座標,再依各方向的類內標準差縮放。原本的橢圓形散布因而變成球形,在這個座標裡用普通的 Euclidean 距離,就等於原座標裡的 Mahalanobis 距離。LDA 對所有類別使用同一個轉換,因為它們共用共變異數。

白化本身不一定降維。共變異數正定時,白化只是可逆的座標轉換,原有方向都還在。下一步才是只保留分類所需的方向。

為什麼還能再降到 K−1 維?

白化後的 $K$ 個平均向量 $m_1,\ldots,m_K$ 都在某個至多 $K-1$ 維的仿射子空間 $H$:兩點在一條線上,三點在一個平面上。把新點 $z$ 投影到 $H$,各類距離平方都減去相同的垂直距離:

$$\|z-m_k\|^2=\|\operatorname{proj}_H(z)-m_k\|^2+ \|z-\operatorname{proj}_H(z)\|^2.$$

最後一項不隨類別改變,因此投影不會改變距離的比較,加上相同的先驗修正後也保留分類。LDA 的分類資訊於是集中在至多 $\min(p,K-1)$ 維。這是白化後的幾何關係;不能直接在未白化的原始座標中用普通距離取代 Mahalanobis 距離。

可以把兩個中心想成放在同一條線上。新點離這條線的垂直距離,對兩個中心都一樣;決定較靠近哪一個的,是沿線的位置。多類別只是把這條線換成容納所有中心的平面或更高維空間。保留整個空間時,不會丟掉 LDA 比較類別需要的資訊。

來源:講義引用的 LDA 幾何與降維說明,以及 LDA/QDA tutorial 第 7–8 節的距離與 Fisher 觀點。

和 PCA 比:散得最開的方向,未必最能分開類別

PCA 不使用類別標籤,尋找整體變異最大的方向。Fisher 則關心類別平均的差異,相對於各類內部散布有多明顯。

想像兩類的中心主要是左右分開,每一類卻都上下拉得很長。若上下的類內變異足夠大,PCA 可能優先保留上下方向;Fisher 則可能選左右方向,因為它較能區分類別。兩者回答的問題不同,所以同樣投影到二維,也不一定得到相同的圖。

Fisher 主要依靠類別平均與類內散布。如果同一類其實分成幾團,平均又剛好和另一類接近,這些摘要可能忽略重要結構。每類用一個 Gaussian 的 LDA/QDA 也有類似限制;實際資料形狀仍需檢查。

把直覺寫成 Fisher 準則

以 $n_k$ 表示第 k 類筆數、$\bar x_k$ 表示類平均、$\bar x$ 表示總平均,定義類內與類間散布矩陣:

$$W=\sum_{k=1}^K\sum_{i\in C_k}(x_i-\bar x_k)(x_i-\bar x_k)^T.$$ $$B=\sum_{k=1}^K n_k(\bar x_k-\bar x)(\bar x_k-\bar x)^T.$$

$W$ 加總同類觀測的散布,$B$ 加總各類中心相對於總中心的散布;它們尚未除以自由度。 因此 $a^TWa$ 是投影後的類內離差平方和,等於 pooled 類內變異數乘上 $n-K$,比較方向時兩者等價。 投影成 $a^Tx$ 後,Fisher 比值為

$$J(a)=\frac{a^TBa}{a^TWa}.$$

分子衡量各類平均投影後有多分散,分母衡量同類資料投影後有多分散。比值大,表示類間差異相對於類內散布更明顯;把方向向量整體放大不會改善這個比值,所以重點是選方向。

假設 $W$ 正定,最大化這個比值等同解廣義特徵值問題 $Ba=\lambda Wa$,也就是取 $W^{-1}B$ 最大特徵值對應的方向;後續方向依特徵值遞減取出。這些方向稱為判別座標(discriminant coordinates)。

計算細節:廣義特徵值、W 正交與降秩 LDA

為什麼是 $W^{-1}B$ 的特徵向量?比值 $J(a)$ 不受 $a$ 的長度影響,所以可以固定分母 $a^\mathsf{T}Wa=1$,改成在這個限制下最大化 $a^\mathsf{T}Ba$。拉格朗日乘數法給出

$$\nabla_a\bigl[a^\mathsf{T}Ba-\lambda(a^\mathsf{T}Wa-1)\bigr]=2Ba-2\lambda Wa=0\ \Longrightarrow\ Ba=\lambda Wa.$$

左乘 $a^\mathsf{T}$ 得 $a^\mathsf{T}Ba=\lambda\,a^\mathsf{T}Wa=\lambda$,所以比值就等於特徵值,取最大的 $\lambda$ 即可。$W$ 正定時兩邊左乘 $W^{-1}$,就是講義寫的「$W^{-1}B$ 的最大特徵值」。

後續方向與 $W$ 正交。依特徵值遞減取第二、第三個方向,可規範成 $a_i^\mathsf{T}Wa_j=\delta_{ij}$:這是 $W$ 內積下的正交,原始座標中不一定垂直。實作上常先解對稱矩陣 $W^{-1/2}BW^{-1/2}$ 的特徵問題,再轉回原座標。

降秩 LDA。若只保留前 $L\lt\operatorname{rank}(B)$ 個方向,就是降秩 LDA(reduced-rank LDA,ESL §4.3.3、習題 4.8)。它保留分離最強的方向;在共用常態模型下可連到類平均的秩受限最大概似估計。刪掉非零判別方向可能改變分類與後驗機率。用 $W$ 規範的座標做最近中心分類前,還須換成共變異數白化尺度;講義寫的規則是在判別座標中選

$$\arg\min_k\ \tfrac12\|\tilde x-\tilde\mu_k\|^2-\log\pi_k.$$

若 $W$ 奇異,須先處理共線性、降維或使用正則化,不能直接套逆矩陣公式。

講義補充連結:如何最大化廣義 Rayleigh 比值、scikit-learn 的 LDA/QDA 說明。

二類:Fisher 的方向就是 LDA 邊界的法向量

$$B=\frac{n_1n_2}{n}(\bar x_1-\bar x_2)(\bar x_1-\bar x_2)^T.$$ $$a\propto W^{-1}(\bar x_1-\bar x_2).$$

由於 pooled 共變異數 $\hat\Sigma=W/(n-K)$ 只差一個倍數, LDA 分數差中的 $\hat\Sigma^{-1}(\bar x_1-\bar x_2)$ 和 Fisher 方向平行。 可以把這分成兩個動作:Fisher 決定往哪個方向看,LDA 再依平均、尺度與先驗決定在哪裡切開。因此方向相同還不等於分類完全相同,任意取投影零點當切點並不正確。固定類內分布、只改先驗時,兩類邊界的方向維持不變,但切點會移動;這也對應前面先驗滑桿的作用。

多類:為什麼最多只有 K−1 個方向?

類間散布的秩滿足 $\operatorname{rank}(B)\le\min(p,K-1)$。 在白化空間中,各類中心都落在至多 K−1 維的仿射子空間。完整的距離分解見下方證明。保留完整的判別子空間,並保留同樣的尺度與先驗,便可重現原 LDA 分類。

K 大於 3 時,只畫前兩個判別方向的二維圖通常只是近似視圖;只保留前幾個方向的做法稱為降秩 LDA,細節放在上方「廣義特徵值」收合區。

講義的 Iris 例子

Iris 有花萼長、花萼寬、花瓣長、花瓣寬四個變數;Setosa、Versicolor、Virginica 各 50 筆。 三類最多兩個判別方向,因此完整二維判別圖能保留這個 LDA 分類規則。 使用全部 150 筆擬合、經驗先驗各 1/3,訓練混淆矩陣如下(列是真實類別,欄是預測類別):

真實/預測SetosaVersicolorVirginica
Setosa5000
Versicolor0482
Virginica0149

合計錯 3 筆(講義圖中兩個橘點、一個綠點被分錯),訓練正確率 98%,與講義一致。這是對擬合資料的回算,不能當作新花朵的測試正確率。 兩個非零廣義特徵值約 32.191929、0.285391;它們衡量類間與類內散布比,不是原始資料的 PCA 解釋變異比。

延伸閱讀:Iris 上 PCA 與 LDA 的二維投影

scikit-learn 的範例把 Iris 分別投影到 PCA 的前兩個主成分與 LDA 的兩個判別方向。PCA 不看品種標籤,只找整體變異最大的方向;LDA 使用標籤,找類間散布相對於類內散布最大的方向。兩張圖都能看出 Setosa 和另外兩種分得很開,但 LDA 的圖中 Versicolor 與 Virginica 的重疊較少,因為它的方向正是為了分開類別而選的。

講義補充連結:Fisher 判別與 PCA 在 Iris 上的比較。

QUIZ · 判別方向與分類

三類、四個變數的 LDA,保留兩個判別方向一定可以解讀成什麼?

(A) 使用相同尺度與先驗,可保留完整 LDA 決策所需的類平均差異
(B) 兩個方向必定解釋原始資料最多的變異
(C) 先驗機率不再影響分類
證明:Fisher 方向、白化與判別子空間

W 正定時,可把分母固定為 $a^TWa=1$。Lagrangian $a^TBa-\lambda(a^TWa-1)$ 的導數為 $2Ba-2\lambda Wa=0$。令 $u=W^{1/2}a$,得到對稱特徵問題 $W^{-1/2}BW^{-1/2}u=\lambda u$。取歐氏正交的 u,轉回後即有 $a_i^TWa_j=\delta_{ij}$。

二類時 $\bar x=(n_1\bar x_1+n_2\bar x_2)/n$;代入 B 的定義並合併,得 $B=(n_1n_2/n)dd^T$,$d=\bar x_1-\bar x_2$。因此非零廣義特徵方向平行於 $W^{-1}d$,也平行於 LDA 邊界法向量。

一般 K 類滿足 $\sum_k n_k(\bar x_k-\bar x)=0$,所以 B 的秩至多 K−1。白化後,將 z 分成類中心仿射子空間內的 $z_\parallel$ 與垂直成分 $z_\perp$,有 $\|z-m_k\|^2=\|z_\parallel-m_k\|^2+\|z_\perp\|^2$。最後一項對所有類別相同,比較距離與先驗時抵消;保留完整判別空間即可保留分類,截掉非零方向則未必。

計算細節:生成式模型的參數與共變異數

把生成式模型的參數估出來

第 k 類有 $n_k$ 筆資料。經驗先驗 $\hat\pi_k=n_k/n$,平均向量 $\hat\mu_k=\sum_{i\in C_k}x_i/n_k$。在這個收合區,$W=\sum_k\sum_{i:y_i=k}(x_i-\hat\mu_k)(x_i-\hat\mu_k)^T$ 是類內散布矩陣,和前面 logistic 的權重矩陣不同。共用共變異數的高斯最大概似估計為 W/n;課本常用的 pooled 不偏估計為 W/(n−K),兩者須分清楚。QDA 的類別共變異數 MLE 除以 $n_k$,不偏版本除以 $n_k-1$。

分類時先選定一致的共變異數估法,再代入分數。LDA 要估的 $\Sigma$ 正定,QDA 則每一類的 $\Sigma$k 都須可逆;某類樣本少或欄位共線時,可改用正則化或降低維度。Naive Bayes 只估每類每個特徵的一維條件分布;連續變數可用常態或其他密度模型,類別變數則估機率,零計數可能讓整個乘積為零,實務上常以平滑避免這個問題。

證明:類別平均、共變異數與判別函數

完整資料的對數概似可分成 $\sum_kn_k\log\pi_k$ 與各類高斯項。加上 $\sum_k\pi_k=1$ 的乘數約束,微分得 $n_k/\pi_k=\lambda$,相加給 $\lambda$=n,因此 $\hat\pi_k=n_k/n$。對 $\mu_k$ 微分得 $\Sigma^{-1}\sum_{i\in C_k}(x_i-\mu_k)=0$,故為類平均。

代回平均後,共用共變異數的負對數概似除去常數為 $\frac n2\log|\Sigma|+\frac12\operatorname{tr}(\Sigma^{-1}W)$。對精確度矩陣 $A=\Sigma^{-1}$ 微分給 $-\frac n2 A^{-1}+\frac12W=0$,所以 $\hat\Sigma=W/n$。估了 K 個平均後,W 的期望為 (n−K)$\Sigma$,因而不偏版本改除以 n−K。

分類比較 $\log\pi_k+\log f_k(x)$。展開共用 $\Sigma$ 的二次型,$-x^T\Sigma^{-1}x/2$ 與 $-\log|\Sigma|/2$ 不依 k 而抵消,留下 $x^T\Sigma^{-1}\mu_k-\mu_k^T\Sigma^{-1}\mu_k/2+\log\pi_k$。QDA 的 $\Sigma$k 不同,二次項與 log determinant 都不能刪掉。

延伸閱讀:二類 OLS 與 LDA 的方向

為什麼二類的最小平方與 LDA 方向有關?

這是講義在二元編碼處所附的OLS 與 LDA 關係討論;它補充前章的連結。

用 0/1 表示兩類,對中心化 X 做含截距的 OLS。若類內散布 W 正定、兩類平均不同,OLS 斜率向量與 $W^{-1}(\bar x_1-\bar x_0)$ 平行,也就是 Fisher/LDA 的方向;但機率尺度、截距與先驗決定的切點仍不同,不能直接推論兩者使用 0.5 門檻就必定給相同分類。

證明:二類 OLS 與 LDA 的方向

設 d 為兩類平均差、$a=n_0n_1/n$。中心化 X 的總散布為 $T=X^TX=W+add^T$,而 $X^Ty=ad$。Sherman–Morrison 等式給

$$\hat\beta_{OLS}=aT^{-1}d=\frac{a}{1+ad^TW^{-1}d}W^{-1}d.$$

乘數為正,所以方向平行;分類仍須使用相同尺度、中心與先驗。

PART 04 · 門檻值、混淆矩陣與 ROC

調整 0.5 門檻值,觀察各類錯誤如何改變 教科書 · 第 4.4.2 節講義 04

回到二元分類。若兩種錯誤成本相同,用真實後驗機率以 0.5 為門檻,可最小化期望分類錯誤率。 這個 0.5 來自 Bayes 分類器,而 Bayes 分類器最小化的是「總」錯誤率, 這個規則給兩種錯誤相同的權重;若成本不同,應最小化相應的期望損失。

ISLP 的 Default 例子把這個問題呈現得很清楚。LDA 在 10000 筆訓練資料上的錯誤率是 2.75%,但還要檢查錯誤集中在哪一類:

兩種錯誤有名字,而且權重通常不一樣 把「違約 / 有病 / 是垃圾信」當成正類(+):
FP(假陽性)=真實為負類,卻預測成正類。
FN(假陰性)=真實為正類,卻預測成負類。
假陽率(false positive rate, FPR)= FP/(TN+FP)=真實負類中被誤判為正類的比例=1 − 特異度,對應第一型錯誤。
假陰率(false negative rate, FNR)= FN/(TP+FN)=真實正類中被漏掉的比例=1 − 敏感度,對應第二型錯誤。
敏感度(sensitivity, recall)= TP/(TP+FN)=真實正類中被正確找出的比例,也叫真陽率或檢定力。
特異度(specificity)= TN/(TN+FP)=真實負類中被正確排除的比例。
精確率(precision)= TP/(TP+FP)=預測為正類的觀測中,實際為正類的比例。

回到 Default:LDA 的假陽率只有 23/9667 = 0.2%,假陰率卻高達 252/333 = 75.7%。總錯誤率很低,是因為負類占了 96.7%。

門檻值就是調節這兩種錯誤比例的設定。把 0.5 降到 0.2:

$$\Pr(\texttt{default} = \text{Yes} \mid X = x) > 0.2 \;\Longrightarrow\; \text{判為違約}$$

ISLP 表 4.5 的結果是:漏掉的違約戶從 252 掉到 138(敏感度從 24.3% 升到 58.6%), 代價是誤報從 23 升到 235,總錯誤率從 2.75% 升到 3.73%。 換成假陰率來說,就是從 75.7% 降到 41.4%(138/333)。若還想再降低假陰率,可以把門檻值降到 0.1 或更低。 是否值得取決於漏判與誤報的成本。拖動滑桿,觀察各類錯誤的變化;按「切換 ROC/PR」可以改看下一小節的 PR 曲線:

真實:不違約真實:違約合計
預測:不違約96442529896
預測:違約2381104
合計966733310000

綠底=猜對(TN/TP)· 淺紅=假陽 FP(誤報)· 深紅=假陰 FN(漏掉的違約戶)

圖表需要連網載入 Chart.js。此圖的重點:LDA 在 Default 上的 ROC 曲線緊貼左上角,AUC = 0.95;把門檻值從 0.5 調到 0.2,工作點沿曲線往右上移動——敏感度換來假陽率。
›拖動門檻值:混淆矩陣、四個指標與 ROC 上的紅點會同步重算。
0.5
課程/lab 資料
目前的門檻值下
門檻值0.500
預測會違約的人數104
敏感度(抓到幾成違約戶)24.3%
特異度99.8%
精確率77.9%
假陰率 FNR75.7%
總錯誤率2.75%
三種分類規則的結果 表 4.4/4.5
門檻值 0.5:錯誤率 2.75%,但漏掉 252 / 333 = 75.7% 的違約戶。
門檻值 0.2:錯誤率 3.73%,只漏掉 138 個(41.4%)。
一律猜不違約:錯誤率 3.33%,漏掉全部 333 個。
這三行分別呈現總錯誤率與兩種錯誤,讓你依用途比較。
ROC 與 AUC
ROC 曲線把所有門檻值的(假陽率、真陽率)畫成一條線,橫軸是假陽率 FP/(FP+TN),縱軸是敏感度 TP/(TP+FN)。AUC(area under the curve)是 ROC 曲線下面積,用來概括分數區分正負類的能力。AUC = 0.95(ISLP §4.4.2);隨機猜是對角線、AUC 為 0.5,完美是 1。切到 PR 時,橫軸換成 recall、縱軸換成精確率,水平虛線是盛行率 333/10000。紅點是你現在選的門檻值在曲線上的位置。
觀念釐清
Q:類別不平衡時,「正確率 99%」為什麼可能沒有找出任何正類?該看什麼?

因為多數類的比例很高,一律預測多數類也能得到高正確率。假設 1000 個人裡有 10 個得病,你寫一支 return '沒病' 的程式,正確率就是 99%。它一個病人都沒抓到。

這是多數類基準正確率;對應的多數類基準錯誤率則是 1%。兩者互為 1 減對方,報告時要跟模型用同一種量尺。ISLP 用 Default 示範:基準錯誤率 3.33%,LDA 的 2.75% 只是小勝。lab 的 Caravan 例子中,只有 6% 的人買保險,KNN 的錯誤率 11.1% 比「全猜不買」的 6.7% 還差。

該看什麼?先問「哪一種錯誤比較貴」,再挑指標:

  • 怕漏掉正類(癌症篩檢、詐欺偵測):看敏感度/recall,並且把門檻值往下調。
  • 怕誤報(垃圾信過濾、發送行銷成本):可看假陽率與精確率。提高門檻會減少 FP 或保持不變,但精確率是否提高仍需檢查。
  • 要一個不挑門檻值的總結:看 AUC,並同時查看不同門檻下的錯誤情況。
  • 兩邊都要顧:可參考 F1(精確率與 recall 的調和平均,定義見本節收合區),但仍要考慮錯誤成本。

報告結果時,把同一量尺的多數類基準一起報出來。這樣才能判斷高正確率是否只是反映多數類比例。

Q:TP / FP / FN / TN 跟那三個比率的關係是什麼?為什麼醫學篩檢跟垃圾信過濾在意的方向剛好相反?

先把四格與三個比率的分母分清楚,這是最容易搞混的地方:

  • 敏感度 = TP/(TP+FN):分母是真實的正類總數(縱向看)。
  • 特異度 = TN/(TN+FP):分母是真實的負類總數(縱向看)。
  • 精確率 = TP/(TP+FP):分母是你預測為正的總數(橫向看)。

ISLP 表 4.7 還給了對照的別名:假陽率就是第一型錯誤、真陽率就是檢定力(power)、精確率就是正預測值(PPV)。同一個表格,不同學科各叫一套名字。

方向相反是因為兩種錯誤的成本結構不同。

  • 癌症篩檢:漏掉一個病人(FN)可能致命;誤報(FP)的代價是再做一次檢查。所以把門檻值調低、犧牲特異度換高敏感度。這反映重視避免漏判的成本設定。
  • 垃圾信過濾:把重要信件丟進垃圾桶(FP,如果正類=垃圾信)代價很高;漏掉垃圾信則是另一種代價。因此可提高門檻以減少誤擋,再檢查假陽率及精確率是否符合需求。

lab 的 Caravan 是第三種情況:業務員拜訪一個人有成本,所以在意的是「被我挑中的人裡有幾成真的會買」。那是精確率。把門檻值從 0.5 降到 0.25,挑出 29 個人、9 個真的買,精確率 31%,相較於這批測試資料 6.7% 的購買比例,約為 4.6 倍。

不平衡資料:為什麼常改看 PR 曲線

講義在 ROC 頁最後提醒:不平衡資料可以改用 PR 曲線(precision–recall curve)。它的兩個軸是

$$\text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN}.$$

門檻值改變時,PR 曲線同時呈現兩件事:抓到多少正類(recall),以及報出來的正類有多可信(precision)。

一個小例子:1000 個負類、10 個正類

假設模型報出 20 個正類,其中 $TP=8$、$FP=12$。於是

$$\text{Recall}=\frac{8}{10}=0.8,\qquad \text{Precision}=\frac{8}{20}=0.4,\qquad \text{FPR}=\frac{12}{12+988}=0.012.$$

ROC 的橫軸只看到 1.2% 的假陽率,看起來很好;但模型報出的 20 個正類裡有 12 個是假的。原因是 ROC 的兩個軸都以真實類別為分母:FPR 的分母包含大量 TN,同樣 12 個誤報被 1000 個負類「稀釋」了。精確率完全不用 TN,所以直接反映「模型說是正類時到底準不準」。

要說得精確一點:類內分數分布固定時,ROC 曲線本身不隨盛行率改變,它不會因為不平衡就「算錯」。問題在於它沒有直接呈現預測正類裡的誤報比例;當我們真正關心的是少數正類(疾病、詐騙、罕見事件),PR 曲線通常更有資訊。所以ROC 仍可看,但關心少數正類時,PR 通常更能說明問題。

兩條曲線的隨機基準不同

在 Default 上,PR 的隨機基準是 333/10000 = 0.033。上方元件切到 PR 後,可以看到 LDA 的曲線遠高於這條水平線,但在高 recall 端精確率下降得很快:想抓到大部分違約戶,就得接受報出名單裡有很多不會違約的人。

完整實作:手動算 accuracy / sensitivity / precision / FPR

講義完整實作:從混淆矩陣算出四個指標

講義 04 · 手動算 accuracy / sensitivity / precision / FPR
conf_mat = confusion_matrix(L_test, labels) # True, predicted print(conf_mat) TP = conf_mat[1,1] TN = conf_mat[0,0] FP = conf_mat[0,1] FN = conf_mat[1,0] # print("Accuracy: ", conf_mat.diagonal().sum()/conf_mat.sum() ) print("Accuracy: ", (TP+TN) / (TP+TN+FP+FN) ) print("Sensitivity: ", TP / (FN + TP) ) print("Precision: ", TP / (FP + TP) ) print("False Positive Rate: ", FP / (FP + TN) )
預期輸出
Accuracy:  0.5595238095238095
Sensitivity:  0.75177304964539
Precision:  0.5824175824175825
False Positive Rate:  0.6846846846846847

注意 confusion_matrix(真實, 預測) 與 ISLP 的 confusion_table(預測, 真實) 參數順序相反、矩陣也是轉置的。看到別人的混淆矩陣第一件事就是確認哪一軸是真實值,否則敏感度與精確率會對調。這裡敏感度 0.752 很高,但假陽率也高達 0.685——模型幾乎什麼都猜 Up。

來源:Ch04-classification-lab-zh.ipynb
講義 04 · Caravan:把門檻值從 0.5 降到 0.25
logit = LogisticRegression(C=1e10, solver='liblinear') logit.fit(X_train, y_train) logit_pred = logit.predict_proba(X_test) logit_labels = np.where(logit_pred[:,1] > .5, 'Yes', 'No') confusion_table(logit_labels, y_test) logit_labels = np.where(logit_pred[:,1]>0.25, 'Yes', 'No') confusion_table(logit_labels, y_test) 9/(20+9)
預期輸出
Truth       No  Yes
Predicted          
No         913   58
Yes         20    9

門檻值 0.5 時只有 2 個人被預測會買保險,而且兩個都猜錯(門檻值 0.5 的混淆矩陣為 931/67/2/0)——模型沒有找出任何實際購買者。降到 0.25 之後挑出 29 個人、其中 9 個真的買了,精確率 9/(20+9) = 31.0%,相較於同一測試集 6.7% 的購買比例,約為 4.6 倍。同一個模型、同一組係數,只換了一個門檻值。

來源:Ch04-classification-lab-zh.ipynb
QUIZ · 門檻值

把分類門檻值從 0.5 降到 0.2,下面哪一組變化一定會發生?

(A) 敏感度與精確率都上升,因為抓到的正類變多了
(B) 敏感度上升(或持平)、特異度下降(或持平);總錯誤率不保證變好
(C) 總錯誤率一定下降,因為模型抓到更多真正的正類
名稱定義別名分母是誰
假陽率 FPRFP / N第一型錯誤、1 − 特異度真實的負類
真陽率 TPRTP / P敏感度、recall、檢定力、1 − 第二型錯誤真實的正類
正預測值 PPVTP / P*精確率、1 − 錯誤發現比例預測為正的
負預測值 NPVTN / N*—預測為負的

對照 ISLP 表 4.6/4.7。 N、P 是真實的負/正類總數;N*、P* 是被預測為負/正的總數。

延伸閱讀:F1 與隨機分數的 AUC 基準

F1 與隨機分數的 AUC 基準

$$F_1=\frac{2\,\mathrm{precision}\,\mathrm{recall}}{\mathrm{precision}+\mathrm{recall}}=\frac{2TP}{2TP+FP+FN}.$$

F1不使用TN,適合某些重視正類的任務,但不能代替錯誤成本分析。分母為零時須事先規定回報方式。門檻值降低保證recall不降,卻不保證precision下降或上升,因為新納入觀測的真實正類比例也會變。

AUC可解讀為隨機抽一個正類和一個負類時,正類分數較高的機率,加上一半平手機率。若分數與類別獨立且兩類使用同一分數分布,母體AUC為0.5;有限測試集的實現值可高可低。把分數全部取反會把AUC變成1−AUC,但這個操作不能利用測試標籤來挑方向。

講義補充連結:什麼是 recall 與 precision、隨機分類器的 ROC AUC。

證明:獨立隨機分數的AUC為二分之一

在虛無情境,正類分數 S+ 與負類分數 S− 為同分布的獨立抽樣,所以交換對稱性給 $P(S_+>S_-)=P(S_->S_+)$。令平手機率為 q,兩個嚴格排序的機率各為 (1−q)/2,因此 AUC=(1−q)/2+q/2=1/2。

PART 05 · QDA 與 Naive Bayes

共變異數要不要共用?獨立假設又幫了什麼 教科書 · 第 4.4.3–4.4.4 節講義 04

講義先回到 Bayes 公式:$\Pr(Y=k\mid X=x)=\pi_kf_k(x)/\sum_l\pi_lf_l(x)$。換掉 $f_k(x)$ 的形式,就得到不同的分類器:

LDA 要求所有類共用同一個 $\Sigma$。QDA(quadratic discriminant analysis) 讓每一類有自己的共變異數,即 $X\mid Y=k\sim N_p(\mu_k,\Sigma_k)$。它仍使用 Gaussian 類內分布,但放寬共用共變異數的假設。判別函數為:

$$\delta_k(x) = -\frac{1}{2}(x - \mu_k)^{\mathsf{T}} \Sigma_k^{-1} (x - \mu_k) - \frac{1}{2} \log |\Sigma_k| + \log \pi_k$$

展開之後會出現 $x^{\mathsf{T}} \Sigma_k^{-1} x$。因為 $\Sigma_k$ 隨 k 不同, 這一項在兩類相減時不會抵消,所以邊界是 x 的二次曲面——名字裡的「二次」就是這麼來的。講義把它完整展開成

$$\delta_k(x)=-\tfrac12x^{\mathsf{T}}\Sigma_k^{-1}x+x^{\mathsf{T}}\Sigma_k^{-1}\mu_k-\tfrac12\mu_k^{\mathsf{T}}\Sigma_k^{-1}\mu_k-\tfrac12\log|\Sigma_k|+\log\pi_k.$$

和 LDA 對照:LDA 的第一項 $-\tfrac12x^{\mathsf{T}}\Sigma^{-1}x$ 對每類都一樣,所以能刪掉;$\log|\Sigma|$ 也一樣。QDA 的這兩項隨 $k$ 改變,必須保留。

推導:QDA 判別函數怎麼展開成講義的五項

第一步:比較 $\log\pi_k+\log f_k(x)$。和 LDA 一樣,Bayes 公式的分母對所有類別相同。現在 $X\mid Y=k\sim N_p(\mu_k,\Sigma_k)$:

$$\log\pi_k+\log f_k(x)=\log\pi_k-\frac p2\log(2\pi)-\frac12\log|\Sigma_k|-\frac12(x-\mu_k)^\mathsf{T}\Sigma_k^{-1}(x-\mu_k).$$

第二步:刪掉與類別無關的項。只有 $-\frac p2\log(2\pi)$ 對每一類相同;$\log|\Sigma_k|$ 隨 $k$ 改變,必須保留。

第三步:展開二次型。$\Sigma_k^{-1}$ 對稱,所以兩個交叉項相等:

$$(x-\mu_k)^\mathsf{T}\Sigma_k^{-1}(x-\mu_k)=x^\mathsf{T}\Sigma_k^{-1}x-2x^\mathsf{T}\Sigma_k^{-1}\mu_k+\mu_k^\mathsf{T}\Sigma_k^{-1}\mu_k.$$

第四步:代回並乘上 $-\frac12$。

$$\delta_k(x)=-\tfrac12x^\mathsf{T}\Sigma_k^{-1}x+x^\mathsf{T}\Sigma_k^{-1}\mu_k-\tfrac12\mu_k^\mathsf{T}\Sigma_k^{-1}\mu_k-\tfrac12\log|\Sigma_k|+\log\pi_k.$$

第一項 $x^\mathsf{T}\Sigma_k^{-1}x$ 是 $x$ 的二次式,而且每類的 $\Sigma_k$ 不同,比較兩類時消不掉,邊界因此是二次曲面。若所有 $\Sigma_k=\Sigma$,第一項與 $\log|\Sigma_k|$ 都對各類相同,就回到 LDA 的線性判別函數。

講義補充連結:講義引用的 QDA 推導。

QDA:每一類用自己的形狀衡量距離

在下面的圖中,每一類都是一團橢圓形的資料。LDA 用同一個形狀來衡量各類;QDA 則容許橢圓的方向、長短與寬窄各自不同。同一個觀測相對於某類可能很常見,相對於另一類卻可能偏離很遠,邊界因此可以彎曲。

判別函數裡有三個角色:第一項看依該類散布調整後的距離;$-\tfrac12\log|\Sigma_k|$ 處理分布攤開的程度;$\log\pi_k$ 則反映先驗。分布若攤得更廣,雖然某些點的標準化距離變小,中心的密度峰值也會降低。因此不能只選 Mahalanobis 距離最小的類,還要把後兩項一起比較。

將圖中的兩個相關係數調成相同,兩類便共用一個母體共變異數,Bayes 邊界變成直線,和母體版本的 LDA 一致;但 QDA 用各類自己的樣本共變異數估計,樣本估計不會剛好相同,所以估計出的 QDA 邊界仍會微彎。母體共變異數相同時,各類可以一起白化;一般 QDA 則使用各類自己的共變異數,沒有同一個白化轉換把所有類同時變成單位共變異數。

先驗與類別平均的估法和 LDA 相同,各類共變異數則分別計算:

$$\hat\Sigma_k=\frac1{n_k-1}\sum_{i:y_i=k}(x_i-\hat\mu_k)(x_i-\hat\mu_k)^\mathsf T.$$

這是不偏估計;Gaussian MLE 改除以 $n_k$。每一類都要有足夠資料估計自己的共變異數,這也是 QDA 比 LDA 需要更多資料的原因。

要估多少參數:LDA、QDA 與 Naive Bayes

假設有 $p$ 個特徵、$K$ 類,三者都用 Gaussian 類內分布。差別幾乎全在共變異數:

方法平均共變異數/變異數先驗主要階數
LDA$Kp$$p(p+1)/2$(共用一個對稱矩陣)$K-1$$O(p^2+Kp)$
QDA$Kp$$K\cdot p(p+1)/2$(每類一個)$K-1$$O(Kp^2)$
Gaussian Naive Bayes$Kp$$Kp$(每類只留對角線)$K-1$$O(Kp)$

對稱的 $p\times p$ 矩陣只需要對角線加上半個三角形,所以是 $p(p+1)/2$ 個數。以 $p=100$、$K=3$ 為例(先不算先驗):

$$\begin{aligned}\text{LDA}&:\ 3\times100+\frac{100\times101}2=300+5050=5350,\\ \text{QDA}&:\ 300+3\times5050=15450,\\ \text{NB}&:\ 2\times3\times100=600.\end{aligned}$$

加上 $K-1=2$ 個先驗,分別是 5352、15452、602。這個差距在高維、小樣本時特別要緊:QDA 每類都要估 $O(p^2)$ 個共變異數,通常需要比 LDA 多得多的資料。三者因此形成一條偏差–變異的光譜:Naive Bayes 假設最強、參數最少,估計變異小但偏差可能大;QDA 最有彈性,偏差可能小但容易過擬合;LDA 在中間。這是常見的傾向,實際誰比較好仍要用獨立資料比較,不能只憑參數量斷定。

共用 $\Sigma$ 與否,涉及偏差–變異取捨 選擇時:訓練資料少且共用共變異數合理,可先比較 LDA;每類資料充足, 且各類共變異數明顯不同時,可比較 QDA。
ISLP 圖 4.9 兩張圖可直接比較這個差異:左圖真實邊界是線性的,LDA 贏(QDA 增加了估計變異); 右圖兩類的相關係數一個 +0.7 一個 −0.7,真實邊界是彎的,QDA 贏。
›切換共用/各自共變異數,比較估計邊界與 Bayes 邊界。
0.7
0.7
1.4
概念示意
目前的設定
模式LDA(共用 $\Sigma$)
$\rho_{1}$(藍類)0.70
$\rho_{2}$(紅類)0.70
邊界的形狀—
估計規則的測試錯誤(4000 點)—
Bayes 規則的測試錯誤(同一批點)—
怎麼看這張圖 圖 4.9
兩個橢圓是各類含 95% 機率的等高線,點是各類固定的 30 筆訓練資料。綠虛線是用真參數算的 Bayes 邊界;紅線是用這 60 點估計平均與共變異數後的邊界,QDA 模式另以灰虛線保留 LDA 的估計邊界當對照。把 $\rho_{1}$ 與 $\rho_{2}$ 調成一樣,Bayes 邊界變直線,QDA 卻仍會因估計誤差而微彎。
為什麼 QDA 的邊界會是圓錐曲線
$\delta_1(x) - \delta_2(x) = 0$ 是 x 的二次式,所以邊界一般是圓錐曲線,特殊參數下也可能退化成直線等情況。把 $\rho_{1}$ 與 $\rho_{2}$ 拉到正負兩端,你會看到邊界彎成兩支。切換 LDA/QDA 時資料點不會改變;只改用來估計的模型。估計規則的錯誤率不可能長期低於 Bayes 規則;在這 4000 個測試點上偶爾略低,是有限測試集的隨機誤差。

Naive Bayes:用類內條件獨立簡化模型

LDA 與 QDA 都在猜 $f_k(x)$ 的形狀(多變量常態)。 Naive Bayes 換一個方向:各變數的分布形式可以不同,但假設在每一類裡面,p 個預測變數互相獨立:

$$f_k(x) = f_{k1}(x_1) \times f_{k2}(x_2) \times \cdots \times f_{kp}(x_p)$$

條件獨立是額外的簡化假設,不是類別資料自動具有的性質。估計 $p$ 維密度本來就很困難;這個假設把它拆成估計 $p$ 個一維分布。即使不完全成立,也可能藉由減少估計變異而有不錯的預測表現,特別是 $n$ 相對於 $p$ 不夠大、無法好好估計類內聯合分布的時候。代回 Bayes 公式,後驗機率是

$$\Pr(Y=k\mid X=x)=\frac{\pi_k\,f_{k1}(x_1)\,f_{k2}(x_2)\cdots f_{kp}(x_p)}{\sum_{l=1}^K\pi_l\,f_{l1}(x_1)\,f_{l2}(x_2)\cdots f_{lp}(x_p)}.$$

一維分布仍需選擇或估計。講義列出三種做法:

推導:Naive Bayes 的後驗機率與參數估計

第一步:條件獨立讓聯合密度變成乘積。假設在第 $k$ 類內,$X_1,\ldots,X_p$ 互相獨立:

$$f_k(x)=\prod_{j=1}^pf_{kj}(x_j).$$

第二步:代入 Bayes 公式。

$$\Pr(Y=k\mid X=x)=\frac{\pi_k\prod_jf_{kj}(x_j)}{\sum_{l=1}^K\pi_l\prod_jf_{lj}(x_j)}.$$

第三步:取 log 比較。分母對各類相同,所以選

$$\arg\max_k\Bigl\{\log\pi_k+\sum_{j=1}^p\log f_{kj}(x_j)\Bigr\}.$$

乘積變成加總:每個特徵各自貢獻一份證據,彼此相加。實作時也用 log 加總,避免許多小機率相乘造成數值下溢。

第四步:估計一維分布。先驗 $\hat\pi_k=n_k/n$。Gaussian 版本用第 $k$ 類資料估每個特徵的平均與變異數:

$$\hat\mu_{kj}=\frac1{n_k}\sum_{i:y_i=k}x_{ij},\qquad \hat\sigma_{kj}^2=\frac1{n_k}\sum_{i:y_i=k}(x_{ij}-\hat\mu_{kj})^2.$$

類別特徵則用第 $k$ 類中各水準的比例 $\hat f_{kj}(v)=\#\{i:y_i=k,\ x_{ij}=v\}/n_k$。某個水準在某類從未出現時比例為 0,會讓整個乘積變成 0,實務上常加一個小的平滑常數。每類每特徵只估一維分布,所以 Gaussian 版本共 $2Kp$ 個參數加上先驗。

講義補充連結:講義引用的 Naive Bayes 推導。

講義的玩具例子:三個特徵、兩類

$p=3$、$K=2$:前兩個特徵是連續的,第三個是有三個水準的類別特徵,先驗 $\hat\pi_1=\hat\pi_2=0.5$。新觀測 $x^*=(0.4,\,1.5,\,1)^{\mathsf{T}}$ 在各類的一維密度(或比例)估計為:

$\hat f_{k1}(0.4)$$\hat f_{k2}(1.5)$$\hat f_{k3}(1)$$\hat\pi_k\times$ 三者乘積
第 1 類0.3680.4840.226$0.5\times0.368\times0.484\times0.226\approx0.02013$
第 2 類0.0300.1300.616$0.5\times0.030\times0.130\times0.616\approx0.00120$

分母是兩列相加約 0.02133,所以

$$\Pr(Y=1\mid X=x^*)\approx\frac{0.02013}{0.02133}\approx0.944,\qquad \Pr(Y=2\mid X=x^*)\approx0.056.$$

第三個特徵其實比較支持第 2 類(0.616 對 0.226),但前兩個連續特徵強烈支持第 1 類;乘起來後第 1 類勝出。可見 Naive Bayes 把各特徵的證據相乘,取 log 後就是相加。

加性(additive)就是把每個變數各自的作用相加:$a+g_1(x_1)+\cdots+g_p(x_p)$,每一項只看一個變數。各項可以彎曲,所以加性不一定是線性;它也不等於資料中的變數彼此獨立。本章比較 Naive Bayes 時,談的是log-odds 的加性。

名詞解釋:加性、線性與交互作用

令 $h(x)$ 代表模型分數;在本章的模型比較中,它是兩類之間的 log-odds。若能寫成

$$h(x)=a+\sum_{j=1}^{p}g_j(x_j).$$

就稱為加性:$a$ 是常數,各 $g_j$ 只接收自己的變數 $x_j$,算完再相加。某個變數的改變對這個分數帶來多少差異,不會隨其他變數的取值而改變。

加性可以是非線性的。例如 $h(x_1,x_2)=x_1^2+3x_2$。把 $x_1$ 從 1 改成 2,第一項增加 $2^2-1^2=3$;無論 $x_2$ 是多少,分數都增加 3。$x_1^2$ 是彎曲的函數,但仍然只看 $x_1$,所以這個模型是加性的。

交互作用則表示一個變數的作用會隨另一個變數而改變。例如加上 $x_1x_2$,把 $x_1$ 從 1 改成 2 時,這一項增加 $x_2$:$x_2=1$ 時增加 1,$x_2=5$ 時增加 5。它把兩個變數一起放進同一項,無法拆成只看 $x_1$ 與只看 $x_2$ 的兩項相加。

線性模型是加性的特例。取 $g_j(x_j)=b_jx_j$,就得到 $a+\sum_jb_jx_j$。因此 LDA 或沒有交互項的邏輯斯迴歸,其線性 log-odds 也具有加性;Naive Bayes 允許各 $g_j$ 更彎曲,但在所用的特徵中沒有跨變數交互項。

Naive Bayes 的類內條件獨立假設,使類別密度可以相乘;取兩類後驗機率的比值再取 log,就得到各變數的 log 密度比相加。條件獨立是推出這個形式的模型假設,加性則是函數的形式,兩者不是同一個定義。最後把 log-odds 轉回機率時,轉換是非線性的,不能據此說機率也能拆成各變數的機率相加。

講義的 Default 結果:為什麼 Naive Bayes 沒有贏過 LDA?

在 Default 上用 Gaussian Naive Bayes:門檻 0.5 時錯誤率 2.90%(LDA 為 2.75%),漏掉 244 個違約戶;門檻降到 0.2,錯誤率 4.58%、敏感度 61.0%(ISLP 表 4.8、4.9)。它沒有勝過 LDA,講義給的理由是 $n=10000$、$p=2$:資料量相對於特徵數非常充足,LDA 估一個 $2\times2$ 共變異數完全沒有困難,Naive Bayes 用獨立假設換來的「少估幾個參數」在這裡派不上用場,反而丟掉了兩個特徵之間的相關資訊。

對 fk(x) 的假設邊界形狀參數量(p 大時)適合考慮的情境
LDA多變量常態,$\Sigma$ 共用線性少真實邊界線性、各類近常態、n 小
QDA多變量常態,$\Sigma$k 各自二次多(K·p(p+1)/2)邊界明顯彎曲、n 大
Naive Bayes類內獨立,一維密度任意加性(可彎,但沒有交互項)Gaussian 版本為 2Kp 個平均與變異數p 大 n 小、變數近似獨立
邏輯斯迴歸不假設(直接建模後驗)線性少((K−1)(p+1))X 不常態、要做推論
KNN不指定分布與邊界形式;仍依賴距離及鄰域任意—(存全部資料)邊界極度彎曲、n ≫ p
完整實作:QuadraticDiscriminantAnalysis

講義完整實作:QDA 與 Naive Bayes

講義 04 · QuadraticDiscriminantAnalysis
qda = QDA(store_covariance=True) qda.fit(X_train, L_train) qda.covariance_[0] qda_pred = qda.predict(X_test) confusion_table(qda_pred, L_test)
預期輸出
Truth      Down   Up
Predicted           
Down         30   20
Up           81  121

covariance_[0]是第一類自己的 $\hat{\Sigma}_{1}$ = [[1.5066, -0.0392], [-0.0392, 1.5356]]——QDA 每類一個,這是它跟 LDA 的主要差別。QDA 的 2005 年正確率 0.5992,比 LDA 的 0.560 高。lab 的股市分類比較提醒:股市資料上多出這幾個百分點,仍需用新的資料評估能否推廣。

來源:Ch04-classification-lab-zh.ipynb
講義 04 · GaussianNB
NB = GaussianNB() NB.fit(X_train, L_train) NB.var_ nb_labels = NB.predict(X_test) confusion_table(nb_labels, L_test) print('Accuracy using gnb is ',accuracy_score(L_test,nb_labels))
預期輸出
Truth      Down   Up
Predicted           
Down         29   20
Up           82  121

theta_跟 lda.means_ 一模一樣——平均數的估法沒差。差別在 var_:Naive Bayes 每類每變數各估一個變異數、而且沒有共變異數(等於把 $\Sigma$k 限制成對角矩陣)。正確率 0.5952,比 QDA 的 0.5992 差一點、比 LDA 的 0.560 好。

來源:Ch04-classification-lab-zh.ipynb
QUIZ · 該用 LDA 還是 QDA

只有 n = 40 筆訓練資料、p = 2,而且你有理由相信真實的決策邊界是線性的。該選哪個?

(A) QDA。它比較有彈性,線性邊界是二次邊界的特例,所以不會更差
(B) 可優先比較 LDA。小樣本下,較少的共變異數參數可能讓估計較穩定
(C) 兩個一樣,因為 p = 2 時共變異數矩陣只有 3 個參數,差別可以忽略
PART 06 · 方法的解析比較

五種分類方法的假設與函數形式 教科書 · 第 4.5 節講義 04

把各模型的 log-odds 寫成相對於第 K 類的形式,就能比較它們允許的線性、二次與加性項。以下對照 ISLP §4.5.1:

$$\text{LDA:}\;\log\!\left(\frac{\Pr(Y = k \mid x)}{\Pr(Y = K \mid x)}\right) = a_k + \sum_{j=1}^{p} b_{kj} x_j$$

LDA 的 $a_k$、$b_{kj}$ 可以寫成明式。把共用 $\Sigma$ 的兩個判別函數相減:

$$\log\frac{\Pr(Y=k\mid x)}{\Pr(Y=K\mid x)}=\underbrace{\log\frac{\pi_k}{\pi_K}-\tfrac12(\mu_k+\mu_K)^{\mathsf{T}}\Sigma^{-1}(\mu_k-\mu_K)}_{a_k}+x^{\mathsf{T}}\underbrace{\Sigma^{-1}(\mu_k-\mu_K)}_{b_k}.$$

所以 LDA 和 logistic regression 一樣,假設後驗機率的 log-odds 是 $x$ 的線性函數;$b_k$ 的第 $j$ 個分量就是 $b_{kj}$。

推導:LDA log-odds 的 $a_k$ 與 $b_k$

LDA 的後驗比等於 $\pi_kf_k(x)/\{\pi_Kf_K(x)\}$,取 log 後

$$\log\frac{\Pr(Y=k\mid x)}{\Pr(Y=K\mid x)}=\log\frac{\pi_k}{\pi_K}-\frac12(x-\mu_k)^\mathsf{T}\Sigma^{-1}(x-\mu_k)+\frac12(x-\mu_K)^\mathsf{T}\Sigma^{-1}(x-\mu_K).$$

展開兩個二次型。共用 $\Sigma$ 時兩邊都有 $x^\mathsf{T}\Sigma^{-1}x$,相減後抵消,剩下

$$x^\mathsf{T}\Sigma^{-1}\mu_k-\tfrac12\mu_k^\mathsf{T}\Sigma^{-1}\mu_k-x^\mathsf{T}\Sigma^{-1}\mu_K+\tfrac12\mu_K^\mathsf{T}\Sigma^{-1}\mu_K.$$

整理常數項。利用 $\Sigma^{-1}$ 對稱,$\mu_k^\mathsf{T}\Sigma^{-1}\mu_k-\mu_K^\mathsf{T}\Sigma^{-1}\mu_K=(\mu_k+\mu_K)^\mathsf{T}\Sigma^{-1}(\mu_k-\mu_K)$。於是

$$\log\frac{\Pr(Y=k\mid x)}{\Pr(Y=K\mid x)}=\underbrace{\log\frac{\pi_k}{\pi_K}-\tfrac12(\mu_k+\mu_K)^\mathsf{T}\Sigma^{-1}(\mu_k-\mu_K)}_{a_k}+x^\mathsf{T}\underbrace{\Sigma^{-1}(\mu_k-\mu_K)}_{b_k}.$$

QDA 的 $\Sigma_k$ 各不相同,$x^\mathsf{T}\Sigma_k^{-1}x$ 與 $x^\mathsf{T}\Sigma_K^{-1}x$ 不會抵消,於是多出 $\sum_j\sum_lc_{kjl}x_jx_l$ 這組二次項;完整係數見本節後面的「QDA log-odds 的完整係數」收合。

講義補充連結:LDA log-odds 的向量寫法推導、QDA log-odds 的展開。

$$\text{QDA:}\;\log\!\left(\frac{\Pr(Y = k \mid x)}{\Pr(Y = K \mid x)}\right) = a_k + \sum_{j=1}^{p} b_{kj} x_j + \sum_{j=1}^{p}\sum_{l=1}^{p} c_{kjl} x_j x_l$$ $$\text{Naive Bayes:}\;\log\!\left(\frac{\Pr(Y = k \mid x)}{\Pr(Y = K \mid x)}\right) = \log\frac{\pi_k}{\pi_K}+\sum_{j=1}^p\log\frac{f_{kj}(x_j)}{f_{Kj}(x_j)}= a_k + \sum_{j=1}^{p} g_{kj}(x_j)$$

比較這三種形式,可得以下四個關係:

四種函數形式的關係(ISLP §4.5.1) 1. LDA 是 QDA 的特例(所有 ckjl = 0)。 LDA 對 Gaussian 類內分布加上 $\Sigma_{1}$ = ⋯ = $\Sigma$K 的限制。
2. 線性的 log-odds 是加性 log-odds 的特例(取 gkj(xj) = bkjxj)。 所以 LDA 的 log-odds 屬於這個加性函數形式。這比較的是可表達的後驗函數;LDA 的聯合分布並不因此滿足 Naive Bayes 的類內獨立假設,估計方法也不會相同。
3. 常態 Naive Bayes 一般是各類 $\Sigma_{k}$ 為對角矩陣的 QDA。 若再要求每個變數的變異數跨類別共用,即 fkj 取 N($\mu$kj, $\sigma$j²),則 gkj(xj) = bkjxj(再加常數),其中 bkj = ($\mu$kj − $\mu$Kj)/$\sigma$j²;這時 Naive Bayes 是 $\Sigma$ 限制為對角、第 j 個對角元素為 $\sigma$j² 的 LDA。lab 的 GaussianNB 每類各估變異數,屬於前一種。
4. QDA 與 Naive Bayes 誰都不是誰的特例。Naive Bayes 的 gkj 可以是任意函數(更彈性), 但在所用特徵中,它的 log-odds 是加性的,沒有不同特徵間的交互項;QDA 有交互項但被鎖在二次式裡。

邏輯斯迴歸呢?多類別邏輯斯迴歸的形式跟 LDA 的第一行字面上完全一樣。 建模對象與估計方法不同:LDA 從常態假設推出來,邏輯斯迴歸直接最大化條件概似。 各類內近似常態、共用共變異數合理時,LDA 可能受益於這些限制;假設不合適時,logistic 可能較有彈性。兩者沒有固定的優劣順序。

本章的 KNN 採用另一種估計方式:它不寫任何 log-odds 的式子,直接看鄰居投票。 距離是否有意義、資料是否足夠密集,以及鄰居數和尺度的選擇,都會影響結果;它也不提供可直接解讀的迴歸係數。

講義把這些比較整理成幾條原則:

依真實決策邊界的複雜度,大致可以這樣選:線性時 LDA 與 logistic 表現好;中度非線性時 QDA 或 Naive Bayes 可能較好;更複雜時 KNN 這類無母數方法可能較好,但平滑程度(例如 K)要選對。這些是傾向,不是保證。

Default 上四個方法的 AUC 幾乎相同;上面的門檻值元件已經完整呈現 ROC 與 AUC, 可用這個元件比較不同門檻值下的表現。選擇方法時,把候選方法放進 同一個重抽樣流程,依未見資料的表現與問題的錯誤成本判斷。

完整實作:KNeighborsClassifier(n_neighbors=1)

講義完整實作:KNN,唯一的無母數方法

講義 04 · KNeighborsClassifier(n_neighbors=1)
knn1 = KNeighborsClassifier(n_neighbors=1) X_train, X_test = [np.asarray(X) for X in [X_train, X_test]] knn1.fit(X_train, L_train) knn1_pred = knn1.predict(X_test) confusion_table(knn1_pred, L_test) (83+43)/252, np.mean(knn1_pred == L_test)
預期輸出
Truth      Down  Up
Predicted          
Down         43  58
Up           68  83

K = 1 的 2005 年正確率是 0.500,等於公平隨機猜測的期望正確率。K = 3 升到 0.532;同一份教材比較中的 QDA 正確率更高。lab 比較的這幾個設定中,在 Smarket 上 QDA 最好。K = 1 對個別鄰居很敏感;這次結果沒有顯示它比一律猜 Up 的基準更好。

來源:Ch04-classification-lab-zh.ipynb

實證比較:ISLP 的六個模擬情境

解析比較只說明各方法能表達什麼函數;實際表現還取決於樣本數與估計變異。ISLP §4.5.2 設計了六個二元分類情境,每個都有兩個連續預測變數:

情境資料怎麼產生書上的結果為什麼
1(線性)每類 20 筆,類內兩變數不相關的常態,兩類平均不同LDA 最好,logistic 略差;QDA 較差;Naive Bayes 略優於 QDA;KNN 差這正是 LDA 的模型;QDA 擬合了不必要的彈性;KNN 的變異沒有換到偏差的降低;Naive Bayes 的獨立假設正確
2(線性)同情境 1,但類內兩變數相關係數 −0.5多數方法與情境 1 相近;Naive Bayes 很差獨立假設被違反
3(線性)同樣有 −0.5 的類內負相關,但改由多變量 t 分布產生,每類 50 筆logistic 勝過 LDA,兩者都優於其他方法;QDA 明顯變差;Naive Bayes 很差Bayes 邊界仍是線性的,但資料不常態,違反 LDA 的假設;t 分布較常出現極端點
4(非線性)常態;第 1 類相關 +0.5、第 2 類相關 −0.5QDA 最好;Naive Bayes 差正好是 QDA 的假設,邊界是二次的;獨立假設被違反
5(非線性)不相關的常態 X;再把 X 的複雜非線性函數經 logistic 函數轉成機率,依此抽出 YKNN-CV 最好;QDA、Naive Bayes 略優於線性方法;KNN-1 最差邊界很複雜;但平滑程度沒選對時,無母數方法仍會很差
6(非線性)常態,兩類的對角共變異數不同,每類只有 6 筆Naive Bayes 最好;QDA 稍差;LDA、logistic 差;KNN 也差Naive Bayes 的假設成立;共變異數不同使邊界非線性;樣本極少時 QDA 估相關的變異太大

下面的箱形圖依上表的文字設定重新模擬。書上沒有給出兩類平均差、t 分布自由度、情境 5 的非線性函數等細節,這裡自選合理的數值,所以只能看各方法的相對排序與分散程度,數字不會和課本圖 4.11、4.12 相同,有些情境的差距也比書上小。

›選一個情境,比較六個方法的測試錯誤率分布。
模擬示意
目前的情境
情境1
訓練筆數每類 20 筆
Bayes 邊界線性
中位數最低—
中位數最高—
怎麼看箱形圖 圖 4.11/4.12
每個方法一個箱子,畫的是 100 組訓練資料各自的測試錯誤率:箱子是第 1 到第 3 四分位數,中間橫線是中位數,上下細線延伸到最小值與最大值。箱子愈低愈好,愈短表示換一組訓練資料時愈穩定。
對照課本時
這是依課本文字重建的示意模擬,不是課本的原始資料。請比較同一情境裡各方法的相對位置,例如情境 2 的 Naive Bayes、情境 5 的 KNN-1、情境 6 的 LDA 與 logistic。

六個情境合起來說明:沒有一種方法在所有情況都最好。真實邊界線性時,LDA 與 logistic 傾向表現好;中度非線性時,QDA 或 Naive Bayes 可能較好;更複雜的邊界,KNN 這類無母數方法可能較好,但平滑程度必須小心選擇。第 5 章的交叉驗證就是用來做這個選擇。

觀念釐清
Q:情境 3 是類內負相關的 t 分布、每類 50 筆,Bayes 邊界為什麼還是線性的?

關鍵是兩類的 t 分布共用尺度矩陣 $\Sigma$、自由度 $\nu$ 也相同,只有中心不同。$p$ 維多變量 t 的密度是

$$f_k(x)\propto\Bigl[1+\tfrac1\nu\,d_k^2(x)\Bigr]^{-(\nu+p)/2},\qquad d_k^2(x)=(x-\mu_k)^\mathsf{T}\Sigma^{-1}(x-\mu_k).$$

兩類的比例常數相同。若先驗也相等,邊界 $f_1(x)=f_2(x)$ 等價於 $1+d_1^2/\nu=1+d_2^2/\nu$,也就是 $d_1^2=d_2^2$。展開後兩邊都有 $x^\mathsf{T}\Sigma^{-1}x$,二次項抵消,剩下 $x$ 的一次式,所以邊界是直線。情境 3 每類各 50 筆,正好對應等先驗。

幾個要分清楚的地方:

  • 強負相關不會讓邊界彎曲。它只讓等密度橢圓往負斜率方向傾斜;兩類共用這個形狀,邊界仍是直線。
  • 邊界線性,不代表 log-odds 線性。t 分布的 $\log f_1(x)-\log f_2(x)=-\tfrac{\nu+p}2\log\frac{\nu+d_1^2}{\nu+d_2^2}$ 不是 $x$ 的線性函數;只是它等於 0 的那條線恰好是直線。這也是 LDA 的常態假設在這裡不成立、logistic 的線性 log-odds 只是近似的原因。
  • 先驗不相等時會變彎。邊界變成 $1+d_1^2/\nu=c\,(1+d_2^2/\nu)$,$c=(\pi_1/\pi_2)^{2/(\nu+p)}\ne1$,二次項係數 $1-c$ 不為零,邊界成為二次曲線。這和常態 LDA 不同:常態時不等先驗只會平移直線。
  • 兩類尺度矩陣或自由度不同時,二次項或非線性項通常無法抵消,邊界通常是非線性的。
  • 每類只有 50 筆影響的是估計穩不穩定,不改變理論上的 Bayes 邊界是否線性。另外,t 分布的尺度矩陣不等於共變異數:$\nu>2$ 時共變異數是 $\nu\Sigma/(\nu-2)$。
Q:可以把 $x^2$ 或交互作用項加進 LDA、QDA、Naive Bayes 或 logistic 嗎?

可以。這些方法都不限制特徵一定只能是原始的 $x_1,\ldots,x_p$;可以先做特徵擴充,例如

$$\phi(x)=(x_1,\ x_2,\ x_1^2,\ x_2^2,\ x_1x_2),$$

再把 $\phi(x)$ 當成新的特徵。ISLP §4.5.2 結尾就提到,logistic regression 可以加入 $X^2$、$X^3$ 甚至 $X^4$;把所有平方項與交叉乘積加進 LDA,模型形式會和 QDA 相同,只是參數估計不同,這讓我們能在 LDA 與 QDA 之間取得折衷。

  • LDA 或 logistic + 多項式特徵:在新特徵空間仍是線性邊界 $\beta_0+\beta_1x_1+\beta_2x_2+\beta_3x_1^2+\beta_4x_2^2+\beta_5x_1x_2=0$,映回原始空間就是二次曲線。
  • QDA + 多項式特徵:QDA 對原始特徵已經會產生 $x_i^2$ 與 $x_ix_j$;再對 $z=x^2$ 這類新特徵取二次,回到原始 $x$ 就可能出現 $x^4$,邊界更高階。
  • Naive Bayes + 多項式特徵:技術上可以,擴充後邊界也能非線性;但 $x_1$ 與 $x_1^2$、$x_1x_2$ 是由原變數決定的,幾乎不可能條件獨立,所以這個假設會更不合理。即使如此,分類不一定需要把聯合分布估準,有時預測仍不錯。

代價有兩個。第一,擴充後的特徵通常不再服從常態,LDA/QDA 的分布假設更難成立。第二,參數量快速增加,QDA 還要對擴充後的特徵估完整共變異數,很容易過擬合。加不加、加到幾次,應該用交叉驗證比較。

QUIZ · 解析比較

ISLP §4.5.1 說「LDA 是 Naive Bayes 的特例」。這句話怎麼可能成立?LDA 明明允許變數相關、Naive Bayes 明明假設獨立。

(A) 因為當 $\Sigma$ 是對角矩陣時,LDA 的變數就真的獨立了,兩者於是相同
(B) 這句話只在 p = 1 時成立,p ≥ 2 時兩者沒有包含關係
(C) 因為兩者的 log-odds 都能寫成 $a_k+\sum_{j=1}^p g_{kj}(x_j)$;LDA 對應各 $g_{kj}$ 為線性函數的情況
計算細節:QDA log-odds 的完整係數

QDA log-odds 中的係數到底是什麼?

以第 K 類為基準,令 $A_k=\Sigma_k^{-1}$。完整形式為 $a_k+b_k^Tx+x^TC_kx$,其中

$$a_k=\log\frac{\pi_k}{\pi_K}-\frac12\log\frac{|\Sigma_k|}{|\Sigma_K|}-\frac12\mu_k^TA_k\mu_k+\frac12\mu_K^TA_K\mu_K,$$ $$b_k=A_k\mu_k-A_K\mu_K,\qquad C_k=\frac12(A_K-A_k).$$

注意 Ck 使用「兩個逆矩陣的差」,一般不等於 $(\Sigma_K-\Sigma_k)^{-1}/2$。對稱 Ck 的 $x^TC_kx$ 同時包含各平方項與交互作用;所有共變異數相同時 Ck=0,退回 LDA 的線性 log-odds。

證明:從後驗比逐項展開QDA

Bayes 分母抵消後,log 後驗比等於 $\log(\pi_k/\pi_K)+\log f_k(x)-\log f_K(x)$。高斯常數中的 $-p\log(2\pi)/2$ 抵消;留下 log determinant 差與兩個二次型。逐一展開

$$-(x-\mu_k)^TA_k(x-\mu_k)/2=-x^TA_kx/2+x^TA_k\mu_k-\mu_k^TA_k\mu_k/2$$

,再減去基準類的對應式,收集常數、一次與二次項,便得到 a、b、C。

PART 07 · Poisson 迴歸與 GLM

計數資料:把線性模型推廣成 GLM 教科書 · 第 4.6 節講義 04

講義最後用計數資料,把線性迴歸與 logistic regression 連到廣義線性模型(GLM)。

前面兩種 y:連續的(第 3 章)與類別的(本章)。還有第三種常見的 y——計數。 ISLP 用 Bikeshare(華盛頓特區每小時的單車租借數,n = 8645)示範。反應 bikers 是每小時的使用人數,只取非負整數,很難歸成單純的質性或量化變數。講義用五個預測變數:

講義補充連結:ISLP 的 Bikeshare 資料說明。

為什麼不直接用線性迴歸?

講義先對 Bikeshare 擬合一般的線性迴歸(ISLP 表 4.10、圖 4.13)。月份與時段的係數看起來合理:冬天租借少、夏天多,早上與傍晚通勤時段有尖峰。但仔細檢查會發現三個問題:

  1. 會預測出負數。Bikeshare 有 9.6% 的擬合值是負的,等於說模型在 9.6% 的時段預測出負的使用人數。
  2. 變異數不是常數。平均租借量大的時段,租借量的起伏也大。例如清晨下雨的時段平均 5.05 人、標準差 3.73;春天早上晴天的時段平均 243.59 人、標準差 131.7。線性迴歸假設誤差的變異數固定,這裡明顯不成立。
  3. 反應是整數。線性迴歸把 $Y$ 當成連續的量化變數,bikers 卻只取 0、1、2、…這些整數,線性模型不能描述這種離散的分布。

先取 log 再做線性迴歸可以嗎?

一個常見的補救是改擬合

$$\log(Y)=\beta_0+\sum_{j=1}^p\beta_jX_j+\varepsilon.$$

這樣不會預測出負的租借數,取 log 後變異數也比較穩定(ISLP 圖 4.14 右)。但它仍不理想:

計數資料為什麼要換模型 線性迴歸會給出負的預測、假設固定變異數、也沒顧到反應是整數;先取 $\log Y$ 只解決一部分,還會帶來解讀與 0 值的問題。
Poisson 迴歸改成直接描述「給定預測變數時,計數 $Y$ 的分布」,再讓這個分布的平均隨預測變數改變。

Poisson 迴歸

若隨機變數 $Y$ 只取非負整數 $0,1,2,\ldots$,而且服從 Poisson 分布,則

$$\Pr(Y=k)=\frac{e^{-\lambda}\lambda^k}{k!},\qquad k=0,1,2,\ldots,\qquad \lambda=E(Y)=\operatorname{Var}(Y)>0.$$

Poisson 分布常用來描述計數,理由很直接:它和計數一樣只取非負整數;而且平均等於變異數,平均愈大、變異也愈大,正好對上前面在 Bikeshare 看到的現象。舉例來說,若某個時段、某種天氣下的平均使用人數是 $\lambda=5$,則

$$\Pr(Y=0)=e^{-5}=0.0067,\quad \Pr(Y=1)=5e^{-5}=0.034,\quad \Pr(Y=2)=\frac{5^2e^{-5}}{2!}=0.084.$$

實際上平均人數會隨時段、月份、天氣而變,所以讓 $\lambda$ 成為預測變數的函數。給定預測變數後

$$Y\mid X\sim\operatorname{Poisson}(\lambda(X)),\qquad \log\lambda(X_1,\ldots,X_p)=\beta_0+\beta_1X_1+\cdots+\beta_pX_p.$$

等價地 $\lambda=e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}$,永遠為正,不會出現負的平均租借數。給定 $n$ 筆獨立觀測,概似是各筆 Poisson 機率的乘積,係數用最大概似估計:

$$\ell(\beta_0,\ldots,\beta_p)=\prod_{i=1}^n\frac{e^{-\lambda(x_i)}\lambda(x_i)^{y_i}}{y_i!}.$$

計數不一定真的服從 Poisson;這仍是對分布形狀與平均–變異關係的假設,要依資料檢查。平均可以不是整數,觀測值才是非負整數。

係數要用乘法解讀 因為線性的是 $\log\lambda$,所以 $X_j$ 增加一單位讓 $\lambda$ 乘上 $e^{\beta_j}$,不是加上 $\beta_j$。
ISLP 表 4.11 的例子:weathersit[cloudy/misty] 的係數是 −0.08, $e^{-0.08}=0.923$:陰天的平均租借量只有晴天的 92.3%。
這跟邏輯斯迴歸的「勝算乘上 $e^\beta$」是同一個模式:連結函數取了 log,解讀就從加法變乘法。

廣義線性模型:三個模型的共同結構

到這裡我們看過線性、邏輯斯、Poisson 三種迴歸。講義指出它們有兩個共同點:

  1. 給定 $X_1,\ldots,X_p$,$Y$ 屬於某一族分布。線性迴歸通常假設 $Y\mid X$ 是常態,邏輯斯迴歸是 Bernoulli,Poisson 迴歸是 Poisson。
  2. 都把 $Y$ 的平均寫成預測變數的函數:
$$\begin{aligned} \text{線性:}&\ E(Y\mid X)=\beta_0+\beta_1X_1+\cdots+\beta_pX_p,\\ \text{邏輯斯:}&\ E(Y\mid X)=\frac{e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}}{1+e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}},\\ \text{Poisson:}&\ E(Y\mid X)=e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}. \end{aligned}$$

三個平均式都可以用一個連結函數(link function)$\eta$ 統一:先把平均轉換,讓轉換後的平均成為預測變數的線性函數,

$$\eta\bigl(E(Y\mid X_1,\ldots,X_p)\bigr)=\beta_0+\beta_1X_1+\cdots+\beta_pX_p.$$

三者的連結函數分別是 $\eta(\mu)=\mu$、$\eta(\mu)=\log\{\mu/(1-\mu)\}$、$\eta(\mu)=\log\mu$。

模型條件分布條件平均條件變異數連結函數
Gaussian 線性迴歸$N(\mu(x),\sigma^2)$$\mu(x)=\beta_0+\beta^{\mathsf{T}}x$$\sigma^2$$\eta(\mu)=\mu$
邏輯斯迴歸$\operatorname{Bernoulli}(p(x))$$p(x)$$p(x)\{1-p(x)\}$$\eta(p)=\log\{p/(1-p)\}$
Poisson 迴歸$\operatorname{Poisson}(\lambda(x))$$\lambda(x)$$\lambda(x)$$\eta(\lambda)=\log\lambda$

指數分布族

講義接著說:Gaussian、Bernoulli、Poisson 都屬於一個更大的分布類別,叫指數分布族(exponential family)。它的成員都能寫成

$$f(y;\theta,\phi)=\exp\Bigl\{\frac{y\,\theta-b(\theta)}{a(\phi)}+c(y,\phi)\Bigr\},$$

其中 $\theta$ 是和平均有關的自然參數(natural parameter),$\phi$ 是散布參數,$b(\cdot)$、$a(\cdot)$、$c(\cdot)$ 是決定分布種類的已知函數。把三個分布改寫成這個形式:

分布自然參數 $\theta$$b(\theta)$$a(\phi)$平均 $\mu=b'(\theta)$變異數 $a(\phi)\,b''(\theta)$
常態 $N(\mu,\sigma^2)$$\mu$$\theta^2/2$$\sigma^2$$\theta$$\sigma^2$
Bernoulli$(p)$$\log\{p/(1-p)\}$$\log(1+e^\theta)$1$e^\theta/(1+e^\theta)=p$$p(1-p)$
Poisson$(\lambda)$$\log\lambda$$e^\theta$1$e^\theta=\lambda$$\lambda$

表中的自然參數正好就是三個模型使用的連結函數:$\mu$、logit、log。讓連結函數等於自然參數,$\theta=\eta(\mu)$,稱為典型連結(canonical link)。

於是有一個通用的做法:選一個指數分布族的成員來描述 $Y\mid X$,再用連結函數把平均轉換成預測變數的線性函數。依這個做法建立的迴歸,都叫廣義線性模型(generalized linear model, GLM)。線性、邏輯斯、Poisson 迴歸是其中三例;指數分布、Gamma 分布、負二項分布也是指數族成員(負二項須固定其散布參數),對應的 Gamma 迴歸與負二項迴歸也是 GLM,下方收合有說明。

為什麼選指數分布族 1. 平均決定變異數的形狀。平均 $\mu=b'(\theta)$、變異數 $a(\phi)\,b''(\theta)$ 都由同一個 $b$ 決定,所以變異數會依分布種類自動隨平均改變:Poisson 是 $\mu$,Bernoulli 是 $\mu(1-\mu)$。這正好處理線性迴歸「固定變異數」的問題。
2. 估計方程式長得一樣。使用典型連結時,每個成員的分數函數都是 $X^\mathsf{T}(y-\mu)/a(\phi)$,對數概似是 $\beta$ 的凹函數;$X$ 滿欄秩、而且有限的最大概似解存在時,這個解是唯一的。
3. 一套演算法與推論工具通用。同一個反覆加權最小平方(IRLS)可以擬合所有成員,標準誤、Wald 檢定、偏差(deviance)的算法也相同;sm.GLM() 只要換 family。
4. 涵蓋常見的反應類型。連續(常態)、二元(Bernoulli)、計數(Poisson、負二項)、正值且右偏(Gamma)都在裡面。
推導:指數分布族的平均、變異數與典型連結的估計方程式

第一步:平均是 $b'(\theta)$。密度積分為 1:$\int\exp\{[y\theta-b(\theta)]/a(\phi)+c(y,\phi)\}\,dy=1$。對 $\theta$ 微分(假設可交換微分與積分):

$$\int\frac{y-b'(\theta)}{a(\phi)}\,f(y)\,dy=0\ \Longrightarrow\ E(Y)=b'(\theta).$$

第二步:變異數是 $a(\phi)b''(\theta)$。再微分一次:

$$\int\Bigl[\frac{(y-b'(\theta))^2}{a(\phi)^2}-\frac{b''(\theta)}{a(\phi)}\Bigr]f(y)\,dy=0\ \Longrightarrow\ \operatorname{Var}(Y)=a(\phi)\,b''(\theta).$$

因為 $\mu=b'(\theta)$ 是 $\theta$ 的遞增函數,$b''(\theta)$ 可以寫成 $\mu$ 的函數 $V(\mu)$,叫變異函數(variance function):常態 $V=1$、Bernoulli $V=\mu(1-\mu)$、Poisson $V=\mu$。

第三步:典型連結的分數函數。令 $\theta_i=\eta_i=x_i^\mathsf{T}\beta$。第 $i$ 筆的對數概似是 $[y_i\theta_i-b(\theta_i)]/a(\phi)+c(y_i,\phi)$,對 $\beta$ 微分:

$$U(\beta)=\frac1{a(\phi)}\sum_{i=1}^n\bigl(y_i-b'(\theta_i)\bigr)x_i=\frac{X^\mathsf{T}(y-\mu)}{a(\phi)}.$$

邏輯斯與 Poisson 一節推出的 $X^\mathsf{T}(y-p)$、$X^\mathsf{T}(y-\mu)$ 都是這個式子的特例。

第四步:凹性。再微分得 $\nabla^2\ell=-X^\mathsf{T}WX/a(\phi)$,$W=\operatorname{diag}\{b''(\theta_i)\}$ 的對角元素就是各筆的變異函數,為正;所以對數概似對 $\beta$ 是凹函數,$X$ 滿欄秩時嚴格凹。Newton 法在這裡就是 IRLS:每一步用權重 $W$ 做一次加權最小平方。

非典型連結(例如 Gamma 迴歸常用的 log 連結)仍是 GLM,只是分數函數多一個權重項,凹性不一定成立。

延伸閱讀:講義引用的 GLM 與 Poisson 迴歸例子。

在 sm.GLM() 中,三者分別使用 sm.families.Gaussian()、sm.families.Binomial() 與 sm.families.Poisson()。單次 Bernoulli 是試驗次數為 1 的 Binomial,因此 logistic 範例使用 Binomial family。

完整實作:Poisson 迴歸(Bikeshare)

講義完整實作:用 sm.GLM() 建立三種模型

講義 04 · Poisson 迴歸(Bikeshare)
M_pois = sm.GLM(Y, X2, family=sm.families.Poisson()).fit() S_pois = summarize(M_pois) coef_month = S_pois[S_pois.index.str.contains('mnth')]['coef'] coef_month = pd.concat([coef_month, pd.Series([-coef_month.sum()], index=['mnth[Dec]'])]) coef_hr = S_pois[S_pois.index.str.contains('hr')]['coef'] coef_hr = pd.concat([coef_hr, pd.Series([-coef_hr.sum()], index=['hr[23]'])])

跟前面擬合邏輯斯迴歸的那一行比一比:family=sm.families.Binomial() 換成 family=sm.families.Poisson(),仍沿用相同的 GLM 建模介面。係數的補齊步驟(mnth[Dec] 取其餘月份的負和)是因為用了 contrast('mnth', 'sum')。這個設定讓月份係數加總為0,因此係數呈現相對於各月份平均水準的差異。Poisson模型使用對數連結,這裡的係數是在對數尺度上比較;固定其他變數後,兩月份的係數差取指數,才是預測平均租借量的比值。對照 ISLP 表 4.11 與圖 4.15。係數可對照課本表 4.11:intercept 4.12、temp 0.79、weathersit[light rain/snow] −0.58。

來源:Ch04-classification-lab-zh.ipynb
Poisson 迴歸的限制:過度分散 Poisson 模型要求條件變異數等於條件平均數。 若控制預測變數後,變異仍大於平均,這叫過度分散(overdispersion)。 ISLP 的腳註指出 Bikeshare 就有這個問題, 導致表 4.11 的 z 值被高估(看起來比實際更顯著)。
補救方式是 quasi-Poisson 或負二項迴歸——超出本章範圍,但解讀結果時仍須留意: 若條件平均模型正確且其他估計條件成立,係數仍可能一致;一般 Poisson 標準誤與 p 值則可能失準。
延伸閱讀:負二項迴歸——計數資料過度分散時

Poisson 要求條件變異數等於條件平均。實際的計數常常更分散(上面的 Bikeshare 就是),這時可以改用負二項迴歸(negative binomial regression)。它保留 log 連結 $\log\mu(x)=x^\mathsf{T}\beta$,但讓變異數比平均大:

$$\operatorname{Var}(Y\mid X=x)=\mu(x)+\frac{\mu(x)^2}{k},\qquad k>0.$$

$k$ 控制過度分散的程度:$k$ 愈小,變異比平均大得愈多;$k\to\infty$ 時退回 Poisson。一種直覺是:每個時段的平均人數本身還帶有 Poisson 沒描述到的隨機起伏(例如服從 Gamma 分布的「真實強度」),把這層起伏平均掉,就得到負二項分布。

固定 $k$ 時,負二項分布屬於指數分布族,自然參數 $\theta=\log\{\mu/(\mu+k)\}$、$b(\theta)=-k\log(1-e^\theta)$,因此是一個 GLM;實務上 $k$ 也要估計。係數的解讀和 Poisson 相同:$X_j$ 增加一單位,平均乘上 $e^{\beta_j}$。但標準誤會反映額外的變異,通常比 Poisson 的大,修正了過度分散造成 z 值被高估的問題。statsmodels 可用 sm.families.NegativeBinomial()(固定 $k$ 的 GLM)或 sm.NegativeBinomial()(同時估計散布參數)。

延伸閱讀:Gamma 迴歸——正值、右偏的連續反應

有些反應是正的連續值,而且右偏、平均愈大起伏愈大,例如保險理賠金額、等待時間、醫療費用。線性迴歸可能預測出負值,也假設固定變異數;這時可以用 Gamma 迴歸,假設 $Y\mid X$ 服從 Gamma 分布,其變異數為

$$\operatorname{Var}(Y\mid X=x)=\phi\,\mu(x)^2.$$

也就是標準差和平均成正比,變異係數(標準差 ÷ 平均)固定為 $\sqrt\phi$。改寫成指數族時,自然參數 $\theta=-1/\mu$、$b(\theta)=-\log(-\theta)$,所以典型連結是倒數 $1/\mu$(差一個負號)。倒數連結的係數不易解讀,也不保證平均為正,實務上更常用 log 連結 $\log\mu(x)=x^\mathsf{T}\beta$,係數同樣讀成「平均乘上 $e^{\beta_j}$」。

和「先取 $\log Y$ 再做線性迴歸」比:Gamma 迴歸建模的是 $\log E(Y\mid X)$,可以直接回到原尺度的平均;取 log 的線性迴歸建模的是 $E(\log Y\mid X)$,兩者一般不相等。statsmodels 用 sm.families.Gamma(link=sm.families.links.Log())。

QUIZ · Poisson 迴歸

Poisson 迴歸擬合的是 log $\lambda$ 而不是 $\lambda$ 本身。最主要的理由是什麼?

(A) 使用 log link 後,平均 $\lambda$ 是線性分數的指數,因此永遠為正,計數的平均不會被預測成負數
(B) 因為 log 轉換會讓計數資料變成常態分布,這樣才能用最小平方法
(C) 因為 log 是唯一能讓 Poisson 迴歸有封閉解的連結函數
計算細節:Poisson 估計與 GLM 指數族

Poisson 的估計與 GLM 的變異數

給定 X 後 $Y_i$ 獨立,$\mu_i=\exp(x_i^T\beta)$,Poisson 的對數概似為

$$\ell(\beta)=\sum_i\{y_ix_i^T\beta-e^{x_i^T\beta}-\log(y_i!)\},\qquad U=X^T(y-\mu),\quad I=X^T\operatorname{diag}(\mu_i)X.$$

可採 Newton/IRLS 求解。全部計數為零時,截距 MLE 趨向負無限大,沒有有限解。

GLM 建模的是 $Y\mid X$。指數分布族寫成 $\exp\{[y\theta-b(\theta)]/a(\phi)+c(y,\phi)\}$,其條件平均為 $b'(\theta)$、變異數為 $a(\phi)b''(\theta)$。Bernoulli 的變異數為 $p(1-p)$,Poisson 為 $\mu$,Gaussian 則是共同 $\sigma^{2}$;只有條件獨立不代表同變異數。過度分散時,仍可討論平均模型,但 Poisson 的一般 SE 會失準,要另選變異模型或適當穩健推論。

證明:Poisson score 與指數分布族的平均變異數

取各筆 Poisson 質量函數的對數並相加,再以 $\mu_i=e^{x_i^T\beta}$ 代入,就得到正文 ℓ。對 $\beta$ 微分分別為 $\sum_i x_i(y_i-\mu_i)$ 與 $-\sum_i\mu_ix_ix_i^T$。只有截距時 score 為 $\sum_i y_i-ne^{\beta_0}$,零點給 $e^{\hat\beta_0}=\bar y$(需平均數為正)。

對指數分布族的總機率 1 對 $\theta$ 微分,得到 $E[(Y-b'(\theta))/a(\phi)]=0$,所以 $E[Y]=b'(\theta)$。再用 score 的變異等於期望負二階導數,得到 $\operatorname{Var}(Y)/a(\phi)^2=b''(\theta)/a(\phi)$,即正文變異公式;交換微分與積分需一般正則條件。

計算細節:Bikeshare 兩種模型的係數對照

Bikeshare:同一特徵,兩種係數量尺

講義比較線性迴歸與 Poisson 迴歸:月份與時段以類別變數納入,工作日、溫度與天氣則說明不同量尺的係數解讀。以下列出講義係數的四捨五入值:

變數線性模型Poisson 的 log 平均模型
工作日1.270.01
溫度157.210.79
陰天/霧−12.89−0.08
小雨/雪−66.49−0.58
大雨/雪−109.75−0.93

例如控制模型內其他欄位後,小雨/雪在線性模型中是平均租借數少約 66.49;Poisson 模型則是平均租借數乘 $e^{-0.58}\approx0.56$。溫度的一單位須依資料原來的編碼解讀,不能直接當攝氏一度。月份/時段圖顯示冬季較低、夏季較高,以及早晚時段的高峰;線性模型的縱軸是平均租借數的加法差,Poisson 圖則是 log 平均的差,兩張圖不能直接比較係數高度。

延伸閱讀:GLM 的誤差項、標準誤與 OvO/OvR

附錄:GLM 與線性迴歸的誤差項、係數標準誤與多類別策略

GLM 建模的是平均,變異數跟著平均走。線性迴歸寫成「平均+獨立同變異的誤差」;GLM 則直接指定 $Y\mid X$ 的條件分布,平均由連結函數決定,變異數再由分布決定:Bernoulli 是 $p(1-p)$,Poisson 是 $\lambda$。所以對 Bernoulli 與 Poisson 模型,若硬要定義誤差 $Y-E(Y\mid X)$,它的變異會隨 $x$ 改變,各筆誤差也不是同分布,沒有另一個可自由估計的 $\sigma^2$;Gaussian GLM 則是例外,它就是有共同 $\sigma^2$ 的線性迴歸。講義建議把 GLM 想成在建模條件分布,而不是在「平均上加雜訊」。

係數與標準誤。logistic regression 的係數用最大概似估計,標準誤來自觀測資訊矩陣(負對數概似的 Hessian)的逆矩陣,見本頁邏輯斯一節的收合推導;LDA/QDA 的參數估計見生成式模型的收合區;一般 GLM 的推導可參考 SAGE 的 GLM 章節。

多類別:OvO 與 OvR。只能處理兩類的分類器,可用兩種策略推廣到 $K$ 類。一對其餘(one-vs-rest, OvR)訓練 $K$ 個「第 $k$ 類對其他所有類」的分類器,選分數最高的類;一對一(one-vs-one, OvO)對每一對類別各訓練一個分類器,共 $K(K-1)/2$ 個,最後投票。多類別 logistic(softmax)與 LDA 則直接處理 $K$ 類,不需要這兩種包裝。

講義補充連結:為什麼貝氏邏輯斯迴歸沒有變異數項、邏輯斯迴歸有沒有 i.i.d. 假設、Poisson 迴歸有沒有誤差項、邏輯斯迴歸中的條件分布、邏輯斯迴歸係數的標準誤、Fisher 資訊矩陣與 Hessian 的關係、SAGE:廣義線性模型章節、多類別分類與 OvO/OvR。

EXERCISES · 練習

動手驗證:教科書第 4 章精選題 教科書 · 第 4.8 節 習題

下面幾題取自 ISLP §4.8 的課後習題,題號都對得回課本。先自己想過再點選項; 每個選項都有解說;需要完整解答時,可查閱下面3個站。

EXERCISE 1 · ISLP 4.8 第 6 題(a)

某邏輯斯迴歸用 X₁ = 讀書時數、X₂ = 大學 GPA 預測「這科拿 A」,估到 $\hat{\beta}_{0}$ = −6、$\hat{\beta}_{1}$ = 0.05、$\hat{\beta}_{2}$ = 1。一個讀 40 小時、GPA 3.5 的學生拿到 A 的機率是多少?

(A) 約 −0.5
(B) 約 0.622
(C) 約 0.378
EXERCISE 2 · ISLP 4.8 第 9 題

這一題只考勝算。(a)違約勝算是 0.37 的人,實際違約的比例是多少?(b)某人違約機率 16%,她的勝算是多少?

(A) (a) 0.37 (b) 0.16
(B) (a) 約 0.27 (b) 約 0.19
(C) (a) 約 0.63 (b) 約 5.25
EXERCISE 3 · ISLP 4.8 第 8 題

假設沒有同一輸入卻有衝突標籤的重複點,且最近鄰包含自己。資料切成一半訓練一半測試。邏輯斯迴歸的訓練錯誤率 20%、測試錯誤率 30%;1-NN 的「訓練與測試平均」錯誤率是 18%。該選哪一個?

(A) 1-NN。它的平均錯誤率 18% 比邏輯斯的兩個數字都低
(B) 邏輯斯迴歸。1-NN 的訓練錯誤率是 0,所以它的測試錯誤率約 36%,比 30% 差
(C) 資訊不足,因為題目沒有分別給 1-NN 的訓練與測試錯誤率
EXERCISE 4 · ISLP 4.8 第 5 題(a)(d)

(a)Bayes 決策邊界是線性時,LDA 與 QDA 誰在訓練集上比較好?測試集呢?(d)「就算邊界是線性的,QDA 彈性夠大也擬合得下,所以測試誤差還是會比較好」——對嗎?

(A) 依本章偏差–變異直覺,常預期 QDA 的訓練誤差較低、LDA 的測試誤差較低;(d) 沒有保證
(B) 兩個集合都是 LDA 較好,因為真實邊界是線性的
(C) 兩個集合都是 QDA 較好,因為線性邊界是二次邊界的特例
重點速查與來源

分類速查表 教科書 · 第 4 章

來源:完整書目與章節定位

本頁書目與章節定位

  • 教科書:An Introduction to Statistical Learning with Applications in Python。James、Witten、Hastie、Tibshirani、Taylor,2023。原書與下載資訊
    本頁對應:教科書 · 第 4.2 節;教科書 · 第 4.3 節;教科書 · 第 4.3.4–4.3.5 節;教科書 · 第 4.4.1–4.4.3 節;教科書 · 第 4.4.2 節;教科書 · 第 4.4.3–4.4.4 節;教科書 · 第 4.5 節;教科書 · 第 4.6 節。
  • 進階參考:The Elements of Statistical Learning。Hastie、Tibshirani、Friedman,第二版。原書與下載資訊

這裡整理各模型的假設、分類規則與主要公式。

五種方法對照

方法在建模什麼邊界形狀關鍵假設參數量什麼時候選它
邏輯斯迴歸後驗 Pr(Y|X)(判別式)線性log-odds 對 x 線性(K−1)(p+1)兩類的預設選擇、要推論、X 不常態
LDA類條件 fk(x)(生成式)線性常態 + $\Sigma$ 共用Kp + p(p+1)/2 + K−1各類近常態、n 小、兩類分得很開
QDA類條件 fk(x)二次常態 + $\Sigma$k 各自Kp + K·p(p+1)/2 + K−1邊界明顯彎曲、n 大
Naive Bayes類條件 fk(x)加性(無交互項)類內各變數獨立Gaussian 版本:2Kp + K−1p 大 n 小、變數近似獨立
KNN以鄰居的類別比例估計後驗機率任意不指定參數形式;依賴距離與鄰域存全部資料邊界極度彎曲且 n ≫ p
計算細節:Default 完整數值對照

Default 的分類結果

TNFPFNTP錯誤率敏感度出處
LDA,門檻值 0.5964423252812.75%24.3%ISLP 表 4.4
LDA,門檻值 0.294322351381953.73%58.6%ISLP 表 4.5
Naive Bayes,門檻值 0.5962146244892.90%26.7%ISLP 表 4.8
Naive Bayes,門檻值 0.293393281302034.58%61.0%ISLP 表 4.9
一律預測「不違約」9667033303.33%0.0%基準錯誤率
計算細節:完整公式速查

公式速查

名稱式子備註
邏輯斯函數$p(X) = \dfrac{e^{\beta_0+\beta_1X}}{1+e^{\beta_0+\beta_1X}}$式 4.2
logit / log-odds$\log\dfrac{p(X)}{1-p(X)} = \beta_0+\beta_1X$式 4.4,線性的是這個
logit 與 logistic$\operatorname{logistic}(\operatorname{logit}(p))=p$互為反函數
多類別邏輯斯$\log\dfrac{\Pr(Y=k|x)}{\Pr(Y=K|x)} = \beta_{k0}+\sum_j\beta_{kj}x_j$式 4.12
softmax$\Pr(Y=k|x) = \dfrac{e^{\beta_{k0}+\sum_j\beta_{kj}x_j}}{\sum_l e^{\beta_{l0}+\sum_j\beta_{lj}x_j}}$式 4.13,等價寫法
Bayes 定理$\Pr(Y=k|X=x) = \dfrac{\pi_k f_k(x)}{\sum_l \pi_l f_l(x)}$式 4.15
LDA 判別函數(p = 1)$\delta_k(x) = x\dfrac{\mu_k}{\sigma^2} - \dfrac{\mu_k^2}{2\sigma^2} + \log\pi_k$式 4.18,x 的一次式
LDA 邊界(K = 2, 等先驗)$x = \dfrac{\mu_1+\mu_2}{2}$式 4.19,兩平均的中點
LDA 判別函數(p > 1)$\delta_k(x) = x^{\mathsf{T}}\Sigma^{-1}\mu_k - \tfrac12\mu_k^{\mathsf{T}}\Sigma^{-1}\mu_k + \log\pi_k$式 4.24
Mahalanobis 距離$d_M^2=(x-\mu)^{\mathsf{T}}\Sigma^{-1}(x-\mu)=\sum_i y_i^2/\lambda_i$白化後的歐氏距離
投影後變異$\operatorname{Var}(a^{\mathsf{T}}X)=a^{\mathsf{T}}\Sigma a$Fisher 的 $a^{\mathsf{T}}Wa$、$a^{\mathsf{T}}Ba$
Fisher 準則$J(a)=\dfrac{a^{\mathsf{T}}Ba}{a^{\mathsf{T}}Wa}$取 $W^{-1}B$ 最大特徵值的方向
假陽率/假陰率$\mathrm{FPR}=\dfrac{FP}{TN+FP}$,$\mathrm{FNR}=\dfrac{FN}{TP+FN}$1 − 特異度/1 − 敏感度
Precision/Recall$\dfrac{TP}{TP+FP}$,$\dfrac{TP}{TP+FN}$PR 曲線;隨機基準=盛行率
QDA 判別函數$\delta_k(x) = -\tfrac12(x-\mu_k)^{\mathsf{T}}\Sigma_k^{-1}(x-\mu_k) - \tfrac12\log|\Sigma_k| + \log\pi_k$式 4.28,x 的二次式
Naive Bayes$f_k(x) = \prod_{j=1}^{p} f_{kj}(x_j)$式 4.29,類內獨立
Poisson 迴歸$\log\lambda(X) = \beta_0+\beta_1X_1+\cdots+\beta_pX_p$式 4.36
GLM 連結函數$g\big(\mathbb{E}(Y\mid X)\big) = \eta(X) = \beta_0+\beta_1X_1+\cdots+\beta_pX_p$式 4.42
本章重點 1. 邏輯斯迴歸線性的是 log-odds,不是機率。 係數 $\beta_{1}$ 要讀成「勝算乘上 $e^{\beta_{1}}$」;同樣的 $\beta_{1}$ 對應的機率差異隨位置而變。 係數描述模型中的條件關聯,因果解讀另需研究設計與假設。
2. 生成式模型描述類別比例與類內 X 分布;判別式模型直接描述 Y 的條件分布。 LDA 的邊界形式跟邏輯斯字面上相同(式 4.32);差別是前者從常態假設推、後者最大化條件概似。 共用 $\Sigma$ 給線性邊界、各自 $\Sigma$k 給二次邊界、類內獨立給加性邊界。
3. 0.5 這個門檻值只是「總錯誤率最小」的產物。 比較分類規則時,先問「哪種錯誤比較貴」,再調門檻值, 並且把同一量尺的多數類基準與混淆矩陣一起報出來;關心少數正類時,再搭配 PR 曲線。
4. 距離要用資料自己的尺度量。 LDA 比的是 Mahalanobis 距離加上先驗;Fisher 方向同時看類間散布與投影後的類內散布 $a^{\mathsf{T}}Wa$。

講義最後附的延伸練習:Stanford STATS 191 邏輯斯迴歸範例的 Python 版本。

延伸閱讀:共變異數、特徵分解、PCA 與白化

附錄:共變異數矩陣、特徵分解與白化

本章的 Mahalanobis 距離與 Fisher 方向都用到這幾個工具;講義在附錄複習,第 6 章 PCR 的白化與非監督式學習一章的主成分分析會再完整使用。

樣本共變異數。令 $x_1,\ldots,x_n$ 是長度 $p$ 的觀測向量,先假設平均是零向量(不失一般性),把它們排成 $p\times n$ 的資料矩陣 $X=(x_1,\ldots,x_n)$。樣本共變異數為

$$S=\frac{XX^\mathsf{T}}{n-1}=\frac1{n-1}\sum_{i=1}^n x_ix_i^\mathsf{T}=\frac1{n-1}\sum_{i=1}^n(x_i-\bar x)(x_i-\bar x)^\mathsf{T}.$$

最大變異方向。找單位向量 $u_1$($u_1^\mathsf{T}u_1=1$)讓投影後的樣本變異最大。由前面的 $\operatorname{Var}(a^\mathsf{T}X)=a^\mathsf{T}\Sigma a$,投影後樣本變異是 $u_1^\mathsf{T}Su_1$(講義這頁寫成除以 $n$,和前一頁 $S$ 的 $n-1$ 只差常數,不影響最佳方向;這裡統一用 $n-1$)。加入拉格朗日乘數 $\lambda_1$:

$$\max_{u_1}\ u_1^\mathsf{T}Su_1+\lambda_1(1-u_1^\mathsf{T}u_1)\ \Longrightarrow\ Su_1=\lambda_1u_1.$$

左乘 $u_1^\mathsf{T}$ 得 $u_1^\mathsf{T}Su_1=\lambda_1$:投影變異就是特徵值,所以取最大特徵值的特徵向量,這是第一主成分方向。依序在與前面方向正交的條件下再最大化,$r$ 維時取前 $r$ 大特徵值的特徵向量 $u_1,\ldots,u_r$。

PCA 與 SVD。把特徵向量收成 $U$、特徵值收成 $\Lambda$:$S=U\Lambda U^\mathsf{T}$。若 $X=UDV^\mathsf{T}$ 是奇異值分解,

$$S=\frac{XX^\mathsf{T}}{n-1}=\frac{UDV^\mathsf{T}VDU^\mathsf{T}}{n-1}=U\,\frac{D^2}{n-1}\,U^\mathsf{T},\qquad \Lambda=\frac{D^2}{n-1},$$

主成分分數是 $U^\mathsf{T}X=DV^\mathsf{T}$。最大變異的寫法也等價於最小重建誤差:在 $U\in O_{p,r}$ 中最小化 $\sum_i\|(x_i-\bar x)-UU^\mathsf{T}(x_i-\bar x)\|^2$。實務上常先把各變數標準化再做 PCA。

兩種白化。都把資料變成單位共變異數:

  • PCA 白化:$\Lambda^{-1/2}U^\mathsf{T}X$,結果落在主成分座標,可以順便降維。
  • ZCA 白化:$U\Lambda^{-1/2}U^\mathsf{T}X=\Sigma^{-1/2}X$,再轉回原本的座標軸,結果最接近原始資料,通常不降維。本章 Mahalanobis 小節的 $\Sigma^{-1/2}$ 就是這一種。
QUIZ · 自我檢測

本章自我檢測 課程題庫

這些題目取自課程題庫,只給對錯與說明,不計分。答錯就回到對應章節重讀。

更多練習:展開課程題庫
CARDS · 關鍵詞彙卡

關鍵詞彙卡:點卡片翻面 課程詞彙

詞彙卡整理本章講義與 ISLP 第 4 章中常用的統計或機器學習專有名詞,正面附英文名稱。 先看正面的術語,試著說出定義,再翻面核對。可以洗牌複習,也可以搭配本章例子練習解釋。

複習:展開關鍵詞彙卡