① 依序閱讀:每節先讀說明;遇到互動元件時,先預測結果,再操作驗證。 ② 對照來源:章節旁標示課本章節與講義主題,正文保留公式、條件與算例;計算細節、完整實作與證明預設收合,可按需要展開。來源標記可查原教材。 ③ 檢查理解:答錯時先看回饋,再回到相關說明;標為延伸的內容可留待第二輪。 ④ 最後翻關鍵詞彙卡自測術語,並用 重點速查與來源查閱。
教科書:An Introduction to Statistical Learning with Applications in Python(ISLP);
進階參考:The Elements of Statistical Learning(ESL)。章節旁的來源標記可點到本頁書目。
第 3 章的 y 是連續的數字。現在換一種問題:y 是類別。這個人會不會違約、
今天股市漲還是跌、這封信是不是垃圾信。這叫做分類(classification)。
本章用 ISLP 的 Default 資料(n = 10000,違約率 3.33%)與課程 lab 的
Smarket 資料當主線。
講義補充連結:ISLP 的 Default 資料說明。
直覺會說:把類別編成數字,然後照第 3 章擬合線性迴歸就好。這樣做會遇到兩個問題, 這兩個問題都會影響結果的解讀。
第二點值得寫成式子。把 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,上下兩排短刻度是真實資料:上排(y = 1)是違約的人,下排(y = 0)是沒違約的人。紅線是線性迴歸的擬合,綠線是邏輯斯迴歸。紅色陰影是線性版給出負機率的區段。
下面同一批急診病人,只是換了編碼順序。線性迴歸看到的是「數字」, 所以它會擬合這些完全人造的順序與間距:
| 編碼方式 | 中風 | 藥物過量 | 癲癇 | 這個編碼隱含的假設 |
|---|---|---|---|---|
| 編碼 A | 1 | 2 | 3 | 三種病有順序,而且「中風→藥物過量」與「藥物過量→癲癇」的差距一樣大 |
| 編碼 B | 1 | 3 | 2 | 順序變成中風 < 癲癇 < 藥物過量——同一份資料,擬合出完全不同的模型 |
| 編碼 C | 2 | 1 | 3 | 又是另一個模型。哪一個才對?都不對。 |
這些類別沒有順序也沒有距離,數字編碼卻加入了順序與等距的假設。 可以用二元或多類別邏輯斯迴歸,也可以用本章後半介紹的生成式分類模型。
把二元反應編成 0/1 之後擬合線性迴歸,跟邏輯斯迴歸比,最根本的問題是什麼?
線性迴歸用預測變數描述 $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)).$$沿用前章的線性式 $\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 函數。
令 $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;兩個預測變數的邊界是直線,多個變數則是超平面。這裡指模型使用的特徵空間:若加入平方項或交互作用,邊界在原始座標中就可能彎曲。
分類規則是「$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。準完全分離時,線以外的點仍可繼續改善,線上的兩類卻無法全部分開。因此,只用最大概似法、沒有另外限制係數大小時,係數可能一直變大,卻找不到有限的最佳值。相關推導見「反應誤差、潛在變數與分離」收合區。
依據是 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$ 近似可能不可靠。
檢定 $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 檢定。
固定其他變數時,$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 誤差模型下,若 $\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$ 則還需要上述卡方與獨立結構。
Smarket 上擬合邏輯斯迴歸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
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
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
某邏輯斯迴歸模型裡 balance 的係數是 0.0055。下面哪個說法對?
給定 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 邏輯斯迴歸推論講義。
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 漸近常態條件下,其逆矩陣近似係數共變異數。若條件模型的假設不成立,此簡單逆資訊公式不一定可靠,需採用適合該資料的推論方法;不能只憑分類正確率驗證推論條件。
在正確指定且可交換微分與積分的模型,對 $\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 的 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。
把一個預測變數換成 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:學生比較不容易違約。
同一份資料,符號翻過來了。
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 章會再遇到) |
Lag1 與 Lag2Truth 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
只用 student 擬合時它的係數是正的,加入 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 順序給出的機率如下:
| 實際類別 | A | B | C | 取用的機率 |
|---|---|---|---|---|
| A | 0.7 | 0.2 | 0.1 | 0.7 |
| C | 0.1 | 0.2 | 0.7 | 0.7 |
| B | 0.2 | 0.6 | 0.2 | 0.6 |
MLE 調整所有係數,讓這個乘積最大。實際上通常最大化它的對數,避免把許多小機率直接相乘。
對 $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].$$若將所有類別寫成 $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;它延續了二分類對正確類別機率的估計原則。
令 $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}$,相除抵消,故須施加識別限制。
Logistic regression 已能把線性分數轉成類別機率,但估計是否穩定、能否利用資料的分布資訊,以及能不能看出類別間的幾何關係,是另外幾個問題。講義從這三點介紹 LDA。
前面定義的完全分離,表示一條分界就能把訓練資料中的兩類嚴格分開。沿著正確方向放大係數,模型會把已觀察到的類別機率推得更接近 1,概似也持續增加,卻可能沒有有限的最大點。這時分類標籤看似很穩,係數和標準誤卻不穩定,不能照一般情況解讀係數表。
LDA 改由各類的平均、共變異數與先驗決定邊界。只要這些量能穩定估計,兩類分得開本身不會造成 logistic 那種係數發散。不過資料太少或變數共線時,共變異數仍可能無法估穩;LDA 也有自己的限制。
LDA 假設各類內近似常態,而且共用共變異數。這相當於先限制資料雲的形狀,再用所有類的資料一起估計共同的散布;資料少時,這些限制可能讓估計較穩定。
代價是要承擔假設不合適的偏差。若類內資料明顯偏離常態,或各類散布差很多,LDA 的限制也可能妨礙預測。因此,講義說的是在假設合理時 LDA 可能更穩定,實際表現仍需和 logistic 等方法一起比較。
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$。
第一步:比較後驗機率。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$。兩者不要混稱。
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$$沿用一維的比較方式,從 $\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$。以下使用共變異數可逆的情況,推導與估計細節可在本節收合區查閱。
講義把多變數判別函數寫成距離形式。令共用共變異數 $\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 距離。
第一步:分解共變異數。$\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$;兩者給出相同的距離。
講義的二維、三類圖同時畫了兩種邊界。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 一節的互動圖會把兩種邊界畫在一起。
前面的 softmax 連結說明兩者可有相同的機率函數形式;這裡補充選擇時要檢查的條件。LDA 需要類內常態與共用共變異數,logistic 則直接限制 log-odds 的形式。
可依資料與用途比較:
兩者可能給出相近的分類結果。以 Lag1、Lag2 擬合的 LDA 混淆矩陣(35/35/76/106)跟使用相同變數的邏輯斯相同。這是這份資料上的結果。式 4.32 只說兩者的 log-odds 都是線性形式;估計係數的方法不同,並不保證預測機率、分類結果或混淆矩陣相同。
LinearDiscriminantAnalysisarray([[ 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
Truth Down Up Predicted Down 35 35 Up 76 106
scalings_ = [[-0.642], [-0.514]] 是那條線性組合的方向:它描述投影方向;實際分類還要依平均、尺度與先驗設定切點。混淆矩陣跟邏輯斯完全相同。相同混淆矩陣不代表兩個方法的機率或邊界完全相同。
Ch04-classification-lab-zh.ipynb
LDA(p > 1)到底假設了什麼?
| 要估的參數 | p = 2, K = 2 時 | p = 50, K = 2 時 | |
|---|---|---|---|
| 先驗 $\pi$k | K − 1 個 | 1 | 1 |
| 平均 $\mu$k | K × p 個 | 4 | 100 |
| 共用 $\Sigma$(LDA) | p(p+1)/2 個 | 3 | 1275 |
| 各自 $\Sigma$k(QDA) | K·p(p+1)/2 個 | 6 | 2550 |
生成式 LDA 從各類的常態分布與共用共變異數出發,計算後驗機率。 Fisher 線性判別分析先問另一個問題:把資料投影到哪個方向,最容易看出類別差異? 投影就像把資料點在一條直線上留下位置;選不同方向,原本的兩團資料可能分開,也可能重疊。
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$ 規範成某種單位長度。
若隨機向量 $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$ 個平均向量 $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 不使用類別標籤,尋找整體變異最大的方向。Fisher 則關心類別平均的差異,相對於各類內部散布有多明顯。
想像兩類的中心主要是左右分開,每一類卻都上下拉得很長。若上下的類內變異足夠大,PCA 可能優先保留上下方向;Fisher 則可能選左右方向,因為它較能區分類別。兩者回答的問題不同,所以同樣投影到二維,也不一定得到相同的圖。
Fisher 主要依靠類別平均與類內散布。如果同一類其實分成幾團,平均又剛好和另一類接近,這些摘要可能忽略重要結構。每類用一個 Gaussian 的 LDA/QDA 也有類似限制;實際資料形狀仍需檢查。
以 $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^{-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$ 奇異,須先處理共線性、降維或使用正則化,不能直接套逆矩陣公式。
由於 pooled 共變異數 $\hat\Sigma=W/(n-K)$ 只差一個倍數, LDA 分數差中的 $\hat\Sigma^{-1}(\bar x_1-\bar x_2)$ 和 Fisher 方向平行。 可以把這分成兩個動作:Fisher 決定往哪個方向看,LDA 再依平均、尺度與先驗決定在哪裡切開。因此方向相同還不等於分類完全相同,任意取投影零點當切點並不正確。固定類內分布、只改先驗時,兩類邊界的方向維持不變,但切點會移動;這也對應前面先驗滑桿的作用。
類間散布的秩滿足 $\operatorname{rank}(B)\le\min(p,K-1)$。 在白化空間中,各類中心都落在至多 K−1 維的仿射子空間。完整的距離分解見下方證明。保留完整的判別子空間,並保留同樣的尺度與先驗,便可重現原 LDA 分類。
K 大於 3 時,只畫前兩個判別方向的二維圖通常只是近似視圖;只保留前幾個方向的做法稱為降秩 LDA,細節放在上方「廣義特徵值」收合區。
Iris 有花萼長、花萼寬、花瓣長、花瓣寬四個變數;Setosa、Versicolor、Virginica 各 50 筆。 三類最多兩個判別方向,因此完整二維判別圖能保留這個 LDA 分類規則。 使用全部 150 筆擬合、經驗先驗各 1/3,訓練混淆矩陣如下(列是真實類別,欄是預測類別):
| 真實/預測 | Setosa | Versicolor | Virginica |
|---|---|---|---|
| Setosa | 50 | 0 | 0 |
| Versicolor | 0 | 48 | 2 |
| Virginica | 0 | 1 | 49 |
合計錯 3 筆(講義圖中兩個橘點、一個綠點被分錯),訓練正確率 98%,與講義一致。這是對擬合資料的回算,不能當作新花朵的測試正確率。 兩個非零廣義特徵值約 32.191929、0.285391;它們衡量類間與類內散布比,不是原始資料的 PCA 解釋變異比。
scikit-learn 的範例把 Iris 分別投影到 PCA 的前兩個主成分與 LDA 的兩個判別方向。PCA 不看品種標籤,只找整體變異最大的方向;LDA 使用標籤,找類間散布相對於類內散布最大的方向。兩張圖都能看出 Setosa 和另外兩種分得很開,但 LDA 的圖中 Versicolor 與 Virginica 的重疊較少,因為它的方向正是為了分開類別而選的。
講義補充連結:Fisher 判別與 PCA 在 Iris 上的比較。
三類、四個變數的 LDA,保留兩個判別方向一定可以解讀成什麼?
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 關係討論;它補充前章的連結。
用 0/1 表示兩類,對中心化 X 做含截距的 OLS。若類內散布 W 正定、兩類平均不同,OLS 斜率向量與 $W^{-1}(\bar x_1-\bar x_0)$ 平行,也就是 Fisher/LDA 的方向;但機率尺度、截距與先驗決定的切點仍不同,不能直接推論兩者使用 0.5 門檻就必定給相同分類。
設 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.$$乘數為正,所以方向平行;分類仍須使用相同尺度、中心與先驗。
回到二元分類。若兩種錯誤成本相同,用真實後驗機率以 0.5 為門檻,可最小化期望分類錯誤率。 這個 0.5 來自 Bayes 分類器,而 Bayes 分類器最小化的是「總」錯誤率, 這個規則給兩種錯誤相同的權重;若成本不同,應最小化相應的期望損失。
ISLP 的 Default 例子把這個問題呈現得很清楚。LDA 在 10000 筆訓練資料上的錯誤率是
2.75%,但還要檢查錯誤集中在哪一類:
回到 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 曲線:
| 真實:不違約 | 真實:違約 | 合計 | |
|---|---|---|---|
| 預測:不違約 | 9644 | 252 | 9896 |
| 預測:違約 | 23 | 81 | 104 |
| 合計 | 9667 | 333 | 10000 |
綠底=猜對(TN/TP)· 淺紅=假陽 FP(誤報)· 深紅=假陰 FN(漏掉的違約戶)
因為多數類的比例很高,一律預測多數類也能得到高正確率。假設 1000 個人裡有 10 個得病,你寫一支 return '沒病' 的程式,正確率就是 99%。它一個病人都沒抓到。
這是多數類基準正確率;對應的多數類基準錯誤率則是 1%。兩者互為 1 減對方,報告時要跟模型用同一種量尺。ISLP 用 Default 示範:基準錯誤率 3.33%,LDA 的 2.75% 只是小勝。lab 的 Caravan 例子中,只有 6% 的人買保險,KNN 的錯誤率 11.1% 比「全猜不買」的 6.7% 還差。
該看什麼?先問「哪一種錯誤比較貴」,再挑指標:
報告結果時,把同一量尺的多數類基準一起報出來。這樣才能判斷高正確率是否只是反映多數類比例。
先把四格與三個比率的分母分清楚,這是最容易搞混的地方:
ISLP 表 4.7 還給了對照的別名:假陽率就是第一型錯誤、真陽率就是檢定力(power)、精確率就是正預測值(PPV)。同一個表格,不同學科各叫一套名字。
方向相反是因為兩種錯誤的成本結構不同。
lab 的 Caravan 是第三種情況:業務員拜訪一個人有成本,所以在意的是「被我挑中的人裡有幾成真的會買」。那是精確率。把門檻值從 0.5 降到 0.25,挑出 29 個人、9 個真的買,精確率 31%,相較於這批測試資料 6.7% 的購買比例,約為 4.6 倍。
講義在 ROC 頁最後提醒:不平衡資料可以改用 PR 曲線(precision–recall curve)。它的兩個軸是
$$\text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN}.$$門檻值改變時,PR 曲線同時呈現兩件事:抓到多少正類(recall),以及報出來的正類有多可信(precision)。
假設模型報出 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: 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
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
把分類門檻值從 0.5 降到 0.2,下面哪一組變化一定會發生?
| 名稱 | 定義 | 別名 | 分母是誰 |
|---|---|---|---|
| 假陽率 FPR | FP / N | 第一型錯誤、1 − 特異度 | 真實的負類 |
| 真陽率 TPR | TP / P | 敏感度、recall、檢定力、1 − 第二型錯誤 | 真實的正類 |
| 正預測值 PPV | TP / P* | 精確率、1 − 錯誤發現比例 | 預測為正的 |
| 負預測值 NPV | TN / N* | — | 預測為負的 |
對照 ISLP 表 4.6/4.7。 N、P 是真實的負/正類總數;N*、P* 是被預測為負/正的總數。
F1不使用TN,適合某些重視正類的任務,但不能代替錯誤成本分析。分母為零時須事先規定回報方式。門檻值降低保證recall不降,卻不保證precision下降或上升,因為新納入觀測的真實正類比例也會變。
AUC可解讀為隨機抽一個正類和一個負類時,正類分數較高的機率,加上一半平手機率。若分數與類別獨立且兩類使用同一分數分布,母體AUC為0.5;有限測試集的實現值可高可低。把分數全部取反會把AUC變成1−AUC,但這個操作不能利用測試標籤來挑方向。
講義補充連結:什麼是 recall 與 precision、隨機分類器的 ROC AUC。
在虛無情境,正類分數 S+ 與負類分數 S− 為同分布的獨立抽樣,所以交換對稱性給 $P(S_+>S_-)=P(S_->S_+)$。令平手機率為 q,兩個嚴格排序的機率各為 (1−q)/2,因此 AUC=(1−q)/2+q/2=1/2。
講義先回到 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$ 改變,必須保留。
第一步:比較 $\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 推導。
在下面的圖中,每一類都是一團橢圓形的資料。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 需要更多資料的原因。
假設有 $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 在中間。這是常見的傾向,實際誰比較好仍要用獨立資料比較,不能只憑參數量斷定。
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)}.$$一維分布仍需選擇或估計。講義列出三種做法:
第一步:條件獨立讓聯合密度變成乘積。假設在第 $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.368 | 0.484 | 0.226 | $0.5\times0.368\times0.484\times0.226\approx0.02013$ |
| 第 2 類 | 0.030 | 0.130 | 0.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 上用 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 |
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
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
只有 n = 40 筆訓練資料、p = 2,而且你有理由相信真實的決策邊界是線性的。該選哪個?
把各模型的 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 的後驗比等於 $\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 的展開。
比較這三種形式,可得以下四個關係:
邏輯斯迴歸呢?多類別邏輯斯迴歸的形式跟 LDA 的第一行字面上完全一樣。 建模對象與估計方法不同:LDA 從常態假設推出來,邏輯斯迴歸直接最大化條件概似。 各類內近似常態、共用共變異數合理時,LDA 可能受益於這些限制;假設不合適時,logistic 可能較有彈性。兩者沒有固定的優劣順序。
本章的 KNN 採用另一種估計方式:它不寫任何 log-odds 的式子,直接看鄰居投票。 距離是否有意義、資料是否足夠密集,以及鄰居數和尺度的選擇,都會影響結果;它也不提供可直接解讀的迴歸係數。
講義把這些比較整理成幾條原則:
依真實決策邊界的複雜度,大致可以這樣選:線性時 LDA 與 logistic 表現好;中度非線性時 QDA 或 Naive Bayes 可能較好;更複雜時 KNN 這類無母數方法可能較好,但平滑程度(例如 K)要選對。這些是傾向,不是保證。
Default 上四個方法的 AUC 幾乎相同;上面的門檻值元件已經完整呈現 ROC 與 AUC, 可用這個元件比較不同門檻值下的表現。選擇方法時,把候選方法放進 同一個重抽樣流程,依未見資料的表現與問題的錯誤成本判斷。
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 §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.5 | QDA 最好;Naive Bayes 差 | 正好是 QDA 的假設,邊界是二次的;獨立假設被違反 |
| 5(非線性) | 不相關的常態 X;再把 X 的複雜非線性函數經 logistic 函數轉成機率,依此抽出 Y | KNN-CV 最好;QDA、Naive Bayes 略優於線性方法;KNN-1 最差 | 邊界很複雜;但平滑程度沒選對時,無母數方法仍會很差 |
| 6(非線性) | 常態,兩類的對角共變異數不同,每類只有 6 筆 | Naive Bayes 最好;QDA 稍差;LDA、logistic 差;KNN 也差 | Naive Bayes 的假設成立;共變異數不同使邊界非線性;樣本極少時 QDA 估相關的變異太大 |
下面的箱形圖依上表的文字設定重新模擬。書上沒有給出兩類平均差、t 分布自由度、情境 5 的非線性函數等細節,這裡自選合理的數值,所以只能看各方法的相對排序與分散程度,數字不會和課本圖 4.11、4.12 相同,有些情境的差距也比書上小。
六個情境合起來說明:沒有一種方法在所有情況都最好。真實邊界線性時,LDA 與 logistic 傾向表現好;中度非線性時,QDA 或 Naive Bayes 可能較好;更複雜的邊界,KNN 這類無母數方法可能較好,但平滑程度必須小心選擇。第 5 章的交叉驗證就是用來做這個選擇。
關鍵是兩類的 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 筆,正好對應等先驗。
幾個要分清楚的地方:
可以。這些方法都不限制特徵一定只能是原始的 $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/QDA 的分布假設更難成立。第二,參數量快速增加,QDA 還要對擴充後的特徵估完整共變異數,很容易過擬合。加不加、加到幾次,應該用交叉驗證比較。
ISLP §4.5.1 說「LDA 是 Naive Bayes 的特例」。這句話怎麼可能成立?LDA 明明允許變數相關、Naive Bayes 明明假設獨立。
以第 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。
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。
講義最後用計數資料,把線性迴歸與 logistic regression 連到廣義線性模型(GLM)。
前面兩種 y:連續的(第 3 章)與類別的(本章)。還有第三種常見的 y——計數。
ISLP 用 Bikeshare(華盛頓特區每小時的單車租借數,n = 8645)示範。反應 bikers 是每小時的使用人數,只取非負整數,很難歸成單純的質性或量化變數。講義用五個預測變數:
mnth:月份;hr:一天中的小時(0 到 23)。workingday:既不是週末也不是假日時為 1 的指示變數。temp:標準化後的攝氏溫度。weathersit:四個水準的質性變數,晴、霧或陰、小雨或小雪、大雨或大雪。講義補充連結:ISLP 的 Bikeshare 資料說明。
講義先對 Bikeshare 擬合一般的線性迴歸(ISLP 表 4.10、圖 4.13)。月份與時段的係數看起來合理:冬天租借少、夏天多,早上與傍晚通勤時段有尖峰。但仔細檢查會發現三個問題:
Bikeshare 有 9.6% 的擬合值是負的,等於說模型在 9.6% 的時段預測出負的使用人數。bikers 卻只取 0、1、2、…這些整數,線性模型不能描述這種離散的分布。一個常見的補救是改擬合
$$\log(Y)=\beta_0+\sum_{j=1}^p\beta_jX_j+\varepsilon.$$這樣不會預測出負的租借數,取 log 後變異數也比較穩定(ISLP 圖 4.14 右)。但它仍不理想:
若隨機變數 $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$,則
實際上平均人數會隨時段、月份、天氣而變,所以讓 $\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;這仍是對分布形狀與平均–變異關係的假設,要依資料檢查。平均可以不是整數,觀測值才是非負整數。
weathersit[cloudy/misty] 的係數是 −0.08,
$e^{-0.08}=0.923$:陰天的平均租借量只有晴天的 92.3%。到這裡我們看過線性、邏輯斯、Poisson 三種迴歸。講義指出它們有兩個共同點:
三個平均式都可以用一個連結函數(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,下方收合有說明。
sm.GLM() 只要換 family。第一步:平均是 $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。
sm.GLM() 建立三種模型跟前面擬合邏輯斯迴歸的那一行比一比: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
Bikeshare 就有這個問題,
導致表 4.11 的 z 值被高估(看起來比實際更顯著)。Poisson 要求條件變異數等於條件平均。實際的計數常常更分散(上面的 Bikeshare 就是),這時可以改用負二項迴歸(negative binomial regression)。它保留 log 連結 $\log\mu(x)=x^\mathsf{T}\beta$,但讓變異數比平均大:
$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 迴歸,假設 $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())。
Poisson 迴歸擬合的是 log $\lambda$ 而不是 $\lambda$ 本身。最主要的理由是什麼?
給定 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 質量函數的對數並相加,再以 $\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)$,即正文變異公式;交換微分與積分需一般正則條件。
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。
下面幾題取自 ISLP §4.8 的課後習題,題號都對得回課本。先自己想過再點選項; 每個選項都有解說;需要完整解答時,可查閱下面3個站。
某邏輯斯迴歸用 X₁ = 讀書時數、X₂ = 大學 GPA 預測「這科拿 A」,估到 $\hat{\beta}_{0}$ = −6、$\hat{\beta}_{1}$ = 0.05、$\hat{\beta}_{2}$ = 1。一個讀 40 小時、GPA 3.5 的學生拿到 A 的機率是多少?
這一題只考勝算。(a)違約勝算是 0.37 的人,實際違約的比例是多少?(b)某人違約機率 16%,她的勝算是多少?
假設沒有同一輸入卻有衝突標籤的重複點,且最近鄰包含自己。資料切成一半訓練一半測試。邏輯斯迴歸的訓練錯誤率 20%、測試錯誤率 30%;1-NN 的「訓練與測試平均」錯誤率是 18%。該選哪一個?
(a)Bayes 決策邊界是線性時,LDA 與 QDA 誰在訓練集上比較好?測試集呢?(d)「就算邊界是線性的,QDA 彈性夠大也擬合得下,所以測試誤差還是會比較好」——對嗎?
這裡整理各模型的假設、分類規則與主要公式。
| 方法 | 在建模什麼 | 邊界形狀 | 關鍵假設 | 參數量 | 什麼時候選它 |
|---|---|---|---|---|---|
| 邏輯斯迴歸 | 後驗 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−1 | p 大 n 小、變數近似獨立 |
| KNN | 以鄰居的類別比例估計後驗機率 | 任意 | 不指定參數形式;依賴距離與鄰域 | 存全部資料 | 邊界極度彎曲且 n ≫ p |
| TN | FP | FN | TP | 錯誤率 | 敏感度 | 出處 | |
|---|---|---|---|---|---|---|---|
| LDA,門檻值 0.5 | 9644 | 23 | 252 | 81 | 2.75% | 24.3% | ISLP 表 4.4 |
| LDA,門檻值 0.2 | 9432 | 235 | 138 | 195 | 3.73% | 58.6% | ISLP 表 4.5 |
| Naive Bayes,門檻值 0.5 | 9621 | 46 | 244 | 89 | 2.90% | 26.7% | ISLP 表 4.8 |
| Naive Bayes,門檻值 0.2 | 9339 | 328 | 130 | 203 | 4.58% | 61.0% | ISLP 表 4.9 |
| 一律預測「不違約」 | 9667 | 0 | 333 | 0 | 3.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 |
講義最後附的延伸練習:Stanford STATS 191 邏輯斯迴歸範例的 Python 版本。
本章的 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。
兩種白化。都把資料變成單位共變異數:
這些題目取自課程題庫,只給對錯與說明,不計分。答錯就回到對應章節重讀。
詞彙卡整理本章講義與 ISLP 第 4 章中常用的統計或機器學習專有名詞,正面附英文名稱。 先看正面的術語,試著說出定義,再翻面核對。可以洗牌複習,也可以搭配本章例子練習解釋。