🧵 UMAP 非線性降維 · iPAS 考點
UMAP:先連出一張鄰居網,再把整張網攤平
UMAP 假設你的資料其實躺在一張捲起來的低維曲面(流形)上。它先幫每個點連出鄰居、織成一張網,再想辦法把這張網攤平到 2D 而不撕破鄰居關係。比 t-SNE 快、通常較能保留全局結構,而且可以套用到新資料。
非線性降維流形學習n_neighborsmin_dist可 transform 新資料比 t-SNE 快
🧭 一、先用白話講:UMAP 在做什麼?
UMAP 全名 Uniform Manifold Approximation and Projection(均勻流形近似與投影),2018 年由 McInnes 等人提出。
🍰 生活比喻:把瑞士捲攤平
一條瑞士捲看起來是立體的,但它本質上只是一張被捲起來的平面蛋糕皮。你要做的不是從某個角度拍張照,而是順著捲的方向把它攤開。
PCA 只能拍照——線性投影再怎麼選角度,拍出來都是一個漩渦:內圈和外圈在照片上貼在一起,可是沿著蛋糕皮走,它們隔了一整圈。距離被講錯了。
UMAP 會把它攤開——因為它只在乎「誰原本挨著誰」,順著鄰居關係一路展開,捲就被解開,蛋糕皮上的遠近才回到正確的樣子。
所謂「流形(manifold)」講的就是這件事:資料的維度很高,但真正的自由度很低。一萬張手寫數字圖片是 784 維,可是決定一個「7」長什麼樣的其實只有筆畫粗細、傾斜角、彎曲度等寥寥幾個因素——那幾個因素張出來的低維曲面,就是流形。UMAP 的工作,就是把這張曲面找出來、攤平給你看。
🕸️ 二、核心兩步:連鄰居網 → 把網攤平
① 高維:織一張模糊鄰居網每個點找出最近的 n_neighbors 個鄰居連線,每條線帶一個 0~1 的權重=「我有多確定你是我的鄰居」。
② 低維:把網攤平在 2D 上,有連線的點互相吸引,隨機抽樣的非鄰居互相排斥,反覆微調直到兩張網「長得最像」。
細節一:權重怎麼算(為什麼叫「模糊」)
對每個點 $i$,先量到最近鄰的距離 $\rho_i$,再找一個尺度 $\sigma_i$,把距離換成 0~1 的相似度:
$w_{i \to j}=\exp\!\left(-\dfrac{\max(0,\; d(i,j)-\rho_i)}{\sigma_i}\right)$
🔑 兩個關鍵設計
減掉 $\rho_i$:保證每個點至少跟它的最近鄰完全相連(權重=1)——不會有任何點變成孤島。
每個點各有自己的 $\sigma_i$:密集區用小尺度、稀疏區用大尺度,等於把資料「局部拉成密度均勻」再處理。這正是名字裡「Uniform(均勻)」的由來。
最後把兩個方向合併成一條無向邊:$w_{ij}=w_{i\to j}+w_{j\to i}-w_{i\to j}\,w_{j\to i}$(模糊集合的聯集)。
細節二:攤平時在最小化什麼
UMAP 最小化高維網與低維網之間的交叉熵(cross-entropy),用 SGD + 負採樣來跑:每一步只挑一條邊做吸引、再隨機抓幾個點做排斥(預設 negative_sample_rate=5),不必像 t-SNE 那樣每步計算所有點對。這就是它快的主因。
📌 和 t-SNE 的機制對照(很好記)
t-SNE:高斯 P → t 分布 Q,最小化 KL 散度;KL 只重罰「該近的變遠」,對「該遠的變近」比較寬容 → 所以它顧局部、不顧全局。
UMAP:模糊鄰居圖 → 低維圖,最小化交叉熵;交叉熵兩邊都罰(該近的要近、該遠的也要遠)→ 所以全局骨架比較留得住。
🎛️ 三、兩顆旋鈕:n_neighbors 與 min_dist
UMAP 只有兩個參數你非調不可,而且考試最愛考它們的分工。
| 參數 | 預設 | 管什麼 | 調小 ↓ | 調大 ↑ |
| n_neighbors | 15 | 看多大範圍的鄰居 (局部 ↔ 全局) | 只看眼前幾個點 → 細節多、群容易碎成小塊 | 看到整體骨架 → 全局結構好、細節被抹平 |
| min_dist | 0.1 | 低維裡兩點最近可以擠多近 (只影響「畫得多擠」) | 群更緊實、輪廓分明,適合看群集/接後續分群 | 點分散得均勻,適合看整體拓撲與連續變化 |
⚠️ 最常錯的一題
n_neighbors 決定「看多遠」,會改變拓撲結構;min_dist 只決定「畫多擠」,不改變誰跟誰相連。
所以圖看起來群黏在一起 → 先調 min_dist 調小;圖碎成一堆小塊、失去大架構 → 調 n_neighbors 調大。
另外 min_dist 可以設成 0(點可以完全重疊),這是「UMAP 降維後接 HDBSCAN 分群」的常用設定。
🆚 和 t-SNE 的 perplexity 比較
perplexity ≈ n_neighbors——都是「每個點考慮幾個鄰居」。但 t-SNE 沒有 min_dist 這顆旋鈕:畫面擠不擠是 t 分布長尾自己決定的,你控制不了。
🎮 四、動手玩:把瑞士捲攤平
彩虹色代表點在原始蛋糕皮上的位置:顏色接近=原本就是鄰居。攤平成功的話,顏色會依序排成一條不打結的帶子(紫→藍→綠→黃→紅);失敗的話,顏色會捲成漩渦——內圈和外圈明明隔了一整圈,圖上卻緊貼在一起。
Epoch: 0 / 300
邊數: -
鄰居保留率: -
模式:UMAP 攤平中
🗺️ 三個一定要試的操作
① 按「📐 看 PCA 怎麼壓」:你會看到一個從正上方俯瞰的漩渦。注意紫色的內圈和它外面那一圈只差幾公釐,可是沿著蛋糕皮走其實隔了一整圈——PCA 的局部沒錯,錯的是全局距離,這種「看起來很近、其實很遠」的假鄰居正是線性降維解不開流形的鐵證。切回 UMAP,漩渦會被拉開成一條顏色依序排完的帶子。
② 把 n_neighbors 拉到 3~5 再重置:帶子會斷成一截一截、還打了幾個折——因為每個點只看得到眼前幾個鄰居,接不起大架構。
③ 把 min_dist 從 0 拉到 1:注意顏色的排列順序完全沒變,只是整條帶子被推得比較鬆——親眼確認「min_dist 不改變拓撲」。
⚖️ 五、PCA vs t-SNE vs UMAP:三方法總對照
| 比較 | PCA | t-SNE | UMAP |
| 類型 | 線性 | 非線性 | 非線性(流形學習) |
| 著重 | 全局變異 | 局部鄰近 | 局部為主,兼顧部分全局 |
| 速度 | 最快 | 慢 | 快(負採樣,可上百萬筆) |
| 套用新資料 | 可以(transform) | 不行,要整批重算 | 可以(fit 後 transform) |
| 能當下游特徵 | 可以 | 不建議 | 可以 |
| 主要參數 | n_components | perplexity(5~50) | n_neighbors(15)、min_dist(0.1) |
| 損失函數 | 重建誤差/最大變異 | KL 散度 | 交叉熵 |
| 典型用途 | 壓縮、去共線性、前處理 | 純視覺化看群聚 | 視覺化+前處理,常接 HDBSCAN |
🚀 六、UMAP 比 t-SNE 多會的四件事
① 快很多負採樣+近似最近鄰搜尋,百萬筆等級也跑得動;t-SNE 每步要處理所有點對。
② 可以 transform 新資料fit() 之後可以 transform() 新的點,能塞進 pipeline 當下游特徵;t-SNE 只能整批重算。
③ 較保留全局結構交叉熵兩邊都罰、加上譜嵌入初始化,群和群的相對位置比 t-SNE 有意義一些。
④ 支援監督式降維把標籤 y 一起餵進去(fit(X, y))做監督/半監督降維,讓同類別靠得更近。
🧪 常見應用場景
單細胞 RNA 定序(生醫界的招牌用法,用來畫細胞型態圖)、影像/文字嵌入視覺化(看 embedding 有沒有分群)、大規模資料探索、異常偵測前處理,以及 UMAP → HDBSCAN 的分群管線(此時 min_dist 通常設 0)。
⚠️ 七、還是有陷阱:別過度解讀 UMAP 圖
UMAP 比 t-SNE 好,但沒有好到可以照字面讀。這幾條是考題與論文都會踩的地方。
① 群間距離只是「比較有意義」不是「完全可信」。不要拿圖上的公分數去宣稱兩群差多少。
② 全局結構有一部分來自初始化研究指出:t-SNE 換成同樣的譜/PCA 初始化後,全局結構表現會拉近很多——不是 UMAP 獨有的魔法。
③ 超參數敏感換 n_neighbors、換隨機種子,圖可能長得不一樣。要換幾組參數看過再下結論。
④ 它會「畫出」看起來像群的東西就算餵純雜訊,UMAP 也可能吐出漂亮團塊。分群結論要回原始空間驗證,別只看圖。
🚧 一句話提醒
UMAP/t-SNE 圖是探索工具,不是證據。看到有趣的結構,下一步應該是回到原始資料做統計檢定或分群驗證,而不是直接寫進結論。
🧪 八、觀念自我檢測
先想再點開。
Q1. UMAP 的兩步驟是什麼?
① 在高維建帶權重的模糊鄰居圖(每點連 n_neighbors 個鄰居);② 在低維用 SGD+負採樣讓有邊的互相吸引、非鄰居互相排斥,最小化交叉熵把網攤平。
Q2. n_neighbors 和 min_dist 分別控制什麼?
n_neighbors(預設 15):看多大範圍的鄰居,決定局部 ↔ 全局的平衡,會改變拓撲。min_dist(預設 0.1):低維裡點最近能擠多近,只影響畫面鬆緊,不改變誰連誰。
Q3. UMAP 和 t-SNE 最實務的差別是什麼?
UMAP 快、而且能 transform 新資料(可放進 pipeline 當下游特徵、可做監督式降維),t-SNE 不可逆、每次都要整批重算,只適合當視覺化。
Q4. 損失函數差在哪?為什麼影響全局結構?
t-SNE 最小化 KL 散度,主要罰「該近的變遠」;UMAP 最小化交叉熵,兩邊都罰,加上譜嵌入初始化,所以全局骨架保留得比較好。
Q5. 為什麼把 UMAP 圖上的群間距離當真實距離是錯的?
因為降維過程是局部優先的近似,群間距離只是「相對比 t-SNE 有意義一點」,仍會被扭曲;而且結果隨參數與隨機種子變動,UMAP 甚至會把純雜訊畫成漂亮團塊。
✅ 九、30 秒重點整理
UMAP=流形學習降維假設資料躺在捲起來的低維曲面上,把它攤平。
兩步驟建模糊鄰居圖 → SGD+負採樣攤平,最小化交叉熵。
n_neighbors=15看多遠:小=局部細節、大=全局骨架。
min_dist=0.1畫多擠:小=群緊實、大=分散均勻,不改拓撲。
比 t-SNE 強快、可 transform 新資料、可監督式、較保留全局。
仍不可過度解讀群距只是「較有意義」,雜訊也能被畫成團塊。
📝 iPAS 考點提醒
UMAP 是較新的非線性降維/流形學習方法,iPAS 中級科目三考點。重點:先用 n_neighbors 建模糊鄰居圖、再以 SGD 加負採樣最小化交叉熵把圖攤平;比 t-SNE 快、較能保留全局結構,且 fit 之後可以 transform 新資料、能當下游特徵、支援監督式降維。易混點:n_neighbors 控制局部與全局的平衡(會改變結構)、min_dist 只控制低維點的鬆緊(不改變拓撲);群間距離仍不可完全照字面解讀。情境:大規模高維資料視覺化(如單細胞 RNA、embedding 檢視),或先降維再接 HDBSCAN 分群。
想練情境題與詳解 → AI 學習與考證地圖
❓ 常見問題
UMAP 是做什麼的?
一種較新的非線性降維法,基於流形學習與拓撲。它假設資料躺在一個捲起來的低維曲面上,先建立鄰居圖再把圖攤平到 2D 或 3D,常用於高維資料視覺化。
UMAP 和 t-SNE 差在哪?
UMAP 速度快很多、通常較能保留全局結構,而且 fit 之後可以 transform 新資料、能當下游特徵、支援監督式降維;t-SNE 較慢、不可逆,只適合當視覺化工具。
n_neighbors 和 min_dist 分別控制什麼?
n_neighbors(預設 15)控制看多大範圍的鄰居,是局部與全局的平衡,會改變結構;min_dist(預設 0.1)只控制低維空間中點最近能擠多近,影響畫面鬆緊、不改變誰跟誰相連。
UMAP 降維後的結果可以拿來分群嗎?
可以,常見做法是 UMAP 降到低維後接 HDBSCAN,此時 min_dist 常設為 0 讓群更緊實;但分群結論最好回到原始空間再驗證一次。
看 UMAP 圖有什麼陷阱?
群間距離只是比 t-SNE 有意義一些,仍不可照字面解讀;結果對 n_neighbors 與隨機種子敏感,而且就算餵入純雜訊也可能被畫成漂亮團塊。