沒有 y 的時候,還能學到什麼?

ISLP 第 12 章 — 對應講義 12
PCA|負荷量與得分|PVE|Scree plot|Biplot|矩陣補全|K-means|階層式分群|Dendrogram
向下捲動開始互動↓
📌 本頁使用方式(ISLP Ch.12|講義 12)

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

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

CONTENTS · 內容目錄
PROLOGUE · 開場

沒有現成標籤,該怎麼評估找到的結構? 教科書 · 第 12.1 節講義 12

前面十幾週,每一章都有一個 y。有了 y,就能用預測誤差評估模型: 切出測試集、算 MSE 或錯誤率、用交叉驗證挑超參數——「哪個模型比較好」有客觀答案。

這一章把 y 拿掉。手上只剩 X₁, X₂, …, Xp,問題變成: 這批資料本身有什麼結構?能不能用兩個座標軸就把 6830 個基因的樣本畫在紙上? 這 64 個細胞株是不是可以分成幾個自然的群?

麻煩的地方是:沒有現成的真實群標籤,就不能直接用分類錯誤率判斷分群好壞。 你得先說清楚想找什麼結構、用什麼證據評估。所以非監督式學習比監督式主觀得多, 它的定位通常是探索式資料分析(exploratory data analysis)—— 產出的假設仍需進一步檢驗。

這不表示不能留出資料做驗證。例如矩陣補全可以暫時遮住部分已觀測的格子, 再用補值與真值的差距評估預測能力。能評估某個目標,不等於證明群具有實質意義。

本章的三條主線 1. 主成分分析(PCA):找幾個「變異最大」的方向, 把 p 維壓成 2 維畫出來。它同時也是「最佳低維近似」。
2. 矩陣補全(matrix completion):把 PCA 的想法套到有缺失值的矩陣上, 可用於推薦系統。
3. 分群(clustering):K-means 與階層式分群,兩種找子群的方式。

PCA 與分群都在「化簡資料」,但化簡的方式不同,這個分工先記住:

產出什麼問的問題要先決定什麼本頁的節
PCA連續的低維座標(每筆資料一組新座標)哪幾個方向的變異最大?留幾個主成分 MP01–P06
分群離散的群標籤(每筆資料一個編號)哪些觀測值彼此相似?K,或樹要切在哪P07–P09
探索結果需要哪些證據 解讀非監督式學習的結果時,要留意過度解讀。 任何時候把資料丟去分群,它一定會給你群——問題是那些群是真的子群, 還是只是把雜訊切開而已。ISLP §12.4.3 的建議是:換不同設定多跑幾次, 看哪些結構每次都出現;報告時交代探索方法與尚待驗證的假設。
QUIZ · 為什麼非監督式比較難

把資料分成幾個很緊密的群,為什麼還不能說找到了真實子群?

(A) 因為只要沒有 y,就完全不能用留出資料或交叉驗證
(B) 群內緊密只符合某個幾何目標,仍要檢查穩定性與領域證據
(C) 因為非監督式方法沒有參數可以調
延伸用途:密度估計與異常偵測

降維、分群以外的兩個目標

密度估計以 $\hat p(x)$ 描述哪些觀測較常出現,例如本章的 Gaussian mixture;異常偵測可用 $-\log\hat p(x)$、到群中心的距離或低秩重建誤差作分數,再按實際容許的誤報率選門檻值。低密度不必然代表錯誤資料,高維的密度與典型區域也不能混為一談。標註成本高的資料可以先用這些方法探索,但最後仍需以領域資訊或獨立資料驗證用途。

PART 01 · 主成分是什麼

第一主成分:變異最大的那個方向 教科書 · 第 12.2.1 節講義 12

先想一個很現實的問題: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,才能公平比較不同方向的變異。

完整 PCA:限制式與特徵推導

那些係數 $\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$;若另有線性相依,實際非零主成分還會更少。

若某特徵值重複,對應空間中的任一正交基都可用。此時不唯一的不只正負號,整個重複特徵值子空間都可旋轉;仍可比較該空間的投影與累積解釋變異。

閱讀:PCA 的正式推導、PCA 與 SVD 的實作。

下面這個元件就是把「找最大變異方向」這件事用手轉一遍:拖動角度,看投影後的變異數怎麼變。

›拖動橘色把手轉動投影方向,看投影後的變異數怎麼變。
8°
模擬示意
目前這個方向
角度—
投影後的變異數—
佔總變異的比例—
最大變異(第一主成分)—
PC1 的方向—
怎麼玩
拖那顆橘色的把手(或用滑桿)轉動灰色的投影軸。每個點會沿虛線垂直落到軸上,變成一個一維的數字。那些落點的變異數就是右上角那個數。轉到變異數最大的地方,元件會自動吸附並告訴你。那就是第一主成分。
投影變異與近似距離有什麼關係? P03
兩個目標可以互相換算。把點投影到軸上,「投影後散得最開」與「原始點到軸的垂直距離平方和最小」加起來是定值(畢氏定理),所以最大化前者等於最小化後者。這就是 P03 那一節要講的另一種解釋。

找完第一主成分之後,第二主成分是所有跟 $Z_1$ 不相關的線性組合裡變異最大的那一個。 在第一主成分變異為正時,「與 $Z_1$ 不相關」等價於「方向 $\phi_2$ 與 $\phi_1$ 垂直」, 所以有非零變異的主成分方向互相垂直,總共最多有 $\min(n-1,\,p)$ 個。

方法示範與原 Lab
置中、標準化與 PCA 得分
scaler = StandardScaler(with_std=True, with_mean=True) USArrests_scaled = scaler.fit_transform(USArrests) pcaUS = PCA() pcaUS.fit(USArrests_scaled) scores = pcaUS.transform(USArrests_scaled)
來源:Ch12-unsup-lab-zh.ipynb
QUIZ · 負荷量與得分

USArrests 的 pcaUS.components_ 是 4×4、scores 是 50×4。哪個描述正確?

(A) components_ 的每一列是一個負荷向量(長度 p = 4),scores 的每一行是一個州的四個得分
(B) components_ 的每一列是一個州在四個主成分上的座標
(C) 兩者都是 50×4,因為 PCA 對每一筆資料各算一組負荷量
PART 02 · Biplot 怎麼讀

USArrests:一張圖同時放州與變數 教科書 · 第 12.2.2 節講義 12

算完 PCA 之後,最常畫的圖是 biplot(雙標圖): 同一張圖上同時放得分(點)與負荷量(箭頭)。 ISLP 圖 12.1 就是 USArrests 的 biplot——50 個州當點,4 個變數當箭頭。

可以先從三個角度讀圖:

下面這個 biplot 用的是課本的資料。切換標準化設定,觀察它的影響: 按下「未標準化」,整張圖會變形。

