文章目錄
- TSNE
- 使用scikit-learn庫
- 使用Multicore-TSNE庫
- 安裝方法
- 基本使用方法
- 采用不同的距離度量
- 其他資料
TSNE
- t-Distributed Stochastic Neighbor Embedding (t-SNE) 是一種高維數據的降維方法,由Laurens van der Maaten和Geoffrey Hinton于2008年提出,通常用于數據可視化。其大致原理是在低維(通常是2D或3D)空間中保留高維空間中的距離關系
使用scikit-learn庫
- TSNE的代碼實現通常基于scikit-learn庫
- 具體參數可參考官網手冊:https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html
使用Multicore-TSNE庫
-
Multicore-TSNE的項目地址:
https://github.com/DmitryUlyanov/Multicore-TSNE -
優點:
- 使用方法與與scikit-learn庫基本一致
- 計算速度相對于scikit-learn庫可大幅提升
-
缺點:
- 功能相比scikit-learn庫大幅減少
- 默認僅實現了基于歐式距離的降維計算
安裝方法
- 方法1:直接pip安裝
pip install MulticoreTSNE
- 方法2:源碼編譯安裝
git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
基本使用方法
- Multicore-TSNE庫的基本使用方法非常簡單,與scikit-learn庫基本一致:
from MulticoreTSNE import MulticoreTSNE as TSNEtsne = TSNE(n_jobs=4)
Y = tsne.fit_transform(X)
- 詳情可看源碼:https://github.com/DmitryUlyanov/Multicore-TSNE/blob/master/MulticoreTSNE/init.py
采用不同的距離度量
- Multicore-TSNE默認僅實現了基于歐式距離的降維計算,然而,很多時候,我們希望采用其他距離度量。幸運的是,根據 https://github.com/DmitryUlyanov/Multicore-TSNE/issues/49 中的回答,已有大佬基于Multicore-TSNE庫進行了二次開發,其中可以采用的距離度量包括:
- Euclidean distance
- Squared euclidean distance
- Angular distance
- Cosine distance (not a real metric)
- Precomputed distance marix
- 安裝方式:源碼編譯安裝
git clone https://github.com/asanakoy/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
- 以手動計算特征向量之間的余弦距離為例:
from MulticoreTSNE import MulticoreTSNE as TSNE
from sklearn.metrics.pairwise import cosine_similarity# 計算余弦相似度矩陣
similarity_matrix = cosine_similarity(feats.cpu().numpy())# 將余弦相似度轉換為距離矩陣
distance_matrix = 1 - similarity_matrixtsne = TSNE(n_jobs=4, metric="precomputed", random_state=42)
X_tsne = tsne.fit_transform(distance_matrix)
其他資料
- Multicore-TSNE 項目常見問題解決方案
- 用 GPU 加速 TSNE:從幾小時到幾秒