2022年7月4日 星期一

UMAP 筆記

Uniform Manifold Approximation and Projection (UMAP) 是一個用來降低資料維度的演算法。 如果你把它想成是一個副程式, 它所接收的主要輸入參數以及輸出的資料跟 t-SNE 一模一樣: 輸入一張很大的試算表 (例如幾百或幾千個數字欄位、 幾萬甚至幾十萬列), 它可以產生一張新的試算表, 裡面只剩少少幾個數字欄位 (個數由你指定), 這些新欄位的值可以說是原始許多欄位的 "摘要", 如果欄位數夠少 (例如剩下 2 或 3), 你甚至可以把資料畫在螢幕上或呈現在3度空間中, 或許用肉眼就可以觀察出幾萬/幾十萬個點如何分佈在幾個明顯的群 (cluster) 當中。 我在 t-SNE 幫你看見高維度數值資料 以及 撞臉偵測器 兩篇文章當中有實作兩個例子, 可以直接在網頁上玩玩看。 UMAP 比 t-SNE 的速度更快、 效果更好。 我還沒寫程式, 先筆記一下搜尋到的連結。

首先大推 omnixri 的概念性中文文章: 「如何應用高維資料可視化一眼看穿你的資料集」。 這部片 "UMAP explained" 用易懂的動畫解釋 umap 的運作原理 (有英文字幕)。 這篇教學文 Understanding UMAP 提供很多互動範例及很多小小的測試資料集, 在文章頁面就可以直接調整兩個最主要參數 n_neighbors 與 min_dist、 觀察它們的效果。 長毛象的例子一定要玩玩看。

如果要動手實作, 可以先安裝一些 python 套件: pip3 install jupyterlab sklearn umap-learn seaborn bokeh、 啟動 jupyter notebook: jupyter-lab、 然後照著這一篇: How to Use UMAP 輸入程式碼。 其中執行 import umap 時, 如果出現錯誤, 請改執行 import umap.umap_ as umap 。 最後一張手寫數字分類圖, 可以把滑鼠移到每個點的上方, 觀察那些被歸類到錯誤群組的案例。

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。