›這是標準化後的 biplot,對應 ISLP 圖 12.1 與圖 12.4 左。
課程/lab 資料
負荷量(箭頭的座標)
Murder—
Assault—
UrbanPop—
Rape—
PC1 的 PVE—
四個變數的變異數 lab 範例
Murder18.97
Assault6945.17
UrbanPop209.52
Rape87.73

Assault 是「每十萬人的件數」,數字本來就大得多。不標準化的話 PC1 幾乎等於 Assault 自己。

為什麼有些州沒有標字 圖 12.1
50 個州全部標字會擠成一團。這裡只標課本正文點名的八個:CA/NV/FL(犯罪率高)、ND(犯罪率低)、MS(都市化低,Murder/Assault 偏高)、HI(都市化高但犯罪低)、IN(兩者都接近平均)、AK。其餘州以點呈現。這張 biplot 用來呈現整體結構。
QUIZ · 讀 biplot

USArrests 的 PC1 對三個犯罪變數的負荷約為 0.54、0.58、0.54,PC2 對 UrbanPop 的負荷約為 0.87。哪個解讀合理?

(A) UrbanPop 的原始變異數一定比其他變數大
(B) 只要兩支負荷量箭頭垂直,就能證明兩個原始變數獨立
(C) PC1 主要綜合犯罪程度,PC2 的組成以都市化程度最突出
USArrests 的 biplot:點與箭頭各在回答什麼?

圖上的州是觀測;箭頭是變數。觀測點的 PC1/PC2 座標是得分,描述每個州在兩個方向的位置;箭頭的座標由負荷量決定,描述原變數如何組成這兩個方向。講義的圖用兩套刻度呈現,因此不能直接把箭頭尖端與州名的距離當成統計距離。

PC1 的三個犯罪變數負荷方向相近,可以理解為共同的犯罪強度方向;PC2 額外表達城市人口比例與犯罪變數之間的差異。沿某一箭頭方向的州,通常在該變數的標準化值較高,但這是前兩個方向的投影摘要,不是每一欄原值的完整重建。

$$\hat x_{ij}^{(2)}=z_{i1}v_{j1}+z_{i2}v_{j2}.$$

要回到原單位,還要乘回該欄標準差並加上平均值。只有在採用合適的 biplot 縮放且兩維保留足夠資訊時,箭頭角度才可近似反映相關性;不能忽略圖的縮放方式與未顯示主成分。

Lab 對各欄先標準化,再用 fit_transform 得得分、用 components_.T 讀負荷量。軟體可能把某個方向整體翻號,應同時翻轉得分及箭頭來比較,不能只翻一邊。

資料:USArrests 的欄位意義。

PART 03 · 另一種解釋

主成分也是「最佳低維近似」 教科書 · 第 12.2.2 節講義 12

到目前為止主成分的定義是「變異最大的方向」。現在換一個完全不同的角度看它, 兩種定義會得到相同的主成分。

第一主成分的負荷向量所定義的那條直線,是 p 維空間中離所有資料點平均平方距離最近 的那條線。前兩個主成分張出的平面,是離所有資料點最近的那個平面(ISLP 圖 12.2 左)。 前 M 個主成分張出的是最近的 M 維超平面。

對置中矩陣,前 M 個主成分保留的變異越多,重建誤差就越小:

$$\text{總平方和}=\text{保留的平方和}+\text{重建誤差平方和}.$$

這把「投影後散得最開」連到「用低維資料近似得最好」,也為下一節的 PVE 提供解讀。

完整低秩計算:SVD、變異分解與不唯一性

把「最近」寫成最佳化問題就清楚了。置中後的資料矩陣 $\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$;這是近似法,需記錄種子、過取樣與誤差。

證明:投影誤差、截斷 SVD 與 PVE

對任意正交的 $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}$ 的等價式。

SVD 如何一次給出方向、得分與誤差?

把中心化矩陣寫成 $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。

閱讀:講義連結的數值線性代數教材、Randomized PCA。

實務上怎麼算:SVD 求主成分不必真的做特徵分解。把置中後的資料矩陣做 奇異值分解(singular value decomposition, SVD) $\mathbf{X} = \mathbf{U}\mathbf{D}\mathbf{V}^{\mathsf T}$, $\mathbf{V}$ 的每一欄就是負荷向量、$\mathbf{U}\mathbf{D}$ 就是得分矩陣。 numpy.linalg.svd 比自己算 $\mathbf{X}^{\mathsf T}\mathbf{X}$ 的特徵向量穩定得多, 而且下一節的矩陣補全就是靠它一步步逼近的。
方法示範與原 Lab
以 SVD 計算主成分
X = USArrests_scaled U, D, V = np.linalg.svd(X, full_matrices=False)
來源:Ch12-unsup-lab-zh.ipynb
觀念釐清
Q:既然「變異最大」與「近似最好」是同一件事,為什麼課本要講兩次?

因為它們通往不同的用途。

「變異最大」的說法讓你解讀主成分:負荷量告訴你這個方向由哪些變數組成,PC1 是「整體犯罪率」、PC2 是「都市化」這種話就是從這裡讀出來的。

「近似最好」的說法讓你把 PCA 當工具用。既然前 M 個主成分是最佳的秩 M 近似,那它就可以拿來壓縮(將 p 個原值壓成 M 個得分)、去雜訊(NCI60 那種資料常先取前幾個主成分再分群)、以及最直接的——填補缺失值。下一節 P06 的矩陣補全整個建立在這個解釋上,從「變異最大」那邊完全看不出來要怎麼做。

QUIZ · 最佳低維近似

式 12.11 說「總變異 = 前 M 個主成分的變異 + M 維近似的 MSE」。由此可以推出什麼?

(A) M 愈大,前 M 個主成分的變異愈大,所以近似誤差也愈大
(B) 只有在資料標準化過的情況下這個等式才成立
(C) 把前 M 個主成分的變異最大化,等於把 M 維近似的誤差最小化
PART 04 · PVE 與 scree plot

要留幾個主成分?先看解釋了多少變異 教科書 · 第 12.2.3 節講義 12

壓到 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$。

圖表需要連網載入 Chart.js。此圖的重點:USArrests 的四個 PVE 是 62.0% / 24.7% / 8.9% / 4.3%,第二個之後就掉下來了,所以留兩個主成分(累積 86.8%)是合理的選擇。
›拖滑桿改變 M,看留住多少變異、丟掉多少。
2
課程/lab 資料
滑桿選的 M
M2
累積 PVE(留住的變異)—
丟掉的變異—
M 維近似的 RSS / TSS—
要存幾個數字—
怎麼看這張圖 圖 12.3
實線是每個主成分自己的 PVE(這就是 scree plot),虛線是累積 PVE。虛線碰到 1.0 表示所有主成分都用上了、近似變成完全相等。
肘點在哪裡?
從 62% 掉到 24.7% 是一個大落差,從 24.7% 掉到 8.9% 又是一個。課本的說法是「第二個主成分之後有一個肘點(elbow)」——第三個只解釋不到 10%、第四個不到一半的一半。
肘點由目測判斷,選擇可能因人而異。NCI60 那種資料前七個主成分合起來也只有 40%,照樣只能目測。
方法示範與原 Lab
解釋變異比例
pcaUS.explained_variance_ratio_
預期輸出
array([0.62006039, 0.24744129, 0.0891408 , 0.04335752])
來源:Ch12-unsup-lab-zh.ipynb
QUIZ · PVE 與 scree plot

