① 依序閱讀:每節先讀說明;遇到互動元件時,先預測結果,再操作驗證。 ② 對照來源:章節旁標示課本章節與講義主題,正文保留公式、條件與算例;計算細節、完整實作與證明預設收合,可按需要展開。來源標記可查原教材。 ③ 檢查理解:答錯時先看回饋,再回到相關說明;標為延伸的內容可留待第二輪。 ④ 最後翻關鍵詞彙卡自測術語,並用 重點速查與來源查閱。標「ESL 進階」的節是課堂沒細講的延伸,第一輪可略過。
教科書:An Introduction to Statistical Learning with Applications in Python(ISLP);
進階參考:The Elements of Statistical Learning(ESL)。章節旁的來源標記可點到本頁書目。
前面十幾週,每一章都有一個 y。有了 y,就能用預測誤差評估模型: 切出測試集、算 MSE 或錯誤率、用交叉驗證挑超參數——「哪個模型比較好」有客觀答案。
這一章把 y 拿掉。手上只剩 X₁, X₂, …, Xp,問題變成: 這批資料本身有什麼結構?能不能用兩個座標軸就把 6830 個基因的樣本畫在紙上? 這 64 個細胞株是不是可以分成幾個自然的群?
麻煩的地方是:沒有現成的真實群標籤,就不能直接用分類錯誤率判斷分群好壞。 你得先說清楚想找什麼結構、用什麼證據評估。所以非監督式學習比監督式主觀得多, 它的定位通常是探索式資料分析(exploratory data analysis)—— 產出的假設仍需進一步檢驗。
這不表示不能留出資料做驗證。例如矩陣補全可以暫時遮住部分已觀測的格子, 再用補值與真值的差距評估預測能力。能評估某個目標,不等於證明群具有實質意義。
PCA 與分群都在「化簡資料」,但化簡的方式不同,這個分工先記住:
| 產出什麼 | 問的問題 | 要先決定什麼 | 本頁的節 | |
|---|---|---|---|---|
| PCA | 連續的低維座標(每筆資料一組新座標) | 哪幾個方向的變異最大? | 留幾個主成分 M | P01–P06 |
| 分群 | 離散的群標籤(每筆資料一個編號) | 哪些觀測值彼此相似? | K,或樹要切在哪 | P07–P09 |
把資料分成幾個很緊密的群,為什麼還不能說找到了真實子群?
密度估計以 $\hat p(x)$ 描述哪些觀測較常出現,例如本章的 Gaussian mixture;異常偵測可用 $-\log\hat p(x)$、到群中心的距離或低秩重建誤差作分數,再按實際容許的誤報率選門檻值。低密度不必然代表錯誤資料,高維的密度與典型區域也不能混為一談。標註成本高的資料可以先用這些方法探索,但最後仍需以領域資訊或獨立資料驗證用途。
先想一個很現實的問題:p = 10 個變數,兩兩畫散佈圖有 45 張,你看不完; 而且每一張都只含一小部分資訊。有沒有辦法用兩張圖就把大部分結構看完?
PCA 重新選擇座標軸,尋找資料變異最大的那個方向。 第一主成分是所有標準化線性組合裡樣本變異數最大的那一個:
$$Z_1 = \phi_{11} X_1 + \phi_{21} X_2 + \cdots + \phi_{p1} X_p, \qquad \text{s.t.} \sum_{j=1}^{p} \phi_{j1}^2 = 1$$係數稱為負荷量,合起來描述投影軸;把每筆置中資料投影到這個軸,所得座標稱為得分。限制方向長度為 1,才能公平比較不同方向的變異。
那些係數 $\phi_{j1}$ 叫做負荷量(loading),合起來是負荷向量 $\phi_1$。 為什麼要限制平方和等於 1?因為不限制的話,把係數全部乘 100 變異數就變 10000 倍, 「最大」就沒有意義了。把資料先置中(每欄減掉平均)之後,要解的是
$$\max_{\phi_{11},\dots,\phi_{p1}} \left\{ \frac{1}{n}\sum_{i=1}^{n} \Big(\sum_{j=1}^{p} \phi_{j1} x_{ij}\Big)^2 \right\} \quad \text{s.t.} \quad \sum_{j=1}^{p} \phi_{j1}^2 = 1$$括號裡的東西就是第 i 筆資料投影到 $\phi_1$ 上的值,叫做得分(score) $z_{i1}$。因為資料置中過,得分的平均是 0,所以上式就是得分的樣本變異數。 負荷向量是新座標軸的方向,得分是每筆資料在新座標軸上的位置。請區分負荷向量與得分。
以下 $X\in\mathbb R^{n\times p}$ 的每欄已置中,$n>1$,$S=X^TX/(n-1)$。第 $m$ 個方向需解 $\max_v v^TSv$,限制 $v^Tv=1$ 且與前面方向正交。依特徵值由大到小排列 $Sv_m=\lambda_mv_m$,得分 $z_m=Xv_m$ 的變異是 $\lambda_m$,不同得分不相關。
有非零變異的主成分數為 $r=\operatorname{rank}(X)\le\min(n-1,p)$。相異特徵值的方向僅差正負號;重複特徵值的特徵空間內,可以旋轉成不同的正交基底。若在第 $M$ 與第 $M+1$ 個特徵值之間有間隔,前 $M$ 維子空間唯一;若截斷點落在重根中,最佳子空間也可能不唯一。
來源:PCA 的形式化定義與證明。
限制單位長度的 Lagrangian 是 $\mathcal L(v,\lambda)=v^TSv-\lambda(v^Tv-1)$。微分為 $2Sv-2\lambda v=0$,所以駐點滿足特徵方程。駐點不全是最大值;令 $S=V\Lambda V^T$、$v=Va$、$\sum_ja_j^2=1$,則 $v^TSv=\sum_j\lambda_ja_j^2\le\lambda_1$,取第一特徵向量達到上界。限制與前 $m-1$ 個方向正交後,同理得到第 $m$ 個特徵值。
得分共變異數為 $z_j^Tz_k/(n-1)=v_j^TSv_k=\lambda_kv_j^Tv_k$,在 $j\ne k$ 時為 0。反過來,和正特徵值方向的得分不相關才迫使方向正交;零變異得分不能用相關係數反推方向。置中使 $\mathbf1^TX=0$,所以列空間至多 $n-1$ 維,亦至多 $p$ 維,證得秩上限。
每列是一筆觀測、每欄是一個特徵時,$X$ 是 $n\times p$,一個 loading $v$ 有 $p$ 個係數,投影 $z=Xv$ 則有 $n$ 個得分。USArrests 有 50 個州、4 個變數,因此每個方向有 4 個負荷量,每個方向上有 50 個州的得分。得分對應觀測,負荷量對應特徵,兩者的長度與用途不同。
置中後 $\operatorname{Var}(Xv)=v^TSv$,限制 $v^Tv=1$ 讓不同方向在同一長度下比較。把 $v$ 展開成共變異數矩陣的正交特徵向量 $v=\sum_j a_je_j$,就有 $v^TSv=\sum_j a_j^2\lambda_j$ 且 $\sum_j a_j^2=1$;這是特徵值的加權平均,最大值自然是最大的特徵值。第二方向再限制與第一方向正交,依序找下一個。
特徵向量正交給 $\operatorname{Cov}(Xv_j,Xv_k)=v_j^TSv_k=0$。這是「不相關」,不必然是統計獨立;要推到獨立還需要額外分布條件,例如聯合 Gaussian。置中使各欄和為零,所以 rank 最多 $n-1$;若另有線性相依,實際非零主成分還會更少。
若某特徵值重複,對應空間中的任一正交基都可用。此時不唯一的不只正負號,整個重複特徵值子空間都可旋轉;仍可比較該空間的投影與累積解釋變異。
下面這個元件就是把「找最大變異方向」這件事用手轉一遍:拖動角度,看投影後的變異數怎麼變。
找完第一主成分之後,第二主成分是所有跟 $Z_1$ 不相關的線性組合裡變異最大的那一個。 在第一主成分變異為正時,「與 $Z_1$ 不相關」等價於「方向 $\phi_2$ 與 $\phi_1$ 垂直」, 所以有非零變異的主成分方向互相垂直,總共最多有 $\min(n-1,\,p)$ 個。
Ch12-unsup-lab-zh.ipynb
USArrests 的 pcaUS.components_ 是 4×4、scores 是 50×4。哪個描述正確?
算完 PCA 之後,最常畫的圖是 biplot(雙標圖): 同一張圖上同時放得分(點)與負荷量(箭頭)。 ISLP 圖 12.1 就是 USArrests 的 biplot——50 個州當點,4 個變數當箭頭。
可以先從三個角度讀圖:
下面這個 biplot 用的是課本的資料。切換標準化設定,觀察它的影響: 按下「未標準化」,整張圖會變形。
Assault 是「每十萬人的件數」,數字本來就大得多。不標準化的話 PC1 幾乎等於 Assault 自己。
USArrests 的 PC1 對三個犯罪變數的負荷約為 0.54、0.58、0.54,PC2 對 UrbanPop 的負荷約為 0.87。哪個解讀合理?
圖上的州是觀測;箭頭是變數。觀測點的 PC1/PC2 座標是得分,描述每個州在兩個方向的位置;箭頭的座標由負荷量決定,描述原變數如何組成這兩個方向。講義的圖用兩套刻度呈現,因此不能直接把箭頭尖端與州名的距離當成統計距離。
PC1 的三個犯罪變數負荷方向相近,可以理解為共同的犯罪強度方向;PC2 額外表達城市人口比例與犯罪變數之間的差異。沿某一箭頭方向的州,通常在該變數的標準化值較高,但這是前兩個方向的投影摘要,不是每一欄原值的完整重建。
$$\hat x_{ij}^{(2)}=z_{i1}v_{j1}+z_{i2}v_{j2}.$$要回到原單位,還要乘回該欄標準差並加上平均值。只有在採用合適的 biplot 縮放且兩維保留足夠資訊時,箭頭角度才可近似反映相關性;不能忽略圖的縮放方式與未顯示主成分。
Lab 對各欄先標準化,再用 fit_transform 得得分、用 components_.T 讀負荷量。軟體可能把某個方向整體翻號,應同時翻轉得分及箭頭來比較,不能只翻一邊。
資料:USArrests 的欄位意義。
到目前為止主成分的定義是「變異最大的方向」。現在換一個完全不同的角度看它, 兩種定義會得到相同的主成分。
第一主成分的負荷向量所定義的那條直線,是 p 維空間中離所有資料點平均平方距離最近 的那條線。前兩個主成分張出的平面,是離所有資料點最近的那個平面(ISLP 圖 12.2 左)。 前 M 個主成分張出的是最近的 M 維超平面。
對置中矩陣,前 M 個主成分保留的變異越多,重建誤差就越小:
$$\text{總平方和}=\text{保留的平方和}+\text{重建誤差平方和}.$$這把「投影後散得最開」連到「用低維資料近似得最好」,也為下一節的 PVE 提供解讀。
把「最近」寫成最佳化問題就清楚了。置中後的資料矩陣 $\mathbf{X}$, 在所有 $x_{ij} \approx \sum_{m=1}^{M} a_{im} b_{jm}$ 這種形式的近似裡, 找殘差平方和最小的那一組:
$$\min_{A \in \mathbb{R}^{n\times M},\, B \in \mathbb{R}^{p\times M}} \left\{ \sum_{j=1}^{p} \sum_{i=1}^{n} \Big( x_{ij} - \sum_{m=1}^{M} a_{im} b_{jm} \Big)^2 \right\}$$可選一組最優解,令 $\hat a_{im}$ 為得分 $z_{im}$、$\hat b_{jm}$ 為負荷量 $\phi_{jm}$;一般因子表示並不唯一。 也就是說:「變異最大」與「近似誤差最小」是同一個問題的兩種寫法。 ISLP 式 12.11 給出這個分解:
$$\underbrace{\sum_{j=1}^{p} \frac{1}{n} \sum_{i=1}^{n} x_{ij}^2}_{\text{資料的總變異}} = \underbrace{\sum_{m=1}^{M} \frac{1}{n} \sum_{i=1}^{n} z_{im}^2}_{\text{前 } M \text{ 個主成分的變異}} + \underbrace{\frac{1}{n} \sum_{j=1}^{p} \sum_{i=1}^{n} \Big( x_{ij} - \sum_{m=1}^{M} z_{im}\phi_{jm} \Big)^2}_{M \text{ 維近似的 MSE}}$$左邊是固定的,所以中間變大就等於右邊變小。這也是為什麼下一節的 PVE 可以直接讀成「近似的 $R^2$」。
若 $X=UDV^T$,奇異值 $d_1\ge\cdots\ge d_r>0$,最佳 rank 不超過 $M$ 的近似可取 $X_M=U_MD_MV_M^T=XV_MV_M^T$,平方誤差為 $\sum_{j>M}d_j^2$。這個近似的一種因子表示是得分 $A=U_MD_M$ 與負荷量 $B=V_M$;但任意可逆矩陣 $R$ 給出的 $AR$、$BR^{-T}$ 也有相同乘積,不能說不加限制的因子最佳化只會產生那一組 PCA 因子。
若矩陣全為 0,總平方和為 0,PVE 是 $0/0$,不應硬報成 0 或 1。大型資料可用 randomized SVD:取隨機測試矩陣 $\Omega$,對 $X\Omega$ 正交化得 $Q$,再分解較小的 $Q^TX$,最後把左因子乘回 $Q$;這是近似法,需記錄種子、過取樣與誤差。
對任意正交的 $V_M$,分解 $X=XV_MV_M^T+X(I-V_MV_M^T)$,兩部分 Frobenius 內積為 0。因此 $\|X-XV_MV_M^T\|_F^2=\|X\|_F^2-\|XV_M\|_F^2$;最大化投影變異即最小化重建誤差。任意 rank-$M$ 矩陣 $Y$ 的行空間位於某個至多 $M$ 維空間 $W$,對固定 $W$ 最小誤差的矩陣是 $X$ 到 $W$ 的正交投影。再在所有 $W$ 中最大化保留的平方長度,特徵值排序給出前 $M$ 個右奇異向量,誤差便是其餘奇異值平方和。最後除以 $\|X\|_F^2=\sum_jd_j^2$,得到累積 PVE 與 $1-\operatorname{RSS}_M/\operatorname{TSS}$ 的等價式。
把中心化矩陣寫成 $X=UDV^T$。$V$ 的欄是特徵方向,$XV=UD$ 是得分,$D$ 的非負對角元素是奇異值。numpy 的第三個回傳值其實是 $V^T$;Lab 把它命名為 V,所以讀程式時必須以運算形狀判斷,不能只靠變數名稱。
取前 $M$ 個方向,重建 $X_M=U_MD_MV_M^T$;因為不同奇異方向正交,捨棄第 $M+1$ 個以後的方向帶來平方誤差 $\sum_{m>M}d_m^2$。因此增加 rank 會降低完整資料上的重建誤差,但沒有自動告訴我們哪個方向是訊號、哪個是雜訊。
講義把共變異數除以 $n$,sklearn 的 explained_variance_ 則使用 $n-1$。兩者的特徵向量相同,特徵值相差比例 $n/(n-1)$;解釋變異比例不受共同分母影響。比較來源時應先對齊分母,而不是把正常尺度差異判成錯誤。
資料很大時,randomized SVD 先以隨機投影抓住主要子空間,再在較小矩陣做分解;oversampling 與 power iteration 改善近似品質。它是在近似主要奇異方向,不能宣稱任意近似設定都得到精確 SVD。
numpy.linalg.svd 比自己算 $\mathbf{X}^{\mathsf T}\mathbf{X}$ 的特徵向量穩定得多,
而且下一節的矩陣補全就是靠它一步步逼近的。
Ch12-unsup-lab-zh.ipynb
因為它們通往不同的用途。
「變異最大」的說法讓你解讀主成分:負荷量告訴你這個方向由哪些變數組成,PC1 是「整體犯罪率」、PC2 是「都市化」這種話就是從這裡讀出來的。
「近似最好」的說法讓你把 PCA 當工具用。既然前 M 個主成分是最佳的秩 M 近似,那它就可以拿來壓縮(將 p 個原值壓成 M 個得分)、去雜訊(NCI60 那種資料常先取前幾個主成分再分群)、以及最直接的——填補缺失值。下一節 P06 的矩陣補全整個建立在這個解釋上,從「變異最大」那邊完全看不出來要怎麼做。
式 12.11 說「總變異 = 前 M 個主成分的變異 + M 維近似的 MSE」。由此可以推出什麼?
壓到 2 維畫出來很方便,但丟掉了多少東西?這個問題的答案叫做 解釋變異比例(proportion of variance explained, PVE)。
置中後資料的總變異是 $\sum_{j=1}^{p} \frac{1}{n}\sum_{i=1}^{n} x_{ij}^2$, 第 m 個主成分的變異是 $\frac{1}{n}\sum_{i=1}^{n} z_{im}^2$,所以
$$\mathrm{PVE}_m = \frac{\sum_{i=1}^{n} z_{im}^2}{\sum_{j=1}^{p}\sum_{i=1}^{n} x_{ij}^2}, \qquad \mathrm{PVE}_{1:M} = \sum_{m=1}^{M} \mathrm{PVE}_m = 1 - \frac{\mathrm{RSS}_M}{\mathrm{TSS}}$$所有 $\min(n-1,p)$ 個 PVE 加起來剛好是 1。累積 PVE 就是「前 M 個主成分留住了幾成」, 由上一節的式 12.11,它同時也是「用前 M 個主成分近似資料矩陣」的 $R^2$。
array([0.62006039, 0.24744129, 0.0891408 , 0.04335752])
Ch12-unsup-lab-zh.ipynb
USArrests 的四個 PVE 是 0.620、0.247、0.089、0.043。如果我只留前兩個主成分,那 50×4 的資料矩陣被近似得多好?
描述資料可用累積 PVE 和 scree plot 提供讀圖依據;低變異方向仍可能含預測訊號,所以不能只靠 PVE 替監督式任務選維度。若目的是預測新觀測中的缺失欄位,可遮住格子做交叉驗證;若只是把完整新資料投影再重建,加入更多方向通常仍會降低重建誤差,這個目標不會自動懲罰過大的 rank。
高維 PCA 的資訊準則還需一個對訊號特徵值與噪聲的模型。講義連結的廣義資訊準則研究在高維條件下調整 rank 選擇懲罰;不能把普通回歸的 AIC 自由度原封不動套入。這是額外的建模選擇,沒有「PVE 過某固定百分比就一定正確」的規則。
若只想描述資料,可先看每個方向的 PVE、累積 PVE 與 scree plot 的轉折,再檢查負荷量是否有可解釋的意義。若目的是分類或迴歸,rank 應依下游驗證誤差選;小變異方向可能含關鍵的回應訊號。
若目的是補未見格子,則可以在原本已觀測的格子中留出一部分,只用其餘格子擬合,再計算留出格子的預測誤差。完整新資料的重建誤差會隨 rank 增加而下降,光做這種評分常把 rank 推到最大,並不能取代「遮住格子後預測」的問題。
講義連結的高維資訊準則針對特徵值的訊號/雜訊模型設計懲罰;它不是把迴歸 AIC 的參數數量直接搬到 PCA。若沒有採用該論文的模型條件,就不能只用其公式宣稱選到真實維度。
這一節討論兩個實務問題:做 PCA 之前要不要標準化, 以及算出來的符號可以信到什麼程度。
PCA 找的是「變異最大」的方向。問題是變異數跟單位有關: USArrests 的 Assault 是「每十萬人的件數」,變異數 6945;Murder 也是每十萬人,但只有 18.97。 不標準化的話,第一主成分幾乎整支押在 Assault 上(負荷量 0.995), 其他三個變數等於沒參與。回到 P02 那個 biplot 元件把 toggle 切到「未標準化」就看得到。
更糟的是這個結果是任意的。如果 Assault 改成「每一百人的件數」, 數值全部除以 1000,變異數變成原來的百萬分之一,它就從主宰者變成陪襯。 沒有人希望分析結論取決於別人當年怎麼選單位,所以慣例是先標準化。
StandardScaler(),但也在旁邊註明
「這裡其實可以合理主張不要縮放」。要依分析目的決定是否縮放。
| 情況 | 要不要標準化 | 為什麼 |
|---|---|---|
| 變數單位不同(USArrests、房價資料) | 要 | 否則數值變異大的欄位可能主導主成分 |
| 同單位但變異差很多 | 看情況 | 先判斷變異差異是要保留的訊號,還是需要調整的權重 |
| 同單位、尺度差異有意義(基因表現、畫素) | 看情況 | 縮放會把真實的變異差異抹掉 |
| 已經是比例或分數(0–1 之間) | 看情況 | 相同範圍不保證相同變異,依分析目的決定 |
| 變數是 0/1 指示變數 | 小心 | 標準化會放大罕見類別,考慮別的方法 |
負荷向量描述的是一個方向。把 $\phi_1$ 整支乘上 $-1$, 它指的還是同一條直線,只是箭頭朝反邊;投影後的變異數 $\mathrm{Var}(-Z) = \mathrm{Var}(Z)$ 也沒變。所以最佳化問題有兩個一樣好的解,套件挑哪一個是實作細節。
關鍵在於要一起翻:近似式用的是乘積 $z_{im}\phi_{jm}$,
兩個都乘 $-1$ 乘積不變,重建出來的資料一模一樣。lab 範例 就是這樣做的
(scores[:,1] *= -1 與 components_[1] *= -1 成對出現)。
因為最佳化問題只約束了「方向」與「長度」,沒有約束「朝哪一邊」。$\phi_1$ 與 $-\phi_1$ 定義同一條直線;投影後 $Z_1$ 與 $-Z_1$ 的變異數相同,所以兩者都是最佳解,套件回傳哪一個取決於底層的 LAPACK 實作。同一份資料用 numpy.linalg.svd 與 sklearn 的 PCA() 跑,就可能拿到整組相反的符號(lab 範例 與 51 就差在這裡)。
不影響任何實質結論,但會影響你「怎麼說」。如果 PC1 的負荷量全是正的,你會說「PC1 高 = 犯罪率高」;符號翻掉之後,同一個主成分要說成「PC1 高 = 犯罪率低」。得分也一起翻,所以哪些州靠在一起、哪些州離得遠——完全一樣。
實務上的兩個建議:(1)自己定一個約定並寫在報告裡,例如「讓負荷量總和為正」或「讓某個指標變數的負荷量為正」;(2)比較兩次分析的結果時,先對齊符號再比,不然會誤以為結果不穩定。
因為 PCA 的目標函數是變異數,而變異數的大小跟單位有關。USArrests 的 Assault 變異數 6945、Murder 只有 18.97,不標準化的話 PC1 的負荷量在 Assault 上是 0.995、在 Murder 上是 0.042——第一主成分退化成「Assault 換個名字」,PCA 什麼都沒做。
更關鍵的是:這個結果會隨著單位改變。把 Assault 的單位從「每十萬人」改成「每百人」,它的變異數變成百萬分之一,立刻讓位給 UrbanPop。結論不該取決於資料當初是用什麼單位記錄的,所以這裡先標準化,讓各變數以相同尺度參與分析。
不該標準化的情形:變數同單位、而且變異數的差異本身是你想保留的資訊。基因表現量、影像的畫素值、同一種感測器的多個通道都屬於這一類。即使每欄都在 0 到 1 之間,變異數也可能不同;是否標準化仍要看這些變異差異是否有分析上的意義,不能只看範圍。判斷的準則很簡單:問自己「如果某一欄乘上 1000,我希望結論改變嗎?」不希望就標準化。
同一份 USArrests,A 同學算出 PC1 的負荷量是 [0.54, 0.58, 0.28, 0.54],B 同學算出 [-0.54, -0.58, -0.28, -0.54]。發生了什麼事?
本站採每列一筆觀察的中心化矩陣 $X\in\mathbb R^{n\times p}$。若 $X=UDV^T$,則樣本共變異數 $S=X^TX/(n-1)=V\Lambda V^T$,其中 $\Lambda=D^2/(n-1)$。主成分方向是 $V$ 的欄,得分為 $XV=UD$;最大化 $v^TSv$ 且限制 $v^Tv=1$,便得到 $Sv=\lambda v$。講義也使用每欄一筆觀察的排列;對照公式時要連同矩陣一起轉置。
保留正特徵值方向後,白化得分 $Z=XV\Lambda^{-1/2}$ 的樣本共變異數為單位矩陣。ZCA 白化再乘上 $V^T$ 回到原特徵座標;保留全部正秩方向且滿秩時為 $XV\Lambda^{-1/2}V^T$。白化會把低變異方向放大,因此小特徵值可能放大雜訊;普通 PCR 不需要白化,也不能把白化當成保證改善預測的步驟。
只取 $r$ 個正特徵值方向,$Z=XV_r\Lambda_r^{-1/2}$ 滿足 $Z^TZ/(n-1)=I_r$。ZCA 乘回 $V_r^T$ 後回到原座標;若 $r<p$,其共變異數是投影矩陣 $V_rV_r^T$,不是 $I_p$。零特徵值不能取倒平方根,小特徵值則可截斷或正則化,並明說這不再是所有方向的精確白化。
$\operatorname{Cov}(Z)=\Lambda_r^{-1/2}V_r^T\{X^TX/(n-1)\}V_r\Lambda_r^{-1/2}=I_r$。ZCA 結果 $ZV_r^T$ 的共變異數為 $V_rI_rV_r^T$;只有完整滿秩且 $V_r$ 為方形正交矩陣時才是 $I_p$。這區分了去相關、等變異與原座標表示。
標準化逐欄減平均、除標準差,讓每個原變數有單位變異,但不會消除變數間的相關。PCA 白化先旋轉到主成分,再以特徵值平方根縮放每個非零方向,所以得分座標的共變異數成為單位矩陣。ZCA 則把這些白化座標旋轉回原座標系;通常保留原特徵數,卻已改變各方向尺度。
白化會放大小特徵值方向,連同其中的雜訊也可能放大。特徵值為零時不能直接取倒數;需限制在非零子空間或加入明確的正則化。維度縮減後再做 ZCA 所得矩陣的原座標共變異數是投影矩陣,不是完整的 $p\times p$ 單位矩陣。
USArrests 的欄位單位與尺度不同,因此標準化有明確理由;NCI60 的基因表現有共同量測單位,是否標準化則改變分析目標:標準化會讓低變異基因與高變異基因同等加權,並非一律較好。
閱讀:PCA 的 whiten 介面。
手上的資料矩陣有缺失值,怎麼辦?兩個常見的做法都不太好: 整列刪掉太浪費(也不現實——缺一格就丟掉一整個州), 用該欄的平均填補則完全沒有用到變數之間的相關。
P03 說過前 M 個主成分是資料矩陣的最佳秩 M 近似。 那反過來想:如果 $x_{ij} \approx \sum_m z_{im}\phi_{jm}$, 那缺掉的那一格也可以用這個式子算出來。 這就是矩陣補全(matrix completion)。
問題是要算主成分得先有完整的矩陣,要有完整的矩陣得先補值——雞生蛋蛋生雞。 ISLP 的解法是輪流做(演算法 12.1):先用欄平均粗填, 算主成分、用低秩近似覆蓋缺失格、再算主成分…直到目標函數不再下降。 只在觀測到的格子上算誤差:
$$\min_{A,B} \sum_{(i,j)\in\mathcal{O}} \Big( x_{ij} - \sum_{m=1}^{M} a_{im} b_{jm} \Big)^2$$$\mathcal{O}$ 是觀測到的位置集合。跟 P03 的式子唯一的差別就是求和範圍, 這個目標需要用迭代求解。
Ch12-unsup-lab-zh.ipynb
Ch12-unsup-lab-zh.ipynb
Ch12-unsup-lab-zh.ipynb
演算法 12.1 的步驟 2(b) 只把缺失的格子換成低秩近似值,觀測到的格子保持原值。為什麼不乾脆全部換掉?
把實際觀測集合分成擬合集合與保留格子,僅用擬合格子的資料做中心化、初始化和迭代,以保留格子 MSE 選 rank。若先用全部資料算完整 PCA 再遮值,就已用到要預測的資訊。每列每欄都需要足夠的觀測;整列缺失或觀測圖不連通時,低秩假設本身不足以識別答案。
令 $L^{(t)}$ 為目前 rank-$M$ 估計,構造 $Y^{(t)}$:觀測格用真值 $X$,缺失格用 $L^{(t)}$。截斷 SVD 給出 $L^{(t+1)}=\arg\min_{\operatorname{rank}(L)\le M}\|Y^{(t)}-L\|_F^2$。舊估計的缺失格損失為 0,因此 $\|Y^{(t)}-L^{(t)}\|_F^2=\sum_{(i,j)\in\mathcal O}(X_{ij}-L^{(t)}_{ij})^2$。新估計的觀測格損失不超過其全矩陣損失,後者又不超過舊估計損失,證得觀測格目標不增。這不保證找出全域解,也不保證缺失格預測正確。
Lab 從已標準化、置中的 USArrests_scaled 開始,再挖出缺失格。low_rank() 每次直接對當前填補矩陣做 SVD,保留前 M 項;它沒有逐輪重新算均值、置中或加回均值。迭代時觀測格永遠保留原值,只有缺失格由目前的低秩估計覆蓋,因此觀測值仍能約束下一輪的方向。
講義用 50 州、4 欄的資料,在 20 個州各挖掉一格,共 20/200=10% 缺失,取一個主成分。100 次抽樣得到的平均相關約 $0.63$、標準差 $0.11$,是講義的重複抽樣摘要;以完整資料的主成分估計被遮格子得到約 $0.79$,已使用真值資訊,不能當成可部署的公平比較。
一次 Lab 的相關係數不應要求恰等於講義的 100 次平均。補值仍需檢查絕對誤差與偏差,因為相關高也可能整體偏移。推薦系統裡沒有評分通常還與使用者選擇有關,不是隨機漏測;低秩模式有用,但缺失機制與冷啟動使用者/項目仍要另外處理。
K-means 希望每個群內的點靠近自己的群心,常用的目標是
$$\sum_k\sum_{i\in C_k}\|x_i-\mu_k\|^2.$$反覆做兩步:先把點指派給最近群心,再把每群中心更新為平均。不同初始值可能得到不同的最終分群。
換一種化簡方式:不找低維座標,直接把資料分成 K 群。 好的分群是「群內盡量像」,寫成式子就是把群內變異的總和最小化:
$$\min_{C_1,\dots,C_K} \left\{ \sum_{k=1}^{K} W(C_k) \right\}, \qquad W(C_k) = \frac{1}{|C_k|} \sum_{i,i' \in C_k} \sum_{j=1}^{p} (x_{ij} - x_{i'j})^2$$$W(C_k)$ 是第 k 群內所有兩點之間的平方歐氏距離總和除以群的大小。 看起來要算 $|C_k|^2$ 個距離,但 ISLP 式 12.18 給了一個很好用的恆等式:
$$\frac{1}{|C_k|} \sum_{i,i' \in C_k} \sum_{j=1}^{p} (x_{ij} - x_{i'j})^2 = 2 \sum_{i \in C_k} \sum_{j=1}^{p} (x_{ij} - \bar x_{kj})^2$$右邊只需要算每個點到群心的距離。這個恆等式能減少計算量, 也說明了演算法為何反覆更新群心與各點的分組:
完整演算法須維持每群非空,並固定同距時的處理規則,例如優先保留原指派。空群可重新初始化,這是額外步驟,需重新核對目標。沒有 ties 的非停止步驟嚴格改善目標,而指派組合有限,所以會停止;單純說「目標不增」尚不足以排除等值循環。停止的分割是交替更新的固定點,並非保證全域最小。
對非空群 $C$,設 $m=|C|$。展開兩兩平方距離,$\sum_{i,j\in C}\|x_i-x_j\|^2=2m\sum_i\|x_i\|^2-2\|\sum_ix_i\|^2=2m\sum_i\|x_i-\bar x_C\|^2$。除以 $m$ 即得正文恆等式。固定指派時,$\sum_{i\in C}\|x_i-c\|^2=\sum_i\|x_i-\bar x_C\|^2+m\|c-\bar x_C\|^2$,所以取平均最優。固定中心時,把每點指派給最近中心逐項最小化距離;兩步都不增。此結論假設更新中群仍非空,並以一致方式處理同距情況。
固定中心時,每筆資料選最近中心會降低它對平方和的貢獻;固定指派時,一群的平均是平方距離總和最小的位置。輪流做這兩件事可使目標不增加,直到指派穩定或改善小於停止門檻,但只能保證局部解。
Lab 的 n_init=20 代表以多組初始化重新執行,再選群內平方和較小的一次。它降低落入差解的風險,沒有保證全域最小。群的編號只是名稱:兩次結果若只交換 0/1,分群實際相同,不能把編號不一致當成不穩定。
K-means 適合用平方歐氏距離定義的緊密群。細長、不同密度或不同大小的真實群,可能被它切開或併在一起。$K$ 增加會降低訓練群內平方和,因此不能只選平方和最小的 $K$;需要領域目標、結構穩定性與其他驗證。
閱讀:K-means 與初始化。
Ch12-unsup-lab-zh.ipynb
因為演算法 12.2 的第 1 步是隨機指派。之後的每一步都只保證目標函數下降,不保證下降到全域最小。它會滑進離初始位置最近的那個「盆地」就停住。把 n 筆資料分成 K 群大約有 $K^n$ 種方式,要真的找到全域最小得全部列舉,這不可能,所以我們接受局部極小。
ISLP 圖 12.9 把同一份資料跑六次,得到三個不同的局部極小:目標函數 235.8(四次)、320.9、310.9。其中 235.8 明顯把三群分得最開。重點是:如果你只跑一次,剛好抽到 320.9 那組初值,程式不會告訴你有問題。
標準做法就是多重初始化:跑很多組不同的初值,回報目標函數最小的那一次。scikit-learn 的 n_init 就是這件事(sklearn 1.6.1 預設為 auto,k-means++ 執行 1 次、random 執行 10 次;Lab 明設 20 或 50)。另外一定要設 random_state——上面那張元件的「換初始值」按鈕,按幾次就會看到這個現象。
為什麼 K-means 的群內平方和一定會單調下降,最後一定會停?
K-means 有個明顯的麻煩:你得先決定 K。 階層式分群不必。它一次把 1 到 n 群的所有結果都算出來,畫成一棵樹, 你要幾群就切在對應的高度。
凝聚式(agglomerative,也叫 bottom-up)的做法如下:
讀樹狀圖(dendrogram)時,要區分合併高度與水平位置:
剩下的問題是:兩群之間的相異度怎麼定?這叫做 連結方式(linkage),完整定義可在本節的查閱表展開。 換 linkage,樹的形狀會整個變。這是這一節最重要的實驗。
| Linkage | 群間相異度的定義 | 樹的形狀 | 評語 |
|---|---|---|---|
| Complete | 兩群之間最大的那個距離 | 平衡、群大小相近 | 常用;最遠距離仍可能受離群值影響 |
| Average | 所有跨群配對距離的平均 | 平衡 | 最常用;統計上性質較好 |
| Single | 兩群之間最小的那個距離 | 鏈狀、拖尾 | 容易產生一大群 + 多個單點群,少用 |
| Centroid | 兩群形心之間的距離 | 可能出現反轉 | 基因體學常用,但反轉讓樹難以解讀 |
前面一直用歐氏距離。若分析著重輪廓的形狀,可以改用相關係數: 兩位顧客一個買很多、一個買很少,但買的品項比例一致—— 歐氏距離很大,相關係數距離($1 - r_{ii'}$)很小。 ISLP 圖 12.15 就是這個對比。哪個對,取決於你的科學問題,沒有預設答案。
Ch12-unsup-lab-zh.ipynb
在一棵樹狀圖上,第 3 號與第 7 號葉子左右緊鄰,但它們所在的分支要到高度 8 才合併;第 3 號與第 20 號隔了很遠,卻在高度 2 就合併了。誰跟第 3 號比較相似?
Ward linkage 每次選擇使群內平方和增加最少的合併:$\Delta(A,B)=\frac{|A||B|}{|A|+|B|}\|\bar x_A-\bar x_B\|^2$。它需要適當的歐氏幾何,不能隨意把相關距離代入。樹狀圖隱含巢狀分群:較細的群必須包含於較粗的群;若最佳二群依性別、最佳三群依國籍,兩者未必能由同一棵樹取得。Centroid linkage 可能發生後次合併高度更低的 inversion,這時水平切線的解讀要特別小心。
凝聚式從單點群開始反覆合併;分裂式(divisive)從全體一群反覆拆分。Feature agglomeration 則把特徵當待分群的對象,再用平均等 pooling 函數合併相似欄位。無論合併觀察或特徵,距離 ties 都可能讓不同合法的樹產生;葉子左右換位只改圖的畫法,改合併對象則會改樹本身。
令 $a=|A|,b=|B|$,合併中心 $\mu=(a\mu_A+b\mu_B)/(a+b)$。對各群使用平方和分解,合併後減去原群內平方和得到 $a\|\mu_A-\mu\|^2+b\|\mu_B-\mu\|^2$。代入 $\mu_A-\mu=b(\mu_A-\mu_B)/(a+b)$ 與 $\mu_B-\mu=-a(\mu_A-\mu_B)/(a+b)$,整理即得 $ab\|\mu_A-\mu_B\|^2/(a+b)$。這使用歐氏平方距離,不能任意把其他 dissimilarity 填入同一推導。
一種分裂式方法先選目前直徑最大的群,找出對群內其他點平均相異度最大的點作為新群的種子;再把「到舊群平均距離減去到新群平均距離」最大的正值點移到新群,重複到沒有正值候選。持續拆分直到指定群數或單點群,空集合與 ties 需約定。
讀兩筆觀測的相似性,要看它們首次進入同一分支的合併高度,不看兩個葉節點的左右距離。左右子樹可以交換而不改變任何合併,這就是講義中觀測 9 與 2 看起來靠近、卻不比其他同高度合併的點更接近的原因。
切低一點的樹得到較多群,每個細群都嵌在更高切割的一個大群中。若最佳兩群按性別分、最佳三群按國籍分,兩種分類未必能同時由一棵巢狀樹表達。階層方法保留的是一套巢狀合併,不是每個 $K$ 都獨立求到最佳分群。
Centroid linkage 可能發生新合併高度低於舊高度的 inversion;Ward 的平方和增加量也不能拿去配任意非歐氏相異度。Single linkage 可以沿近鄰形成彎曲群,但一條稀疏鏈也可能把兩團接起來;Complete linkage 使用最遠距離,離群點可能明顯影響合併,不能把「較少鏈狀群」等同不受離群值影響。
Lab 用 compute_linkage 把 sklearn 合併結果轉給 scipy 的 dendrogram,再用 cut_tree 取群標籤。color_threshold 是畫圖顏色門檻,不能以改顏色就當成模型已產生新的群標籤。
實際分群時,前處理與參數選擇都會影響結果。ISLP §12.4.3 把它們列成一張清單, 每一項都會實質改變結果:
下面這個元件沿用課本圖 12.16 的「襪子與電腦」情境;課本提供概念,逐筆數值另作示意設定。 八位顧客的購買次數、單價與離群值都是本站為呈現尺度效應而設定的示意值。 它只用來說明:資料不變而尺度改變時,K = 2 的分群可能跟著改變, 不能把畫面上的群或 WSS 當成課本實證結果。
沒有一個通用指標能直接證明群具有實質意義。 任何時候把資料丟去分群,它都會給你群——即使資料是純雜訊。 要檢查的是「這些群在獨立的新資料上也會出現嗎」, 文獻提出過不同的分群 p 值方法,其適用方式仍有爭議(細節在 ESL)。
能做的是幾件比較樸素的事:
| 做法 | 怎麼做 | 在檢查什麼 |
|---|---|---|
| 換設定重跑 | 換 linkage、換距離、換 K、標準化與否 | 哪些結構每次都出現(那些比較可信) |
| 抽子樣本重跑 | 隨機丟掉 10–20% 的資料再分群一次 | 分群對擾動穩不穩(通常不太穩) |
| 對照外部標籤 | 有領域標籤時用 crosstab 或 ARI 比對 | 分群有沒有抓到已知的結構(限於事後檢查,避免用同一標籤調參) |
| 看得出解釋嗎 | 每一群的變數平均長什麼樣,能不能講成一句話 | 群有沒有實質意義,還是只是切開了連續的雲 |
沒有一個通用數字能直接證明群是真的。沒有已知群標籤時,不能直接算分類錯誤率;但仍可先訂評估目標,再比較幾何結構、穩定性或留出資料上的表現。
可以併用三種檢查:(1)穩定性——換設定、抽子樣本重跑,看哪些群每次都在;(2)可解釋性。每一群能不能用領域語言講成一句話;(3)外部驗證——在獨立的新資料上重做一次,或對上事後才知道的標籤。ISLP 將分群結果定位為形成科學假設的起點,仍需後續證據檢驗。
差在產出的東西是連續還是離散。PCA 給每一筆資料一組新的連續座標(得分),資料在低維空間裡還是一片雲;分群給每一筆資料一個離散的群編號,雲被切成幾塊。
對應的假設也不同。PCA 假設「大部分變異集中在少數幾個方向」,它不假設資料裡有子群。如果真的只有一片橢圓形的雲,PCA 照樣給你很有用的答案。分群則假設「資料由幾個同質的子群組成」,如果實際上是連續漸變的,切出來的界線就是人造的。
實務上兩者常常串起來用,而且順序有講究:先 PCA 再分群是很常見的做法(lab 範例 就對 NCI60 的前五個得分向量做階層式分群),理由是前幾個主成分可以看成資料的低雜訊版本。反過來也有用:分群完之後,用前兩個主成分的散佈圖把群畫出來,因為 p > 2 的時候你沒別的辦法看。
資料裡有兩三個明顯的離群值(例如那位買 60 雙襪子的顧客)。對 K-means 與階層式分群,下面哪個處理方式最站得住腳?
DBSCAN 以半徑 $\varepsilon$ 與最少點數 minPts 定義密度:含自身的鄰域至少有 minPts 筆就是核心點。從核心點沿核心鄰接關係擴張成群;非核心但落在核心鄰域內的是邊界點,其餘標為雜訊。邊界點不再向外擴張,否則稀疏的橋接點會把不同群錯接起來。它能找非球狀群,也不用先給群數,但同一密度門檻不適合差異很大的密度。
OPTICS 以可達距離的排序保留多種密度尺度。HDBSCAN 以核心距離修正點間距離,建立密度階層,再依群在不同尺度的穩定性選群;min_cluster_size 控制最小群大小,min_samples 也影響對雜訊的保守程度。這些方法能留下雜訊點,仍需檢查尺度、距離、參數與重抽樣的穩定性。
Mean shift 把候選中心移到鄰近點的加權平均,反覆向核密度的高處移動;收斂到相近模態的起點併為一群。頻寬決定平滑程度與可辨識的模態數,不必預先指定 K,卻仍需選頻寬。高斯混合模型以多個高斯成分的加權密度表示資料,EM 交替更新各點屬於各群的後驗機率(責任值)與參數,允許軟分群;一般高斯混合仍會為每個點計算各群的責任值,若要處理離群值需另外設計雜訊成分或穩健模型。變分貝氏混合在成分權重與參數上加入先驗,以近似後驗估計不確定性。
譜分群(spectral clustering)先建立相似度圖,利用圖 Laplacian 的特徵向量嵌入,再於嵌入座標分群。鄰接圖、核尺度與群數會改變答案;它與 DBSCAN 都能處理某些非球狀群,但一般並非同一演算法。
名目類別不可任意編號後直接套歐氏距離。可只用連續特徵、對類別做適當編碼並控制權重、使用結合數值距離與類別不一致的成本的 k-prototypes,或先用混合資料因素分析得到連續座標。這些選擇代表不同的「相似」定義,需要連同結果報告。
分群標籤、到各群中心的距離及特徵聚合都能當作監督式模型的輸入;群標籤本身通常應視為類別。評估時分群也要只在訓練折擬合。少量標記時,可優先標註群中心附近的代表樣本,再在群內傳播標籤;這依賴群大致對應真實類別的假設,群跨越類別時會放大錯誤。
DBSCAN 的直接密度可達要求出發點是核心點,且終點在其 $\varepsilon$ 鄰域。密度可達是一條由核心點向外延伸的鏈;邊界點可以在鏈的末端,不能繼續把群向外擴張。若邊界點同時鄰近不同群,指派可依遍歷次序改變,不能保證所有標籤都對順序不變。
HDBSCAN 先計算每點到指定近鄰數的核心距離 $c_k(x)$,再用相互可達距離
$$d_{\rm mr}(x_i,x_j)=\max\{c_k(x_i),c_k(x_j),d(x_i,x_j)\}.$$它提高稀疏地區的連結距離,再由最小生成樹建立 single-linkage 階層。以密度尺度 $\lambda=1/d_{\rm mr}$ 觀察群分裂,使用 min_cluster_size 壓縮太小分支,最後依群持續存在的穩定性選擇非重疊群,留下不屬於所選群的雜訊。min_samples 仍影響核心距離。
OPTICS 保留一個探索次序及各點的 reachability,而非固定單一 $\varepsilon$ 的分割;從可達距離圖的谷地或指定門檻值抽取群。近鄰數是否包含樣本本身,須與方法的定義一致。來源:scikit-learn 密度分群文件。
使用平滑核密度時,令 $g(u)$ 是核輪廓導數所對應的非負權重,頻寬為 $h>0$。候選中心每輪更新
$$x^{(t+1)}=\frac{\sum_i g(\|x^{(t)}-x_i\|^2/h^2)x_i}{\sum_i g(\|x^{(t)}-x_i\|^2/h^2)}.$$分母需大於 0,空鄰域須停止或重設。不同初值收斂到相近模態後合併標籤;頻寬決定模態是否被平滑成同一群。停止看中心位移或密度變化,不是要求每輪鄰域點數必須增加。
DBSCAN 的群由核心點的連通性決定。核心點周圍的邊界點可以加入群,但不繼續向外擴張;離群點可能先被標成雜訊,稍後才發現它屬於另一個核心點的邊界。兩個群都能接到的邊界點可能受處理順序影響,因此「每次都得到完全相同標籤」需要區分核心群與邊界指派。
HDBSCAN 以核心距離修正點對距離,$d_{\rm mr}(a,b)=\max\{d_{\rm core}(a),d_{\rm core}(b),d(a,b)\}$。稀疏區域的點即使偶然靠近,也會被較大的核心距離隔開。由這種距離建立最小生成樹及密度階層,再用 min_cluster_size 壓縮過小分支,依持續性選群。
min_cluster_size 控制什麼大小算一個可保留群;min_samples 控制密度判斷的保守程度。較大 min_samples 通常讓更多點變成雜訊,但不能把這兩個參數當成同一個。HDBSCAN 能比較多種密度尺度,仍會受資料尺度、距離和群選擇設定影響。
Lab 使用外部 hdbscan 套件,而不是 sklearn 的同名估計器;兩者對 min_samples 是否包含自身的約定不同,不能只換 import 就宣稱設定完全相同。原 Lab 的兩種密度資料正好說明:固定一組 DBSCAN 門檻可能把稀疏群判成雜訊,同時又把密群過度合併。
閱讀:HDBSCAN 的密度階層、兩個大小參數、sklearn 與外部實作的差別。
講義附錄的 mean shift 不先指定群數,而是反覆把候選中心移到附近觀測的加權平均。對 bandwidth $h$ 與非負權重核 $g$,更新為 $c^{(t+1)}=\sum_i g(\|x_i-c^{(t)}\|^2/h^2)x_i/\sum_i g(\|x_i-c^{(t)}\|^2/h^2)$;若窗口內沒有點,則不能把零分母拿來更新,需要停止或重新初始化。
固定半徑窗口的直觀就是「看目前窗口中的平均在哪裡,把窗口搬過去再看一次」。多個初始窗口可能收斂到同一密度峰,最後合併相近的峰來形成群。它和 K-means 的差別在於:K-means 先給 $K$ 並最小化全域群內平方和;mean shift 的峰數由資料、核及 bandwidth 共同決定。
小 bandwidth 看見很多局部峰,可能把雜訊也切成小群;大 bandwidth 會平滑掉細節,把原本不同的峰合併。對不同密度資料也未必有一個 bandwidth 同時合適。使用時仍要選 bandwidth 並設定停止條件;省下的是事先指定群數這一步。
API 閱讀:MeanShift 與 bandwidth。講義的影像分割例子是以相似顏色/位置形成群,群的意義仍由選用特徵決定。
用 $K$ 個成分表示密度 $p(x)=\sum_{k=1}^K\pi_k\mathcal N(x;\mu_k,\Sigma_k)$,其中 $\pi_k\ge0,\sum_k\pi_k=1$、$\Sigma_k$ 正定。E 步算各點的責任值,M 步用它作權重更新:
$$r_{ik}=\frac{\pi_k\mathcal N(x_i;\mu_k,\Sigma_k)}{\sum_{\ell=1}^K\pi_\ell\mathcal N(x_i;\mu_\ell,\Sigma_\ell)},\quad N_k=\sum_ir_{ik},\quad\pi_k^{\rm new}=N_k/n,$$ $$\mu_k^{\rm new}=\frac{\sum_ir_{ik}x_i}{N_k},\qquad\Sigma_k^{\rm new}=\frac{\sum_ir_{ik}(x_i-\mu_k^{\rm new})(x_i-\mu_k^{\rm new})^T}{N_k}.$$交替計算直到對數概似增量很小,需 $N_k>0$;空成分可重設或移除。無限制 Gaussian mixture 的概似可因成分縮到單點而無上界,實作需正則化共變異數或先驗,並比較不同初值。soft assignment 對每點都給責任值,不會自動把離群點拒絕為雜訊。
等權球狀混合在共同變異趨近 0 的極限下,責任值才集中到最近中心。
來源:Stanford CS229:Gaussian mixture 與 EM。
引入隱藏成分標籤 $z_i$。固定目前參數計算 $r_{ik}=P(z_i=k\mid x_i)$ 後,條件期望完整對數概似為 $Q=\sum_{i,k}r_{ik}\{\log\pi_k-\frac12\log|\Sigma_k|-\frac12(x_i-\mu_k)^T\Sigma_k^{-1}(x_i-\mu_k)\}+C$。用 Lagrange multiplier 處理 $\sum_k\pi_k=1$ 得 $\pi_k=N_k/n$;對 $\mu_k$ 微分得到加權平均,再對精度矩陣微分得到加權共變異數。
對任何分布 $q(z)$,Jensen 不等式給 $\log p(x\mid\theta)\ge E_q[\log p(x,z\mid\theta)]+H(q)$。E 步令 $q$ 等於目前後驗,使下界與目前概似相接;M 步提高此下界,因此不降低觀測概似。這保證單調性,不能保證全域最優、參數唯一或避免奇異解。若改用正則化或先驗,應追蹤相應目標。
給混合權重 Dirichlet 先驗,並對 Gaussian 均值/精度給共軛先驗,再用可分解近似 $q(Z)q(\pi,\mu,\Lambda)$ 逼近後驗。責任值使用 $r_{ik}\propto\exp\{E_q\log\pi_k+E_q\log\mathcal N(x_i;\mu_k,\Lambda_k^{-1})\}$,歸一化後累加有效樣本數與充分統計更新參數分布,循環直到 ELBO 穩定。這裡更新的是分布而非單一參數值。
小有效樣本數的成分可被先驗收縮,但結果受成分上限與先驗濃度影響,不等於自動發現唯一正確群數。來源:變分 Gaussian mixture 文件。
先用 k 近鄰或 Gaussian 相似度建立非負、對稱的 $W$,令 $D_{ii}=\sum_jW_{ij}$。未正規化 Laplacian 為 $L=D-W$;對沒有孤立點的圖,常用 $L_{\rm sym}=I-D^{-1/2}WD^{-1/2}$。取最小的 $K$ 個特徵值所對應的向量成矩陣 $U$,對 $L_{\rm sym}$ 的常用流程,再把非零列正規化到單位長度,最後以這些列向量跑 K-means。必須先檢查連通分量:若分量數多於 K,任取 K 個零特徵向量可能讓部分列全為 0,不能直接除以列長度;應先分開處理各連通分量,或重新指定群數與圖的建構,並說明合併不相連分量的額外依據。
如果圖恰有兩個互不連通的群,$L$ 的零特徵空間由兩群的指示向量張成,同群在嵌入中取得相同座標。若相似度圖設錯,把兩群連成很強的橋,結果便會改變。孤立點的 $D_{ii}=0$ 須先分開處理;不同 Laplacian 與正規化流程不可混用。來源:smallvis:譜方法。
對稱 $W$ 給 $v^TLv=\sum_iD_{ii}v_i^2-\sum_{i,j}W_{ij}v_iv_j=\frac12\sum_{i,j}W_{ij}(v_i-v_j)^2\ge0$。相似度大的點若座標差很大就受懲罰,故小特徵值方向在強連結內變化小。連通分量內為常數、不同分量可不同的向量使此二次型為 0,解釋零特徵空間與連通分量的關係。
k-prototypes 把連續與類別成本相加:
$$\sum_i\left[\sum_{j\in\mathcal N}(x_{ij}-\mu_{c_i,j})^2+\gamma\sum_{j\in\mathcal C}I(x_{ij}\ne m_{c_i,j})\right].$$固定分群後,連續中心更新為平均,類別中心更新為眾數;固定中心後,每點指派到混合成本最小的群。$\gamma$ 控制類別不一致與數值距離的相對重要性,數值欄先採適當尺度。
FAMD 把連續欄標準化、類別欄展開成指示碼並按類別頻率加權,再求共同低維表示;如此避免直接把「紅、藍、綠」編成等距的 0、1、2。群結果須附距離、尺度與參數,並比較重抽樣穩定性。來源:k-modes/k-prototypes 作者實作、Prince FAMD 文件。
MiniBatch K-means 每次只讀小批次,依指派更新中心的累計平均;可降低成本,但小批次更新不保證每輪完整資料的目標都下降。BIRCH 以 clustering feature $(N,\sum x_i,\sum\|x_i\|^2)$ 建立可合併的小群摘要,再對摘要進一步分群,適合可壓縮的大型歐氏資料。Affinity propagation 在點間傳遞「適合作代表點」的 responsibility 與 availability,挑 exemplar;preference 改變代表點/群的數目,damping 用來減少震盪。它們在講義比較圖中的表現是特定模擬資料的結果,沒有任何一欄普遍最好。
Fuzzy c-means 以隸屬度 $u_{ik}\ge0,\sum_ku_{ik}=1$ 取代硬標籤,最小化 $\sum_{i,k}u_{ik}^m\|x_i-c_k\|^2$,其中 $m>1$。固定隸屬度時,中心為 $c_k=\sum_i u_{ik}^mx_i/\sum_i u_{ik}^m$;固定中心且距離皆非零時,$u_{ik}=\left[\sum_\ell(\|x_i-c_k\|/\|x_i-c_\ell\|)^{2/(m-1)}\right]^{-1}$。零距離需把隸屬集中到重合中心並約定 ties。它的隸屬度不是由 Gaussian density 算出的後驗責任值。
若領域提供相似/不相似配對,metric learning 可估計 $d_A(x,y)^2=(x-y)^TA(x-y)$,$A\succeq0$;寫 $A=L^TL$ 就是先做 $Lx$ 轉換再算歐氏距離。若 $A$ 不滿秩,可能把不同點投到同一位置,得到的是偽距離。配對標籤加入了監督資訊,評估時也須限制在訓練折,不能把結果稱為完全未使用標籤。
把名目類別寫成 0、1、2 會人為加入次序與距離。One-hot 編碼消除這個次序,卻也改變欄位數與權重;稀有類別、連續尺度與大量二元欄仍可能主導距離。只用連續特徵可避免錯誤的類別距離,但也可能丟掉真正重要的類別資訊。
k-prototypes 明確把數值平方距離和類別不一致成本相加,所以需選兩部分的相對權重;FAMD 則先形成對混合欄位可比較的表示,再分群。兩者在回答不同問題,沒有不需領域判斷的自動預設。
以分群做監督式前處理時,群中心或特徵合併只能在每個訓練折估計。Lab 延伸的「到各群中心距離」是一組連續特徵;群編號是任意名目類別,不能直接當成連續數字。半監督情境可先找代表點請人標註,再把標籤傳到同群,但同一群可能包含不同的真實類別,須檢查群內類別是否一致,以及邊界點是否適合傳遞標籤。
混合模型會對每筆資料給各成分的責任值,通常仍把離群點分給某些成分。若想明確拒絕離群資料,需要離群成分或偵測規則;不能把一般 Gaussian mixture 說成自動具有 DBSCAN 的雜訊標籤。
Lab 先產生三中心資料並標準化,再以 eps=0.3, min_samples=10 執行 DBSCAN。labels_ 為每筆資料的群編號,-1 是雜訊;群數應排除這個標籤。core_sample_indices_ 另指向核心點,因此「不是核心」還要再分邊界點與雜訊。
Ch12-unsup-lab-zh.ipynb
這個模擬範例保留已知 labels_true,可以做外部檢查;真實未標記資料則沒有這個答案。ARI 比較成對觀測是否被放在同群並校正偶然一致,不要求群編號相同。輪廓係數用群內平均距離 $a_i$ 與到最近其他群的平均距離 $b_i$ 定義 $s_i=(b_i-a_i)/\max(a_i,b_i)$;它量的是所選距離下的緊密程度,不是群存在的 p 值。只有一群、每點一群或沒有可用群時,輪廓係數不適用;有雜訊時還需說明是否把它當作一群參與計算。
後續 Lab 在不同密度資料上變更 eps/min_samples,再比較 HDBSCAN 的 min_cluster_size。讀圖時同時看哪些點被保留、哪些點標成雜訊,不能只比較群數。
閱讀:分群的內部與外部評估。
NCI60 的 64 個細胞株各有 6830 個基因表現特徵。癌症類型已有標籤,但 PCA 與分群時不使用;完成後才上色與製作交叉表。這正是「標籤只用於解讀」與「用標籤選擇模型」的差別。
Ch12-unsup-lab-zh.ipynb
Lab 的碎石圖在前幾個方向出現轉折,前七個主成分累積約解釋四成變異。可先觀察這些方向,但剩下六成仍可能含有訊號;前兩個成分也未必能分開所有癌症類型。
接著比較 complete、average 與 single linkage,再切成四群與癌症標籤交叉比較。白血病細胞株集中,而乳癌細胞株分散,可能反映生物異質性,也可能與量測、尺度或分析選擇有關。單張交叉表不足以建立新的疾病亞型。
Ch12-unsup-lab-zh.ipynb
最後比較四群 K-means 與階層分群,並改用前五個 PCA 得分做階層分群。前處理改變了距離:原基因空間中的差異可能被捨棄,因此兩種分群不同是需要解讀的結果,不是必定哪一種錯誤。群編號換名不改變群成員,應用交叉表或對編號不敏感的指標比較。
資料:NCI60 的特徵與標籤。
這一節接續線性 PCA,說明講義的流形學習與 t-SNE。先讀核心直覺,再展開演算法與限制。
TSNE 沒有 transform()(新資料無法投影到既有的嵌入上,
openTSNE 之類的套件才另外提供近似做法),
也不像 PCA 有負荷量可以解讀「這個方向由哪些變數組成」。transform(),
lab 範例 就示範了「先 UMAP 再分類」,
但那已經是監督式的評估了,
能這樣調就是因為有 y 可以看。
Isomap 先建近鄰圖,以最短路估計測地距離,再對距離矩陣做 classical MDS;圖斷裂或跨流形捷徑會改變結果。LLE 先用鄰居重建每個高維點,權重滿足列和 1,再找低維座標最小化 $\sum_i\|z_i-\sum_jw_{ij}z_j\|^2$,並用置中與尺度限制排除全零解。UMAP 先構造局部尺度的模糊鄰接關係,再最佳化低維交叉熵;近鄰數與 min_dist 改變保留結構的尺度。它們都需適當前處理,鄰居圖本身不是現實資料流形存在的證明。
若把降維放進監督式 pipeline,應在每個訓練折擬合轉換;標籤只用於最後評估或上色時,要與有監督的 UMAP 分清楚。
三階張量的 CP 分解寫為 $\mathcal X_{ijk}\approx\sum_{r=1}^Ra_{ir}b_{jr}c_{kr}$;Tucker 分解寫為 $\mathcal X_{ijk}\approx\sum_{a,b,c}\mathcal G_{abc}U_{ia}V_{jb}W_{kc}$。前者把 rank-one 張量相加,後者另外保留核心中的多軸交互作用;尺度/排列等不唯一性仍存在。自監督則把輸入的一部分當作預測目標,例如遮罩文字的 $-\sum_{i\in\mathcal M}\log p(x_i\mid x_{\notin\mathcal M})$。這些是講義列出的後續方向,完整的深度模型訓練另查相應教材,不能由低維圖直接推論表示的品質。
Parametric t-SNE 用可訓練函數 $z=f_\theta(x)$ 表示座標,以鄰居機率目標調整 $\theta$;訓練後可直接對新 $x$ 評估。這和把一批座標自由最佳化的標準 t-SNE 是不同模型。固定既有嵌入後插入新點,也是另一種近似做法;不能把某個估計器沒有 transform() 推成所有 t-SNE 方法都不能映射新點。
講義列出的 t-SNE 理論研究,對資料分離、鄰居機率、初始化或 early exaggeration 使用明確假設,再證明特定群可被分開;它們不是對任意資料的全域距離保真或正確分群保證。實務上應回到高維鄰居、參數擾動和獨立資料檢查結構。來源:Parametric t-SNE、t-SNE 的理論分析。
讀不同 perplexity 的嵌入時,先在原始空間檢查近鄰,再看鄰居是否穩定地放在一起。t-SNE 可讓純雜訊看起來分成小團;局部結構看起來穩定也不等於全域距離、密度或群大小被保留。講義的互動展示與參數實驗用來觀察這些變化,不作分群真值。
FIt-SNE 以插值及 FFT 加速排斥項,Barnes–Hut 用空間樹近似遠方點,openTSNE 則提供擴充的嵌入操作。這些方法改善計算或映射能力,t-SNE 的讀圖限制仍然適用。理論文獻對資料分離、鄰居權重及 early exaggeration 的特定條件證明可視化結果;不是對任意資料都有正確群數保證。
UMAP 的近鄰數決定局部到較廣尺度的取捨,min_dist 影響低維點的緊密程度。用它做分群前處理時,擬合表示與群模型的選擇都需驗證;其嵌入也可能改變密度,不能只挑群最清楚的圖。Lab 的「先 UMAP 再分類」須在訓練資料擬合轉換,再映射測試資料;使用標籤訓練表示則是另一個有監督設定。
張量分解與自監督是講義附錄的後續方向。TensorLy 的 CP/Tucker 表示保留資料的多個軸;遮罩式自監督由輸入產生預測目標,仍有明確的損失與學習程序。這些方法雖然不需要人工標籤,仍有明確的訓練目標,效用要由重建或下游任務判定。
閱讀:t-SNE 圖的常見誤讀、openTSNE 的演算法說明、UMAP 用於分群的條件、TensorLy 的分解方式。
李宏毅的 BERT 教材以遮住文字再預測為例。未遮住的輸入提供上下文,被遮住的 token 提供目標;模型以交叉熵訓練,因此標籤不是人工另外附上的類別,而是資料自身的一部分。這與只把點畫成低維座標的 t-SNE 目標不同。
先在大量未標記文字預訓練,再以少量標記資料調整分類或問答,是兩個不同的階段。能預測遮罩文字不自動保證癌症分群或所有下游任務都好;要判斷學到的表示是否有用,仍需獨立評估。講義把它列為後續學習方向,這裡保留目標、資料與驗證的關係,不把它混入本章 PCA 或分群的數學假設。
PCA 是線性投影:它只能把資料壓到一個平面上。 可是很多高維資料的結構是彎的——想像一張捲起來的紙, 紙上相鄰的兩點在三維空間裡可能隔得很遠,而 PCA 只會把整捲紙壓扁,把不該相鄰的點壓在一起。 流形學習(manifold learning)就是假設資料落在一個低維的彎曲流形上, 想辦法把它攤平。
最有名的是 t-SNE(t-distributed stochastic neighbor embedding)。 它的目標是保留資料的鄰近關係:
第 2 步為什麼要換成 t 分佈?因為高維空間「裝得下」的鄰居比低維多得多, 硬要用高斯核會讓所有點擠在一起(crowding problem); t 分佈的尾巴重,允許中距離的點被推得比較遠,圖才會散開。
load_digits,8×8 灰階)用三種方法壓到 2 維,顏色是真實的數字標籤——標籤沒有參與計算,只用來上色。perplexity = 5 再切到 30,看同一份資料可以長得多不一樣。
Ch12-unsup-lab-zh.ipynb
一張 t-SNE 圖上,A 團與 B 團距離很遠,A 團看起來比 B 團大三倍。可以下什麼結論?
高維條件鄰居機率可寫成 $p_{j\mid i}\propto\exp(-\|x_i-x_j\|^2/(2\sigma_i^2))$,其中排除 $i=j$ 並逐列正規化。以 $\mathrm{Perp}(P_i)=2^{H(P_i)}$、$H(P_i)=-\sum_jp_{j\mid i}\log_2p_{j\mid i}$ 指定有效鄰居數,再搜尋各點的 $\sigma_i$。對稱化 $p_{ij}=(p_{j\mid i}+p_{i\mid j})/(2n)$,低維則用 $q_{ij}\propto(1+\|z_i-z_j\|^2)^{-1}$,最小化 $\sum_{i\ne j}p_{ij}\log(p_{ij}/q_{ij})$。梯度同時含吸引與排斥作用,不能說只懲罰鄰居被拉遠。
Early exaggeration 在初期增強吸引作用,learning rate 決定更新幅度,迭代次數決定最佳化進度;Barnes–Hut 的 angle 取捨近似精度與速度。Perplexity、初始值及亂數種子改變圖形時,應比較局部鄰居是否穩定,不能挑一張最漂亮的圖作結論。PCA 保留全域線性變異;Isomap 以鄰接圖最短路近似流形距離,LLE 保留局部重建權重,UMAP 以鄰接關係建構嵌入並可轉換新點。
張量分解將樣本、空間、時間等多個軸一起表示,例如 CP 用秩一張量之和,Tucker 用各軸因子與核心張量;相比先攤平成矩陣,可保留軸的結構。自監督學習從資料本身設計預測任務,例如遮住部分輸入再重建,或讓同一資料的經過不同資料擴增的版本接近;訓練目標雖由資料產生,取得的表徵仍須在目標任務驗證。
SNE 讓每個點有一個「誰是我的鄰居」分布。高維使用個別尺度 $\sigma_i>0$,低維原始 SNE 使用 Gaussian 核:
$$p_{j\mid i}=\frac{e^{-\|x_i-x_j\|^2/(2\sigma_i^2)}}{\sum_{k\ne i}e^{-\|x_i-x_k\|^2/(2\sigma_i^2)}},\qquad q^{\rm SNE}_{j\mid i}=\frac{e^{-\|z_i-z_j\|^2}}{\sum_{k\ne i}e^{-\|z_i-z_k\|^2}},\quad p_{i\mid i}=q^{\rm SNE}_{i\mid i}=0.$$原始目標是 $\sum_i\operatorname{KL}(P_i\|Q_i)=\sum_i\sum_{j\ne i}p_{j\mid i}\log(p_{j\mid i}/q^{\rm SNE}_{j\mid i})$。每個完整 KL 都非負,但單一 summand 可以是負值;不能以單項例子當作完整散度。
在高維空間中,許多點可以同時位於中心的中等距離處;降到平面後可用的空間較少,Gaussian 核容易把這些點擠在一起。t-SNE 以較重尾的 Student-$t$ 核提供更大的低維間隔,並對高維鄰居機率對稱化:
$$p_{ij}=\frac{p_{j\mid i}+p_{i\mid j}}{2n},\qquad w_{ij}=(1+\|z_i-z_j\|^2)^{-1},\quad Z=\sum_{k\ne\ell}w_{k\ell},\quad q_{ij}=w_{ij}/Z.$$對角線機率定為 0,對所有有序非對角配對加總有 $\sum_{i\ne j}p_{ij}=\sum_{i\ne j}q_{ij}=1$。這裡的 $Z$ 是全域正規化,不是每個點各除一個列和。最小化 $C=\sum_{i\ne j}p_{ij}\log(p_{ij}/q_{ij})$,其梯度為
$$\frac{\partial C}{\partial z_i}=4\sum_{j\ne i}(p_{ij}-q_{ij})\frac{z_i-z_j}{1+\|z_i-z_j\|^2}.$$鄰居距離完全相等時,不是任意 perplexity 都能靠改 $\sigma_i$ 達成。
精確的全配對計算需要平方級的配對數;Barnes–Hut 用空間樹近似遠處排斥,FIt-SNE 則用插值與 FFT 加速,改的是數值近似而非可任意改寫的目標。angle 控制 Barnes–Hut 的精度/速度取捨。KL 的跨次比較需固定資料、$P$、perplexity 與目標階段;early exaggeration 階段報值不能直接當成同一未誇張 KL 的可比數字。
來源:openTSNE:t-SNE 如何運作與講義連結的原始演算法文獻。
固定 $P$,利用 $q_{ij}=w_{ij}/Z$ 與 $\sum_{i\ne j}p_{ij}=1$,目標可寫成 $C=\mathrm{const}-\sum_{i\ne j}p_{ij}\log w_{ij}+\log Z$。因 $\nabla_{z_i}\log w_{ij}=-2w_{ij}(z_i-z_j)$,有序配對的 $(i,j)$ 和 $(j,i)$ 各貢獻一次,第一項導數為 $4\sum_jp_{ij}w_{ij}(z_i-z_j)$。同理 $\nabla_{z_i}Z=-4\sum_jw_{ij}^2(z_i-z_j)$,除以 $Z$ 得 $-4\sum_jq_{ij}w_{ij}(z_i-z_j)$,合併即得正文式子。梯度下降取負號:$p_{ij}>q_{ij}$ 的項拉近點,反之推開。
原始非對稱 SNE 同時有「$i$ 的鄰居分布」與「別人把 $i$ 當鄰居」兩類項,其梯度為 $2\sum_{j\ne i}(z_i-z_j)\{p_{j\mid i}-q_{j\mid i}+p_{i\mid j}-q_{i\mid j}\}$;不能只留下其中一個方向。
高維 SNE 的鄰居機率逐列正規化;對稱 t-SNE 的低維機率則對所有非對角配對做全域正規化。兩種分母不能混用。SNE 的單項 $p\log(p/q)$ 可以為負,完整 KL 才非負;講義的兩個單項成本例子是在說明不對稱懲罰,並不是完整散度的範例。
t-SNE 梯度中的 $p_{ij}-q_{ij}$ 已經包含吸引與排斥;不能再多乘一次 $q_{ij}$ 而未補回正規化常數。最佳化應沿負梯度更新,因此 $p_{ij}>q_{ij}$ 的點對在其他項不變時相互靠近。把梯度寫成加法更新時,必須同步改變差向量的方向。
Lab 設 init="pca" 讓初始座標帶有部分全域線性結構,並設 learning_rate="auto"。sklearn 對 learning rate 的數值定義與部分其他 t-SNE 實作相差四倍;引用「樣本數/early exaggeration」的經驗公式時必須核對實作,不直接抄成所有套件共用的數字。
Perplexity 是熵轉回的有效鄰居數。若機率在 $m$ 個鄰居上均勻,熵為 $\log_2m$,perplexity 就是 $m$;真實權重通常不均,因此它不是硬性的第 $k$ 近鄰截斷。不同樣本可得到不同 $\sigma_i$,這也解釋為何不同密度區域在圖上可能被放大/壓縮。
下面幾題取自 ISLP §12.6 的課後習題,題號都對得回課本。先自己想過再點選項; 每個選項都有解說;需要完整解答時,可查閱下面2個站。
課本第 1 題要你先證明恆等式 12.18,再用它說明演算法 12.2 每一輪都讓目標函數 12.17 下降。這個論證的關鍵是什麼?
single linkage 與 complete linkage 各做一棵樹。在 single 的樹上$\{{5\}}$ 與 $\{{6\}}$ 這兩群在某個高度合併;complete 的樹上它們也會合併。哪一棵的合併位置比較高?
課本第 5 題:用圖 12.16 的三種尺度各跑一次 K = 2(襪子與電腦),分別預期看到什麼?
課本第 8 題要你在 USArrests 上用兩種方式算 PVE:(a) 讀 explained_variance_ratio_;(b) 拿 components_ 直接套式 12.10。提示裡特別警告了什麼?
考前把這一頁掃過去就好。
| PCA | K-means | 階層式分群 | |
|---|---|---|---|
| 產出 | 連續的低維座標(得分) | K 個離散群標籤 | 一棵樹(1 到 n 群都在裡面) |
| 要先決定 | M(留幾個主成分) | K | 相異度、linkage、切在哪 |
| 有隨機性嗎 | 精確分解無隨機性;近似求解器可能有 | 有(初始指派) | 沒有 |
| 結果唯一嗎 | 相異特徵值的方向僅差符號;重根可旋轉 | 局部極小,換初值會變 | 無距離 ties 且規則固定時確定;左右翻轉只改畫法 |
| 要標準化嗎 | 依單位與變異差異的意義決定 | 依距離的各欄權重決定 | 依相異度與各欄尺度決定 |
| 對離群值 | 會被拉走(變異最大化) | 強迫入群,會扭曲 | 常自己掛高處,吃掉群額度 |
| 常見用途 | 視覺化、去雜訊、補值、當特徵 | 市場區隔、量化子群 | 探索階層結構、基因體學 |
| Linkage | 群間相異度 | 形狀 | 反轉? | 建議 |
|---|---|---|---|---|
| Complete | 跨群距離的最大值 | 平衡 | 不會 | 預設首選 |
| Average | 跨群距離的平均 | 平衡 | 不會 | 預設首選 |
| Single | 跨群距離的最小值 | 鏈狀拖尾 | 不會 | 少用,除非真的要找細長結構 |
| Centroid | 兩群形心的距離 | 不定 | 會 | 基因體學常用,讀圖要小心 |
| 名稱 | 式子 | 備註 |
|---|---|---|
| 第一主成分 | $\max \frac1n\sum_i(\sum_j \phi_{j1}x_{ij})^2$ s.t. $\sum_j\phi_{j1}^2=1$ | 式 12.3 |
| 得分 | $z_{im} = \sum_{j=1}^{p} \phi_{jm} x_{ij}$ | 式 12.2、12.4 |
| 最佳低維近似 | $\min_{A,B}\sum_{j}\sum_i (x_{ij}-\sum_m a_{im}b_{jm})^2$ | 式 12.6,解就是主成分 |
| 第 m 個 PVE | $\mathrm{PVE}_m=\dfrac{\sum_i z_{im}^2}{\sum_j\sum_i x_{ij}^2}$ | 式 12.10;所有主成分加總為 1 |
| 前 M 個的累積 PVE | $\sum_{m=1}^{M}\mathrm{PVE}_m=1-\dfrac{\mathrm{RSS}_M}{\mathrm{TSS}}$ | 式 12.11;M 維近似的 R² |
| 變異分解 | 總變異 = 前 M 個 PC 的變異 + M 維近似的 MSE | 式 12.11 |
| 矩陣補全 | $\min_{A,B}\sum_{(i,j)\in\mathcal O}(x_{ij}-\sum_m a_{im}b_{jm})^2$ | 式 12.12,只在觀測格上算 |
| K-means 目標 | $\min\sum_k \frac{1}{|C_k|}\sum_{i,i'\in C_k}\sum_j (x_{ij}-x_{i'j})^2$ | 式 12.17 |
| 關鍵恆等式 | $\frac{1}{|C_k|}\sum_{i,i'\in C_k}\sum_j (x_{ij}-x_{i'j})^2 = 2\sum_{i\in C_k}\sum_j (x_{ij}-\bar x_{kj})^2$ | 式 12.18,演算法 12.2 的根據 |
詞彙卡整理本章講義與 ISLP 第 12 章中常用的統計或機器學習專有名詞,正面附英文名稱。 先看正面的術語,試著說出定義,再翻面核對。可以洗牌複習,也可以搭配本章例子練習解釋。