🗺️ AI 學習與考證地圖
🧵 UMAP 非線性降維 · iPAS 考點

UMAP:先連出一張鄰居網,再把整張網攤平

UMAP 假設你的資料其實躺在一張捲起來的低維曲面(流形)上。它先幫每個點連出鄰居、織成一張網,再想辦法把這張網攤平到 2D 而不撕破鄰居關係。比 t-SNE 、通常較能保留全局結構,而且可以套用到新資料

非線性降維流形學習n_neighborsmin_dist可 transform 新資料比 t-SNE 快
Mochi 貓老師把彎曲鄰居珠網攤成平面珠帶介紹 UMAP

🧭 一、先用白話講:UMAP 在做什麼?

Mochi 貓老師把瑞士捲蛋糕皮拉開,示範流形攤平

UMAP 全名 Uniform Manifold Approximation and Projection(均勻流形近似與投影),2018 年由 McInnes 等人提出。

🍰 生活比喻:把瑞士捲攤平

一條瑞士捲看起來是立體的,但它本質上只是一張被捲起來的平面蛋糕皮。你要做的不是從某個角度拍張照,而是順著捲的方向把它攤開
PCA 只能拍照——線性投影再怎麼選角度,拍出來都是一個漩渦:內圈和外圈在照片上貼在一起,可是沿著蛋糕皮走,它們隔了一整圈。距離被講錯了。
UMAP 會把它攤開——因為它只在乎「誰原本挨著誰」,順著鄰居關係一路展開,捲就被解開,蛋糕皮上的遠近才回到正確的樣子。

所謂「流形(manifold)」講的就是這件事:資料的維度很高,但真正的自由度很低。一萬張手寫數字圖片是 784 維,可是決定一個「7」長什麼樣的其實只有筆畫粗細、傾斜角、彎曲度等寥寥幾個因素——那幾個因素張出來的低維曲面,就是流形。UMAP 的工作,就是把這張曲面找出來、攤平給你看。

🕸️ 二、核心兩步:連鄰居網 → 把網攤平

Mochi 貓老師連接帶有不同權重的彩色珠子,建立模糊鄰居圖
① 高維:織一張模糊鄰居網每個點找出最近的 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

戴圓眼鏡的 Mochi 貓老師轉動兩顆旋鈕,比較鄰居範圍與點群鬆緊

UMAP 只有兩個參數你非調不可,而且考試最愛考它們的分工

參數預設管什麼調小 ↓調大 ↑
n_neighbors15看多大範圍的鄰居
(局部 ↔ 全局)
只看眼前幾個點 → 細節多、群容易碎成小塊看到整體骨架 → 全局結構好、細節被抹平
min_dist0.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 不改變拓撲」。

🔬 這個 demo 誠實說明

為了能在瀏覽器裡即時跑,這裡是 UMAP 的教學簡化版照真實流程做的:模糊鄰居圖與權重(含 $\rho_i$、$\sigma_i$ 與模糊聯集)、譜嵌入起手(正規化圖拉普拉斯的第 2、3 小特徵向量,正是 UMAP 預設的 init='spectral')、依權重抽邊、負採樣排斥、學習率隨 epoch 遞減。簡化掉的:最近鄰用暴力搜尋而非近似演算法,吸引/排斥用彈簧近似而非 UMAP 由 min_dist 擬合出的 $a,b$ 曲線。
順帶一提:瑞士捲攤平後是一條彎的帶子而不是直線,這不是 bug——一維流形的譜嵌入本來就長這樣($\cos$ 與 $\cos 2$ 的組合)。重點是顏色有沒有依序排完、有沒有打結,不是直不直。
鄰居保留率」=每個點在原始空間的 k 個鄰居,有幾成在 2D 圖上仍是它的 k 個鄰居——這正是 降維品質評估裡 kNN 保留率的概念。

⚖️ 五、PCA vs t-SNE vs UMAP:三方法總對照

Mochi 貓老師並排比較 PCA、t-SNE 與 UMAP 的無字散點圖
比較PCAt-SNEUMAP
類型線性非線性非線性(流形學習)
著重全局變異局部鄰近局部為主,兼顧部分全局
速度最快(負採樣,可上百萬筆)
套用新資料可以(transform)不行,要整批重算可以(fit 後 transform)
能當下游特徵可以不建議可以
主要參數n_componentsperplexity(5~50)n_neighbors(15)、min_dist(0.1)
損失函數重建誤差/最大變異KL 散度交叉熵
典型用途壓縮、去共線性、前處理純視覺化看群聚視覺化+前處理,常接 HDBSCAN

🧠 一句話選型

可解釋、要快、要當特徵PCA;只要一張漂亮的群聚圖t-SNE資料量大、想兼顧全局、還想套用到新資料 → UMAP。
實務上很常見的組合:先 PCA 降到 ~50 維去雜訊 → 再 UMAP 降到 2 維畫圖或分群

🚀 六、UMAP 比 t-SNE 多會的四件事

Mochi 貓老師把新資料珠放進既有 UMAP 地圖的位置
① 快很多負採樣+近似最近鄰搜尋,百萬筆等級也跑得動;t-SNE 每步要處理所有點對。
② 可以 transform 新資料fit() 之後可以 transform() 新的點,能塞進 pipeline 當下游特徵;t-SNE 只能整批重算。
③ 較保留全局結構交叉熵兩邊都罰、加上譜嵌入初始化,群和群的相對位置比 t-SNE 有意義一些。
④ 支援監督式降維把標籤 y 一起餵進去(fit(X, y))做監督/半監督降維,讓同類別靠得更近。

🧪 常見應用場景

單細胞 RNA 定序(生醫界的招牌用法,用來畫細胞型態圖)、影像/文字嵌入視覺化(看 embedding 有沒有分群)、大規模資料探索異常偵測前處理,以及 UMAP → HDBSCAN 的分群管線(此時 min_dist 通常設 0)。

⚠️ 七、還是有陷阱:別過度解讀 UMAP 圖

Mochi 貓老師舉警示牌提醒不可量測 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 秒重點整理

戴圓眼鏡的 Mochi 貓老師揮手並用勾選板整理 UMAP 重點
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 與隨機種子敏感,而且就算餵入純雜訊也可能被畫成漂亮團塊。

🧭 相關主題

← 返回 AI 學習與考證地圖