USArrests 的四個 PVE 是 0.620、0.247、0.089、0.043。如果我只留前兩個主成分,那 50×4 的資料矩陣被近似得多好?

(A) 無法判斷,PVE 只說變異被解釋多少,跟近似的好壞沒有關係
(B) 近似誤差是 0.089 + 0.043 = 0.132 個單位的 MSE
(C) 近似的 R² 是 0.868,也就是殘差平方和只剩總平方和的 13.2%
深入選維度:驗證目標與資訊準則

用什麼目的選 PCA 的維度

描述資料可用累積 PVE 和 scree plot 提供讀圖依據;低變異方向仍可能含預測訊號,所以不能只靠 PVE 替監督式任務選維度。若目的是預測新觀測中的缺失欄位,可遮住格子做交叉驗證;若只是把完整新資料投影再重建,加入更多方向通常仍會降低重建誤差,這個目標不會自動懲罰過大的 rank。

高維 PCA 的資訊準則還需一個對訊號特徵值與噪聲的模型。講義連結的廣義資訊準則研究在高維條件下調整 rank 選擇懲罰;不能把普通回歸的 AIC 自由度原封不動套入。這是額外的建模選擇,沒有「PVE 過某固定百分比就一定正確」的規則。

「選幾維」先問要保留什麼

若只想描述資料,可先看每個方向的 PVE、累積 PVE 與 scree plot 的轉折,再檢查負荷量是否有可解釋的意義。若目的是分類或迴歸,rank 應依下游驗證誤差選;小變異方向可能含關鍵的回應訊號。

若目的是補未見格子,則可以在原本已觀測的格子中留出一部分,只用其餘格子擬合,再計算留出格子的預測誤差。完整新資料的重建誤差會隨 rank 增加而下降,光做這種評分常把 rank 推到最大,並不能取代「遮住格子後預測」的問題。

講義連結的高維資訊準則針對特徵值的訊號/雜訊模型設計懲罰;它不是把迴歸 AIC 的參數數量直接搬到 PCA。若沒有採用該論文的模型條件,就不能只用其公式宣稱選到真實維度。

閱讀:講義列出的高維 PCA 選維度研究。

PART 05 · 尺度化與符號

沒標準化就等於在比單位;符號翻掉不影響結論 教科書 · 第 12.2.4 節講義 12

這一節討論兩個實務問題:做 PCA 之前要不要標準化, 以及算出來的符號可以信到什麼程度。

一、尺度:不標準化就等於在比單位

PCA 找的是「變異最大」的方向。問題是變異數跟單位有關: USArrests 的 Assault 是「每十萬人的件數」,變異數 6945;Murder 也是每十萬人,但只有 18.97。 不標準化的話,第一主成分幾乎整支押在 Assault 上(負荷量 0.995), 其他三個變數等於沒參與。回到 P02 那個 biplot 元件把 toggle 切到「未標準化」就看得到。

更糟的是這個結果是任意的。如果 Assault 改成「每一百人的件數」, 數值全部除以 1000,變異數變成原來的百萬分之一,它就從主宰者變成陪襯。 沒有人希望分析結論取決於別人當年怎麼選單位,所以慣例是先標準化。

什麼時候不該標準化 變數本來就同單位、而且尺度差異本身有意義的時候。 最典型的是基因表現量:p 個基因都用同一種方法測、同一個單位, 某些基因的變異大就是生物上的事實,縮成 1 會丟掉這部分訊息。 lab 對 NCI60 還是做了 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 成對出現)。

觀念釐清
Q:主成分的符號(正負)為什麼不唯一?這會影響結論嗎?

因為最佳化問題只約束了「方向」與「長度」,沒有約束「朝哪一邊」。$\phi_1$ 與 $-\phi_1$ 定義同一條直線;投影後 $Z_1$ 與 $-Z_1$ 的變異數相同,所以兩者都是最佳解,套件回傳哪一個取決於底層的 LAPACK 實作。同一份資料用 numpy.linalg.svd 與 sklearn 的 PCA() 跑,就可能拿到整組相反的符號(lab 範例 與 51 就差在這裡)。

不影響任何實質結論,但會影響你「怎麼說」。如果 PC1 的負荷量全是正的,你會說「PC1 高 = 犯罪率高」;符號翻掉之後,同一個主成分要說成「PC1 高 = 犯罪率低」。得分也一起翻,所以哪些州靠在一起、哪些州離得遠——完全一樣。

實務上的兩個建議:(1)自己定一個約定並寫在報告裡,例如「讓負荷量總和為正」或「讓某個指標變數的負荷量為正」;(2)比較兩次分析的結果時,先對齊符號再比,不然會誤以為結果不穩定。

Q:為什麼 PCA 之前幾乎一定要標準化?什麼情況下不該標準化?

因為 PCA 的目標函數是變異數,而變異數的大小跟單位有關。USArrests 的 Assault 變異數 6945、Murder 只有 18.97,不標準化的話 PC1 的負荷量在 Assault 上是 0.995、在 Murder 上是 0.042——第一主成分退化成「Assault 換個名字」,PCA 什麼都沒做。

更關鍵的是:這個結果會隨著單位改變。把 Assault 的單位從「每十萬人」改成「每百人」,它的變異數變成百萬分之一,立刻讓位給 UrbanPop。結論不該取決於資料當初是用什麼單位記錄的,所以這裡先標準化,讓各變數以相同尺度參與分析。

不該標準化的情形:變數同單位、而且變異數的差異本身是你想保留的資訊。基因表現量、影像的畫素值、同一種感測器的多個通道都屬於這一類。即使每欄都在 0 到 1 之間,變異數也可能不同;是否標準化仍要看這些變異差異是否有分析上的意義,不能只看範圍。判斷的準則很簡單:問自己「如果某一欄乘上 1000,我希望結論改變嗎?」不希望就標準化。

QUIZ · 尺度與符號

同一份 USArrests,A 同學算出 PC1 的負荷量是 [0.54, 0.58, 0.28, 0.54],B 同學算出 [-0.54, -0.58, -0.28, -0.54]。發生了什麼事?

(A) B 同學一定弄錯了,因為負荷量的平方和要等於 1,不能是負的
(B) B 同學忘了標準化,所以符號才會反過來
(C) 兩人算的是同一個主成分,只差整組符號;只要得分也跟著反號,所有結論都一樣
深入計算:共變異數、白化與零特徵值

