Learning Model : Unsupervised Machine Learning_t-SNE參數講解

Ryan Lu
AI反斗城
Published in
4 min readMar 10, 2019

t-distributed Stochastic Neighbor Embedding(t-SNE)

t-SNE(TSNE)將數據點之間的相似度轉換為概率。原始空間中的相似度由高斯聯合概率表示,嵌入空間的相似度由“學生t分佈”表示。

雖然Isomap,LLE和variants等數據降維和可視化方法,更適合展開單個連續的低維的manifold。但如果要準確的可視化樣本間的相似度關係,如對於下圖所示的S曲線(不同顏色的圖像表示不同類別的數據),t-SNE表現更好。因為t-SNE主要是關注數據的局部結構

通過原始空間和嵌入空間的聯合概率的Kullback-Leibler(KL)散度來評估可視化效果的好壞,也就是說用有關KL散度的函數作為loss函數,然後通過梯度下降最小化loss函數,最終獲得收斂結果。注意,該loss不是凸函數,即具有不同初始值的多次運行將收斂於KL散度函數的局部最小值中,以致獲得不同的結果。因此,嘗試不同的隨機數種子(Python中可以通過設置seed來獲得不同的隨機分佈)有時候是有用的,並選擇具有最低KL散度值的結果。

使用t-SNE的缺點大概是:

  • t-SNE的計算複雜度很高,在數百萬個樣本數據集中可能需要幾個小時,而PCA可以在幾秒鐘或幾分鐘內完成
  • Barnes-Hut t-SNE方法(下面講)限於二維或三維嵌入。
  • 算法是隨機的,具有不同種子的多次實驗可以產生不同的結果。雖然選擇loss最小的結果就行,但可能需要多次實驗以選擇超參數。
  • 全局結構未明確保留。這個問題可以通過PCA初始化點(使用init ='pca')來緩解。

優化t-SNE

t-SNE的主要目的是高維數據的可視化。因此,當數據嵌入二維或三維時,效果最好。有時候優化KL散度可能有點棘手。有五個參數可以控制t-SNE的優化,即會影響最後的可視化質量:

  • perplexity困惑度
  • early exaggeration factor前期放大係數
  • learning rate學習率
  • maximum number of iterations最大迭代次數
  • angle角度

Barnes-Hut t-SNE

Barnes-Hut t-SNE主要是對傳統t-SNE在速度上做了優化,是現在最流行的t-SNE方法,同時它與傳統t-SNE還有一些不同:

  • Barnes-Hut僅在目標維度為3或更小時才起作用。以2D可視化為主。
  • Barnes-Hut僅適用於密集的輸入數據。稀疏數據矩陣只能用特定的方法嵌入,或者可以通過投影近似,例如使用sklearn.decomposition.TruncatedSVD
  • Barnes-Hut是一個近似值。使用angle參數對近似進行控制,因此當參數method="exact"時,TSNE()使用傳統方法,此時angle參數不能使用。
  • Barnes-Hut可以處理更多的數據。Barnes-Hut可用於嵌入數十萬個數據點。

為了可視化的目的(這是t-SNE的主要用處),強烈建議使用Barnes-Hut方法。method="exact"時,傳統的t-SNE方法儘管可以達到該算法的理論極限,效果更好,但受制於計算約束,只能對小數據集的可視化。

對於MNIST來說,t-SNE可視化後可以自然的將字符按標籤分開,見本文最後的例程;而PCA降維可視化後的手寫字符,不同類別之間會重疊在一起,這也證明了t -SNE的非線性特性的強大之處。值得注意的是:未能在2D中用t-SNE顯現良好分離的均勻標記的組不一定意味著數據不能被監督模型正確分類,還可能是因為2維不足以準確地表示數據的內部結構。

注意事項

  • 數據集在所有特徵維度上的尺度應該相同

參數說明

[參考]
數據降維與可視化 — — t-SNE
https://blog.csdn.net/hustqb/article/details/78144384

--

--