從共變異數到白化

本站採每列一筆觀察的中心化矩陣 $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 白化要分清楚

標準化逐欄減平均、除標準差,讓每個原變數有單位變異,但不會消除變數間的相關。PCA 白化先旋轉到主成分,再以特徵值平方根縮放每個非零方向,所以得分座標的共變異數成為單位矩陣。ZCA 則把這些白化座標旋轉回原座標系;通常保留原特徵數,卻已改變各方向尺度。

白化會放大小特徵值方向,連同其中的雜訊也可能放大。特徵值為零時不能直接取倒數;需限制在非零子空間或加入明確的正則化。維度縮減後再做 ZCA 所得矩陣的原座標共變異數是投影矩陣,不是完整的 $p\times p$ 單位矩陣。

USArrests 的欄位單位與尺度不同,因此標準化有明確理由;NCI60 的基因表現有共同量測單位,是否標準化則改變分析目標:標準化會讓低變異基因與高變異基因同等加權,並非一律較好。

閱讀:PCA 的 whiten 介面。

PART 06 · 矩陣補全

把缺失值當成主成分問題解 教科書 · 第 12.3 節講義 12

手上的資料矩陣有缺失值,怎麼辦?兩個常見的做法都不太好: 整列刪掉太浪費(也不現實——缺一格就丟掉一整個州), 用該欄的平均填補則完全沒有用到變數之間的相關。

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 的式子唯一的差別就是求和範圍, 這個目標需要用迭代求解。

圖表需要連網載入 Chart.js。此圖的重點:演算法 12.1 的目標函數(觀測格上的均方誤差)每一輪都下降,USArrests 上大約八輪就收斂。
›按「單步」跑演算法 12.1 的一輪:算秩一近似 → 覆蓋缺失格 → 算目標函數。
20
模擬示意
這一輪
缺失格數20 / 200
迭代次數0
觀測格上的 MSS—
相對改善—
上面那張圖在看什麼
每一欄是一個州(依字母序),四列是四個變數。顏色是標準化後的數值(藍 = 低、紅 = 高)。白色虛線框是被挖掉的格子;按「單步」之後它們會被填上顏色,外框變成橘色。橘框裡的顏色跟旁邊的真值像不像,就是這個方法準不準。
使用矩陣補全前需檢查的條件 1. 缺失機制需要檢查(missing at random)。 隨機漏測與「病人太重上不了秤」的缺失不同:後者直接依賴未觀測的重量,單靠已觀測資料的低秩補值可能系統性偏低。即使符合 MAR,也不自動保證這個特定補值演算法無偏。
2. 變數之間要有相關。低秩近似能發揮作用是因為欄與欄之間可以互相預測; 四個互相獨立的變數,補值不會比欄平均好。
3. M 要選。選太小補不出細節,選太大會把雜訊也擬合進去。 課本第 11 題就是叫你把缺失比例從 5% 掃到 30%、M 從 1 掃到 8,看誤差怎麼變。
方法示範與原 Lab
以欄平均初始化缺值
Xhat = Xna.copy() Xbar = np.nanmean(Xhat, axis=0) Xhat[r_idx, c_idx] = Xbar[c_idx]
來源:Ch12-unsup-lab-zh.ipynb
設定補值迭代的停止條件
thresh = 1e-7 rel_err = 1 count = 0 ismiss = np.isnan(Xna) mssold = np.mean(Xhat[~ismiss]**2) mss0 = np.mean(Xna[~ismiss]**2)
來源:Ch12-unsup-lab-zh.ipynb
依低秩近似更新缺值
while rel_err > thresh: count += 1 # Step 2(a) Xapp = low_rank(Xhat, M=1) # Step 2(b) Xhat[ismiss] = Xapp[ismiss] # Step 2(c) mss = np.mean(((Xna - Xapp)[~ismiss])**2) rel_err = (mssold - mss) / mss0 mssold = mss
來源:Ch12-unsup-lab-zh.ipynb
QUIZ · 矩陣補全

演算法 12.1 的步驟 2(b) 只把缺失的格子換成低秩近似值,觀測到的格子保持原值。為什麼不乾脆全部換掉?

(A) 觀測值是真實資料,是唯一的資訊來源;換掉它們就沒有東西可以把近似「拉住」了
(B) 全部換掉在數學上也對,只是會多算幾輪比較慢
(C) 因為觀測格沒有誤差,低秩近似在那些位置一定完全等於原值
補值驗證、可識別性與單調性推導

矩陣補全要驗證什麼

把實際觀測集合分成擬合集合與保留格子,僅用擬合格子的資料做中心化、初始化和迭代,以保留格子 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$。新估計的觀測格損失不超過其全矩陣損失,後者又不超過舊估計損失,證得觀測格目標不增。這不保證找出全域解,也不保證缺失格預測正確。

跟著 USArrests 補值流程看限制

Lab 從已標準化、置中的 USArrests_scaled 開始,再挖出缺失格。low_rank() 每次直接對當前填補矩陣做 SVD,保留前 M 項;它沒有逐輪重新算均值、置中或加回均值。迭代時觀測格永遠保留原值,只有缺失格由目前的低秩估計覆蓋,因此觀測值仍能約束下一輪的方向。

講義用 50 州、4 欄的資料,在 20 個州各挖掉一格,共 20/200=10% 缺失,取一個主成分。100 次抽樣得到的平均相關約 $0.63$、標準差 $0.11$,是講義的重複抽樣摘要;以完整資料的主成分估計被遮格子得到約 $0.79$,已使用真值資訊,不能當成可部署的公平比較。

一次 Lab 的相關係數不應要求恰等於講義的 100 次平均。補值仍需檢查絕對誤差與偏差,因為相關高也可能整體偏移。推薦系統裡沒有評分通常還與使用者選擇有關,不是隨機漏測;低秩模式有用,但缺失機制與冷啟動使用者/項目仍要另外處理。

閱讀:ISLP:Matrix Completion 與推薦系統。

PART 07 · K-means

指派、更新、再指派:目標函數單調下降 教科書 · 第 12.4.1 節講義 12

K-means 希望每個群內的點靠近自己的群心,常用的目標是

$$\sum_k\sum_{i\in C_k}\|x_i-\mu_k\|^2.$$

反覆做兩步:先把點指派給最近群心,再把每群中心更新為平均。不同初始值可能得到不同的最終分群。

完整 K-means:平方和、停止條件與證明

換一種化簡方式:不找低維座標,直接把資料分成 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$$

右邊只需要算每個點到群心的距離。這個恆等式能減少計算量, 也說明了演算法為何反覆更新群心與各點的分組:

K-means 的停止條件

完整演算法須維持每群非空,並固定同距時的處理規則,例如優先保留原指派。空群可重新初始化,這是額外步驟,需重新核對目標。沒有 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 與初始化。

演算法 12.2(K-means) 步驟 1:隨機給每一筆資料一個 1 到 K 的編號。
步驟 2:重複下面兩件事,直到指派不再改變:
  (a) 算出每一群的形心(群內每個特徵的平均)。
  (b) 把每一筆資料指派給最近的形心。
兩步都保證讓目標函數下降:(a) 因為平均是讓平方偏差最小的常數; (b) 因為換到更近的形心只會讓自己那一項變小。所以目標函數單調不增;停止還需一致處理同距點並避免空群。
›選 K 之後按「單步」,交替執行「算群心」與「重新指派」。
模擬示意
演算法 12.2
隨機指派 1..K 給每一點 while 指派還在變: # 2(a) 群心 = 群內平均 # 2(b) 每點 → 最近的群心 回報這組指派
目前狀態
K3
第幾步—
這一步在做什麼—
群內平方和—
有幾點換了群—
換過的初始值 圖 12.9
試過幾組0
最好的收斂值—
最差的收斂值—
重點在右邊那條曲線
右邊畫的是群內平方和隨步數的變化。它只會往下,不會往上。這就是式 12.18 保證的事。曲線壓平就是收斂了。
但收斂到的是局部極小。按「換初始值」幾次,你會看到同樣的 K 收斂到不同的值(課本圖 12.9 在同一份資料上跑六次,得到三個不同的局部極小)。
方法示範與原 Lab
K-means 分群
kmeans = KMeans(n_clusters=2, random_state=2, n_init=20).fit(X)
來源:Ch12-unsup-lab-zh.ipynb
觀念釐清
Q:K-means 為什麼每次跑可能給不同答案?該怎麼辦?

因為演算法 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——上面那張元件的「換初始值」按鈕,按幾次就會看到這個現象。

QUIZ · K-means

為什麼 K-means 的群內平方和一定會單調下降,最後一定會停?

(A) 因為每一步都會減少群數,群數減到 K 就停了
(B) 因為 scikit-learn 設了 max_iter 上限,跑到上限就停
(C) 步驟 2(a) 用群內平均使平方偏差最小、步驟 2(b) 把點移到更近的形心,兩步都不會讓目標變大
PART 08 · 階層式分群

不用先決定 K:dendrogram 與四種 linkage 教科書 · 第 12.4.2 節講義 12

K-means 有個明顯的麻煩:你得先決定 K。 階層式分群不必。它一次把 1 到 n 群的所有結果都算出來,畫成一棵樹, 你要幾群就切在對應的高度。

凝聚式(agglomerative,也叫 bottom-up)的做法如下:

演算法 12.3(階層式分群) 步驟 1:每一筆資料自己是一群, 算出所有 $\binom{n}{2}$ 對的相異度。
步驟 2:從 i = n 做到 2:
  (a) 在目前 i 群裡找最相似的一對,把它們合併。 這一對的相異度就是樹上合併的高度。
  (b) 重算剩下 i − 1 群之間的相異度。

讀樹狀圖(dendrogram)時,要區分合併高度與水平位置:

用合併高度讀樹狀圖 兩筆資料有多相似,看的是它們所在的分支第一次合併的高度, 水平方向的距離由排版決定。
ISLP 圖 12.12 的例子:第 9 號與第 2 號在圖上左右相鄰, 但第 9 號跟第 2、8、5、7 號都是在同一個高度(約 1.8)才合併的, 所以它跟這四個的相似度完全一樣。
原因是每一次合併都可以把左右兩支對調而不改變樹的意義, n 個葉子有 $2^{n-1}$ 種等價的畫法。水平位置只是其中一種排法而已。

剩下的問題是:兩群之間的相異度怎麼定?這叫做 連結方式(linkage),完整定義可在本節的查閱表展開。 換 linkage,樹的形狀會整個變。這是這一節最重要的實驗。

›拖動橘色切線改變群數,用下拉選單比較四種 linkage。
模擬示意
這一刀切出什麼
linkagecomplete
切在高度—
切出幾群—
最高的合併—
「一次只黏一顆」的合併次數—
怎麼玩
拖動橘色虛線(或用滑桿)上下移動切線,左邊的散佈圖會同步上色。往上切群數變少、往下切變多。
用下拉選單比較:把 linkage 換成 single,觀察樹狀圖如何變成鏈狀。
single linkage 的鏈狀效應 圖 12.14
single 取兩群之間最小的距離,所以只要有一個點靠近某個大群,整群就被拉過去。結果是一個很大的群不斷把單一觀測值一顆一顆黏上去(trailing cluster),切下去往往得到「一大群 + 幾個單點群」。右側那個「一次只黏一顆」的次數就是在量這件事。
centroid 的反轉
把 linkage 換成 centroid,注意有些合併會出現反轉(inversion):兩群合併的高度比它們各自的高度還低,線段變成往上長。這種樹很難解讀,所以統計上偏好 complete 與 average。
查閱四種 linkage 的完整定義
Linkage群間相異度的定義樹的形狀評語
Complete兩群之間最大的那個距離平衡、群大小相近常用;最遠距離仍可能受離群值影響
Average所有跨群配對距離的平均平衡最常用;統計上性質較好
Single兩群之間最小的那個距離鏈狀、拖尾容易產生一大群 + 多個單點群,少用
Centroid兩群形心之間的距離可能出現反轉基因體學常用,但反轉讓樹難以解讀

相異度也要選:歐氏距離還是相關係數?

前面一直用歐氏距離。若分析著重輪廓的形狀,可以改用相關係數: 兩位顧客一個買很多、一個買很少,但買的品項比例一致—— 歐氏距離很大,相關係數距離($1 - r_{ii'}$)很小。 ISLP 圖 12.15 就是這個對比。哪個對,取決於你的科學問題,沒有預設答案。

方法示範與原 Lab
建立階層式分群
HClust = AgglomerativeClustering hc_comp = HClust(distance_threshold=0, n_clusters=None, linkage='complete') hc_comp.fit(X)
來源:Ch12-unsup-lab-zh.ipynb
QUIZ · 讀樹狀圖

在一棵樹狀圖上,第 3 號與第 7 號葉子左右緊鄰,但它們所在的分支要到高度 8 才合併;第 3 號與第 20 號隔了很遠,卻在高度 2 就合併了。誰跟第 3 號比較相似?

(A) 第 20 號,因為相似度看的是「第一次合併的高度」,2 比 8 低
(B) 第 7 號,因為在樹狀圖上相鄰代表被歸在同一個小群
(C) 看不出來,樹狀圖只能看群數,不能比較個別觀測值
深入階層方法:Ward 與分裂式

Ward 與階層假設

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 都可能讓不同合法的樹產生;葉子左右換位只改圖的畫法,改合併對象則會改樹本身。

證明:Ward 的平方和增加量

令 $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 是畫圖顏色門檻,不能以改顏色就當成模型已產生新的群標籤。

閱讀:各種 linkage 與距離條件、把階層式分群用在特徵。

PART 09 · 分群的實務問題

要不要標準化、離群值怎麼辦、結果穩不穩 教科書 · 第 12.4.3 節講義 12

實際分群時,前處理與參數選擇都會影響結果。ISLP §12.4.3 把它們列成一張清單, 每一項都會實質改變結果:

原 Lab

下面這個元件沿用課本圖 12.16 的「襪子與電腦」情境;課本提供概念,逐筆數值另作示意設定。 八位顧客的購買次數、單價與離群值都是本站為呈現尺度效應而設定的示意值。 它只用來說明:資料不變而尺度改變時,K = 2 的分群可能跟著改變, 不能把畫面上的群或 WSS 當成課本實證結果。

›換一種尺度,同樣八位顧客的 K = 2 分群結果就變了。
概念示意
K = 2 的結果
目前的尺度原始次數
第 1 群—
第 2 群—
分群其實由誰決定—
群內平方和—
三種尺度在做什麼 圖 12.16
原始次數:襪子 0–11 雙、電腦 0–1 台。襪子的變異大得多,距離幾乎只由襪子決定,電腦等於沒參與。
標準化:兩個變數都變成變異數 1,電腦終於有影響力——分群變成「有買電腦」與「沒買電腦」。
花費金額:電腦一台 1400 元、襪子一雙 2 元,換算成金額之後反過來由電腦主宰。
加入離群值
按下去會加入第 9 位顧客:買了 60 雙襪子、沒買電腦。K-means 一定要把每一點分進某一群,所以這一個點會硬生生把一整群拉過去,剩下八位全部被擠進另一群。
課本的建議是改用混合模型(mixture model,K-means 的「軟」版本),或者先把明顯的離群值挑出來單獨處理。
課本第 5 題就是這一題 第 5 題
ISLP 第 12.6 節第 5 題:「用圖 12.16 的三種尺度各跑一次 K = 2,描述你預期看到什麼。」用上方選單切換三種尺度,就能比較結果。

「分群結果對不對」有客觀標準嗎?

沒有一個通用指標能直接證明群具有實質意義。 任何時候把資料丟去分群,它都會給你群——即使資料是純雜訊。 要檢查的是「這些群在獨立的新資料上也會出現嗎」, 文獻提出過不同的分群 p 值方法,其適用方式仍有爭議(細節在 ESL)。

能做的是幾件比較樸素的事:

做法怎麼做在檢查什麼
換設定重跑換 linkage、換距離、換 K、標準化與否哪些結構每次都出現(那些比較可信)
抽子樣本重跑隨機丟掉 10–20% 的資料再分群一次分群對擾動穩不穩(通常不太穩)
對照外部標籤有領域標籤時用 crosstab 或 ARI 比對分群有沒有抓到已知的結構(限於事後檢查,避免用同一標籤調參)
看得出解釋嗎每一群的變數平均長什麼樣,能不能講成一句話群有沒有實質意義,還是只是切開了連續的雲
觀念釐清
Q:分群結果「對不對」要怎麼判斷?沒有 y 的時候有沒有客觀標準?

沒有一個通用數字能直接證明群是真的。沒有已知群標籤時,不能直接算分類錯誤率;但仍可先訂評估目標,再比較幾何結構、穩定性或留出資料上的表現。

可以併用三種檢查:(1)穩定性——換設定、抽子樣本重跑,看哪些群每次都在;(2)可解釋性。每一群能不能用領域語言講成一句話;(3)外部驗證——在獨立的新資料上重做一次,或對上事後才知道的標籤。ISLP 將分群結果定位為形成科學假設的起點,仍需後續證據檢驗。

Q:PCA 與分群都在「找結構」,差在哪?

差在產出的東西是連續還是離散。PCA 給每一筆資料一組新的連續座標(得分),資料在低維空間裡還是一片雲;分群給每一筆資料一個離散的群編號,雲被切成幾塊。

對應的假設也不同。PCA 假設「大部分變異集中在少數幾個方向」,它不假設資料裡有子群。如果真的只有一片橢圓形的雲,PCA 照樣給你很有用的答案。分群則假設「資料由幾個同質的子群組成」,如果實際上是連續漸變的,切出來的界線就是人造的。

實務上兩者常常串起來用,而且順序有講究:先 PCA 再分群是很常見的做法(lab 範例 就對 NCI60 的前五個得分向量做階層式分群),理由是前幾個主成分可以看成資料的低雜訊版本。反過來也有用:分群完之後,用前兩個主成分的散佈圖把群畫出來,因為 p > 2 的時候你沒別的辦法看。

QUIZ · 分群的實務決策

資料裡有兩三個明顯的離群值(例如那位買 60 雙襪子的顧客)。對 K-means 與階層式分群,下面哪個處理方式最站得住腳?

(A) 階層式分群不受影響,因為離群值會自己形成一個單獨的分支
(B) 兩種方法都會被離群值扭曲,因為它們強迫每一點都進某一群;該先辨識並單獨處理,或改用允許「不屬於任何群」的方法
(C) 只要把資料標準化,離群值的影響就會被消掉
延伸方法概觀與密度分群的完整流程

密度分群:DBSCAN、OPTICS 與 HDBSCAN

DBSCAN 以半徑 $\varepsilon$ 與最少點數 minPts 定義密度:含自身的鄰域至少有 minPts 筆就是核心點。從核心點沿核心鄰接關係擴張成群;非核心但落在核心鄰域內的是邊界點,其餘標為雜訊。邊界點不再向外擴張,否則稀疏的橋接點會把不同群錯接起來。它能找非球狀群,也不用先給群數,但同一密度門檻不適合差異很大的密度。

OPTICS 以可達距離的排序保留多種密度尺度。HDBSCAN 以核心距離修正點間距離,建立密度階層,再依群在不同尺度的穩定性選群;min_cluster_size 控制最小群大小,min_samples 也影響對雜訊的保守程度。這些方法能留下雜訊點,仍需檢查尺度、距離、參數與重抽樣的穩定性。

Mean shift、混合模型與譜分群

Mean shift 把候選中心移到鄰近點的加權平均,反覆向核密度的高處移動;收斂到相近模態的起點併為一群。頻寬決定平滑程度與可辨識的模態數,不必預先指定 K,卻仍需選頻寬。高斯混合模型以多個高斯成分的加權密度表示資料,EM 交替更新各點屬於各群的後驗機率(責任值)與參數,允許軟分群;一般高斯混合仍會為每個點計算各群的責任值,若要處理離群值需另外設計雜訊成分或穩健模型。變分貝氏混合在成分權重與參數上加入先驗,以近似後驗估計不確定性。

譜分群(spectral clustering)先建立相似度圖,利用圖 Laplacian 的特徵向量嵌入,再於嵌入座標分群。鄰接圖、核尺度與群數會改變答案;它與 DBSCAN 都能處理某些非球狀群,但一般並非同一演算法。

混合型資料與分群後的用途

名目類別不可任意編號後直接套歐氏距離。可只用連續特徵、對類別做適當編碼並控制權重、使用結合數值距離與類別不一致的成本的 k-prototypes,或先用混合資料因素分析得到連續座標。這些選擇代表不同的「相似」定義,需要連同結果報告。

分群標籤、到各群中心的距離及特徵聚合都能當作監督式模型的輸入;群標籤本身通常應視為類別。評估時分群也要只在訓練折擬合。少量標記時,可優先標註群中心附近的代表樣本,再在群內傳播標籤;這依賴群大致對應真實類別的假設,群跨越類別時會放大錯誤。

從密度鄰域到 HDBSCAN 的階層

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 密度分群文件。

Mean shift 的更新式

使用平滑核密度時,令 $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 的密度階層

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 決定尺度

講義附錄的 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。講義的影像分割例子是以相似顏色/位置形成群,群的意義仍由選用特徵決定。

混合模型:EM、責任值與變分貝氏

高斯混合模型與 EM 的完整更新

用 $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。

證明: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:譜方法。

證明:Laplacian 為何找平滑的群指示方向

對稱 $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 的雜訊標籤。

閱讀:k-modes/k-prototypes、Prince:FAMD、混合資料分群比較的研究條件。

跟著 Lab 解讀 DBSCAN:群標籤、核心點與雜訊

Lab 先產生三中心資料並標準化,再以 eps=0.3, min_samples=10 執行 DBSCAN。labels_ 為每筆資料的群編號,-1 是雜訊;群數應排除這個標籤。core_sample_indices_ 另指向核心點,因此「不是核心」還要再分邊界點與雜訊。

原 Lab:DBSCAN 與群數
# Compute DBSCAN db = DBSCAN(eps=0.3, min_samples=10).fit(X) core_samples_mask = np.zeros_like(db.labels_, dtype=bool) core_samples_mask[db.core_sample_indices_] = True labels = db.labels_ # Number of clusters in labels, ignoring noise if present. n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) n_noise_ = list(labels).count(-1)
來源: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:先做無監督探索,再對照癌症類型

NCI60 的 64 個細胞株各有 6830 個基因表現特徵。癌症類型已有標籤,但 PCA 與分群時不使用;完成後才上色與製作交叉表。這正是「標籤只用於解讀」與「用標籤選擇模型」的差別。

原 Lab:NCI60 的標準化與 PCA
scaler = StandardScaler() nci_scaled = scaler.fit_transform(nci_data) nci_pca = PCA() nci_scores = nci_pca.fit_transform(nci_scaled)
來源:Ch12-unsup-lab-zh.ipynb

Lab 的碎石圖在前幾個方向出現轉折,前七個主成分累積約解釋四成變異。可先觀察這些方向,但剩下六成仍可能含有訊號;前兩個成分也未必能分開所有癌症類型。

接著比較 complete、average 與 single linkage,再切成四群與癌症標籤交叉比較。白血病細胞株集中,而乳癌細胞株分散,可能反映生物異質性,也可能與量測、尺度或分析選擇有關。單張交叉表不足以建立新的疾病亞型。

原 Lab:四群與已知癌症類型的交叉表
linkage_comp = compute_linkage(hc_comp) comp_cut = cut_tree(linkage_comp, n_clusters=4).reshape(-1) pd.crosstab(nci_labs['label'], pd.Series(comp_cut.reshape(-1), name='Complete'))
來源:Ch12-unsup-lab-zh.ipynb

最後比較四群 K-means 與階層分群,並改用前五個 PCA 得分做階層分群。前處理改變了距離:原基因空間中的差異可能被捨棄,因此兩種分群不同是需要解讀的結果,不是必定哪一種錯誤。群編號換名不改變群成員,應用交叉表或對編號不敏感的指標比較。

資料:NCI60 的特徵與標籤。

PART 10 · 流形學習與 t-SNE

非線性降維:t-SNE 的讀圖方式與解讀範圍 講義 12進階參考 · 第 14.9 節 · 進階ESL 進階

延伸方法、套件用途與理論保證範圍

這一節接續線性 PCA,說明講義的流形學習與 t-SNE。先讀核心直覺,再展開演算法與限制。

t-SNE 的使用範圍 t-SNE 幾乎只能用來「看」。 sklearn 的 TSNE 沒有 transform()(新資料無法投影到既有的嵌入上, openTSNE 之類的套件才另外提供近似做法), 也不像 PCA 有負荷量可以解讀「這個方向由哪些變數組成」。
要當前處理放進 pipeline,UMAP 比較合適。它有 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 或分群的數學假設。

教材:李宏毅:Self-Supervised Learning、t-SNE 的 PCA 初始化與多尺度實務研究。

PCA 是線性投影:它只能把資料壓到一個平面上。 可是很多高維資料的結構是彎的——想像一張捲起來的紙, 紙上相鄰的兩點在三維空間裡可能隔得很遠,而 PCA 只會把整捲紙壓扁,把不該相鄰的點壓在一起。 流形學習(manifold learning)就是假設資料落在一個低維的彎曲流形上, 想辦法把它攤平。

最有名的是 t-SNE(t-distributed stochastic neighbor embedding)。 它的目標是保留資料的鄰近關係:

  1. 在高維空間把「j 是 i 的鄰居」轉成機率 $p_{ij}$(距離近的機率大,用高斯核, 寬度由 perplexity 控制)。
  2. 在低維空間對同一對點也定一個機率 $q_{ij}$,但用重尾的 t 分佈。
  3. 調整低維座標,讓兩個分佈的 KL 散度最小。

第 2 步為什麼要換成 t 分佈?因為高維空間「裝得下」的鄰居比低維多得多, 硬要用高斯核會讓所有點擠在一起(crowding problem); t 分佈的尾巴重,允許中距離的點被推得比較遠,圖才會散開。

圖表需要連網載入 Chart.js。此圖的重點:PCA 的線性投影把十個數字混在一起,t-SNE 的投影呈現清楚的團,解讀仍應限於局部鄰近關係;團的大小與團間距離會受投影影響。
›同一批 1797 張手寫數字,換方法看嵌入結果怎麼變。
課程/lab 資料
目前這張圖
方法PCA(線性投影)
點數—
原始維度8 × 8 = 64
類別數10
怎麼比
同一批 1797 張手寫數字(load_digits,8×8 灰階)用三種方法壓到 2 維,顏色是真實的數字標籤——標籤沒有參與計算,只用來上色。
切到 perplexity = 5 再切到 30,看同一份資料可以長得多不一樣。
t-SNE 的四個陷阱 講義
1. 座標沒有意義,軸也沒有單位,不要說「往右邊是什麼」。
2. 團的大小不可信——t-SNE 會把稀疏的團擴張、密的團壓縮。
3. 團之間的距離不可信,全域結構不保證被保留。
4. 換參數就換一張圖:perplexity、學習率、初始化、隨機種子都會變。所以要多跑幾組再下結論。
方法示範與原 Lab
t-SNE 的設定與嵌入
tsne = TSNE( n_components=2, perplexity=30, init="pca", learning_rate="auto", random_state=0, verbose=True ) embedding = tsne.fit_transform(X)
來源:Ch12-unsup-lab-zh.ipynb
QUIZ · t-SNE 的讀法

一張 t-SNE 圖上,A 團與 B 團距離很遠,A 團看起來比 B 團大三倍。可以下什麼結論?

(A) 圖無法單獨支持這些推論:t-SNE 不保證保留團的大小與團間距離
(B) A 群的樣本數大約是 B 群的三倍
(C) A 與 B 距離遠,代表它們在原始 64 維空間裡也離得很遠
完整 t-SNE:鄰居機率、參數與梯度

t-SNE 的目標與調整參數

高維條件鄰居機率可寫成 $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、crowding 與 t-SNE 的完整機率

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 與逐輪最佳化

  1. 選定 perplexity $k$,對每個點以二分搜尋調整 $\sigma_i$,使 $H(P_i)=-\sum_jp_{j\mid i}\log_2p_{j\mid i}\approx\log_2k$。它是有效鄰居數,並非硬性只保留 $k$ 個點。
  2. 建立固定 $P$,以小尺度隨機值或 PCA 初始化 $z$,記錄種子。不同初始化可能進入不同局部解。
  3. 每輪重算 $w,Z,Q$ 與上式梯度,以 $z_i^{(t+1)}=z_i^{(t)}-\eta\nabla_iC$ 更新;常見實作另加 momentum。
  4. early exaggeration 階段把吸引項的 $p_{ij}$ 乘一個大於 1 的係數,再恢復原本目標。檢查進度、最後梯度和多次結果,不能只挑最分開的一張圖。

鄰居距離完全相等時,不是任意 perplexity 都能靠改 $\sigma_i$ 達成。

精確的全配對計算需要平方級的配對數;Barnes–Hut 用空間樹近似遠處排斥,FIt-SNE 則用插值與 FFT 加速,改的是數值近似而非可任意改寫的目標。angle 控制 Barnes–Hut 的精度/速度取捨。KL 的跨次比較需固定資料、$P$、perplexity 與目標階段;early exaggeration 階段報值不能直接當成同一未誇張 KL 的可比數字。

來源:openTSNE:t-SNE 如何運作與講義連結的原始演算法文獻。

證明: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$,這也解釋為何不同密度區域在圖上可能被放大/壓縮。

閱讀:t-SNE 原始論文、Barnes–Hut t-SNE、TSNE 參數定義。

EXERCISES · 練習

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

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

進一步練習:計算與推理題
EXERCISE 1 · ISLP §12.6 第 1 題(b)

課本第 1 題要你先證明恆等式 12.18,再用它說明演算法 12.2 每一輪都讓目標函數 12.17 下降。這個論證的關鍵是什麼?

(A) 因為每一輪都會有點換群,換群一定讓目標下降,所以會一直下降到 0
(B) 式 12.18 把「群內兩兩距離」換成「各點到群心的距離」,於是步驟 2(a) 取平均與步驟 2(b) 取最近,各自都在最小化那個和
(C) 因為 K-means 的目標函數是凸的,梯度下降保證收斂到全域最小
EXERCISE 2 · ISLP §12.6 第 4 題(b)

single linkage 與 complete linkage 各做一棵樹。在 single 的樹上$\{{5\}}$ 與 $\{{6\}}$ 這兩群在某個高度合併;complete 的樹上它們也會合併。哪一棵的合併位置比較高?

(A) 一樣高,因為兩群都只有一個點,最大距離與最小距離都是 d(5,6)
(B) complete 比較高,因為 complete linkage 的高度總是大於或等於 single
(C) 資訊不足,要看資料才知道
EXERCISE 3 · ISLP §12.6 第 5 題

課本第 5 題:用圖 12.16 的三種尺度各跑一次 K = 2(襪子與電腦),分別預期看到什麼?

(A) 三種尺度會給同樣的分群,因為 K-means 對線性變換是不變的
(B) 原始次數 → 由襪子決定;標準化 → 變成「有買電腦 / 沒買電腦」;花費金額 → 由電腦決定
(C) 標準化之後電腦的影響會消失,因為 0/1 變數標準化後變異數變成 1 太小
EXERCISE 4 · ISLP §12.6 第 8 題

課本第 8 題要你在 USArrests 上用兩種方式算 PVE:(a) 讀 explained_variance_ratio_;(b) 拿 components_ 直接套式 12.10。提示裡特別警告了什麼?

(A) 警告 components_ 的符號可能跟公式的推導相反,要先把符號翻回來
(B) 兩邊必須用同一份資料:(a) 用標準化後的資料跑 PCA,(b) 就也得先標準化再套公式
(C) 警告要用 ddof=1 算變異數,否則兩邊差一個 n/(n−1) 的因子
重點速查與來源

非監督式學習速查表 教科書 · 第 12 章

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

本頁書目與章節定位

  • 教科書:An Introduction to Statistical Learning with Applications in Python。James、Witten、Hastie、Tibshirani、Taylor,2023。原書與下載資訊
    本頁對應:教科書 · 第 12.1 節;教科書 · 第 12.2.1 節;教科書 · 第 12.2.2 節;教科書 · 第 12.2.3 節;教科書 · 第 12.2.4 節;教科書 · 第 12.3 節;教科書 · 第 12.4.1 節;教科書 · 第 12.4.2 節;教科書 · 第 12.4.3 節。
  • 進階參考:The Elements of Statistical Learning。Hastie、Tibshirani、Friedman,第二版。原書與下載資訊
    本頁對應:進階參考 · 第 14.9 節 · 進階。
方法與公式速查

考前把這一頁掃過去就好。

PCA 與分群:同樣在化簡,問的問題不同

PCAK-means階層式分群
產出連續的低維座標(得分)K 個離散群標籤一棵樹(1 到 n 群都在裡面)
要先決定M(留幾個主成分)K相異度、linkage、切在哪
有隨機性嗎精確分解無隨機性;近似求解器可能有有(初始指派)沒有
結果唯一嗎相異特徵值的方向僅差符號;重根可旋轉局部極小,換初值會變無距離 ties 且規則固定時確定;左右翻轉只改畫法
要標準化嗎依單位與變異差異的意義決定依距離的各欄權重決定依相異度與各欄尺度決定
對離群值會被拉走(變異最大化)強迫入群,會扭曲常自己掛高處,吃掉群額度
常見用途視覺化、去雜訊、補值、當特徵市場區隔、量化子群探索階層結構、基因體學

四種 linkage

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 的根據
CARDS · 關鍵詞彙卡

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

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

複習:展開關鍵詞彙卡