机器学习算法:UMAP 深入理解
導讀
降維是機器學習從業者可視化和理解大型高維數據集的常用方法。最廣泛使用的可視化技術之一是 t-SNE,但它的性能受到數據集規模的影響,并且正確使用它可能需要一定學習成本。
UMAP 是 McInnes 等人開發的新算法。與t-SNE相比,它具有許多優勢,最顯著的是提高了計算速度并更好地保留了數據的全局結構。在本文中,我們將了解UMAP背后的理論,以便更好地了解該算法的工作原理、如何正確有效地使用它,以及與t-SNE進行比較,它的性能如何。
那么,UMAP帶來了什么?最重要的是,UMAP速度很快,在數據集大小和維度方面都可以很好地擴展。例如,UMAP可以在不到 3 分鐘的時間內降維 784 維、70,000 點的 MNIST 數據集,而 scikit-learn 的t-SNE需要 45 分鐘。此外,UMAP傾向于更好地保留數據的全局結構。這可以歸因于UMAP強大的理論基礎,使得算法能夠更好地在強調局部結構與全局結構之間取得平衡。
1. UMAP vs t-SNE
在深入探討UMAP背后的理論之前,讓我們看一下它在現實世界的高維數據上的表現。下面的圖片顯示了使用UMAP和t-SNE將 784 維 Fashion MNIST 數據集的子集降維到 3 維上的情況。請注意每個不同類別的聚類程度(局部結構),而相似的類別(例如涼鞋、運動鞋和踝靴)傾向于聚集(全局結構)。
雖然這兩種算法都表現出強大的局部聚類,并將相似的類別聚集在一起,但UMAP 更清楚地將這些相似類別的組彼此分開。值得注意的是,計算時間,UMAP需要 4 分鐘,而多核t-SNE需要 27 分鐘。
2. 理論
UMAP的核心與t-SNE非常相似,兩者都使用圖形布局(graph layout)算法在低維空間中排列數據。簡單來說,UMAP首先構建數據的高維圖表示,然后優化低維圖以使其在結構上盡可能相似。雖然UMAP用于構建高維圖的數學是復雜的,但背后的想法是非常簡單的。
為了構建初始的高維圖,UMAP構建了一個叫做fuzzy simplicial complex的東西。這實際上只是加權圖的表示,邊權重表示兩個點連接的可能性。為了確定連通性,UMAP從每個點向外擴展一個半徑,當這些半徑重疊時連接點。這個半徑的選擇很關鍵:太小會導致小而孤立的集群,太大會將所有東西全連接在一起。UMAP根據到每個點的第 n 個最近鄰點的距離在本地選擇半徑來克服這個困難。UMAP然后通過隨著半徑的增長降低連接的可能性來使圖形fuzzy。最后,通過規定每個點必須至少連接到其最近的鄰居,UMAP確保局部結構與全局結構保持平衡。
一旦構建了高維圖,UMAP就會優化低維模擬的布局,使其盡可能相似。這個過程與t-SNE基本相同,但使用了一些技巧來加速該過程。
有效使用UMAP的關鍵在于理解初始高維圖的構造。盡管該過程背后的想法非常直觀,但該算法依賴于一些高級數學來為該圖實際表示數據的程度提供強有力的理論保證。有興趣的讀者可以在:深入了解UMAP理論。
3. 參數
通過理解UMAP背后的理論后,理解算法的參數變得容易得多,尤其是與t-SNE中的perplexity參數相比。我們將考慮兩個最常用的參數:n_neighbors 和 min_dist,它們有效地用于控制最終降維結果中局部和全局結構之間的平衡。
- n_neighbors
最重要的參數是n_neighbors,用于構造初始高維圖的近似最近鄰的數量。它有效地控制UMAP如何平衡局部結構與全局結構 :較小的值將通過限制在分析高維數據時考慮的相鄰點的數量來推動UMAP更多地關注局部結構,而較大的值將推動UMAP代表全局結構,同時失去了細節。
- min_dist
我們將研究的第二個參數是 min_dist,即低維空間中點之間的最小距離。此參數控制UMAP將點聚集在一起的緊密程度,較低的值會導致嵌入更緊密。較大的 min_dist值將使UMAP將點更松散地打包在一起,而是專注于保留廣泛的拓撲結構。
下面的可視化,探索了UMAP參數對 3D 數據的 2D 投影的影響。通過更改 n_neighbors和min_dist參數,您可以探索它們對生成投影的影響。
雖然UMAP的大多數應用都涉及高維數據的投影,但 3D 的投影可以作為一個有用的類比來理解UMAP如何根據其參數優先考慮全局結構和局部結構。隨著n_neighbors的增加,UMAP在構建高維數據的圖表示時連接的相鄰點越來越多,從而導致更準確地反映數據的全局結構的投影。在非常低的值下,任何全局結構的信息都幾乎完全丟失。隨著min_dist參數的增加,UMAP傾向于“散開”投影點,導致數據的聚類減少,對全局結構的重視程度降低。
4. UMAP vs t-SNE 2.0
與t-SNE相比,UMAP的輸出最大的區別在于局部結構和全局結構之間的平衡,UMAP 通常更擅長在最終投影中保留全局結構。這意味著簇間的關系可能比 t-SNE更有意義。重要的是,因為UMAP和t-SNE在投影到低維時都必然會扭曲數據的高維形狀,所以任何給定的軸或較低維度的距離仍然不能用 PCA 等技術直接解釋。
回到 3D 猛犸象的例子,我們可以很容易地看到兩種算法輸出之間的一些巨大差異。對于較低的perplexity參數值,t-SNE傾向于“展開”投影數據,而很少保留全局結構。相比之下,UMAP傾向于將高維結構的相鄰部分在低維中組合在一起,這反映了全局結構。注意,使用t-SNE需要極高的perplexity(~1000)才能開始看到全局結構,并且在如此大的perplexity值下,計算時間顯著延長。同樣值得注意的是,每次運行的t-SNE投影差異很大,不同的高維數據被投影到不同的位置。雖然UMAP也是一種隨機算法,但令人驚訝的是,每次運行和使用不同參數時,生成的投影是十分相似的。
值得注意的是,t-SNE和UMAP在早期圖中的玩具示例上的表現非常相似,除了下面的示例例外。有趣的是,UMAP無法分離兩個嵌套集群,尤其是在高維時。
該算法未能處理這種包含的情況可能是由于UMAP在初始圖形構造中使用的是局部距離。由于高維點之間的距離往往非常相似(維度災難),UMAP似乎將內部集群的外部點與外部集群的外部點連接起來。這實際上將兩個集群混合在一起。
5. 理解
雖然UMAP提供了許多優于t-SNE的優勢,但它絕不是靈丹妙藥,閱讀和理解其結果需要小心謹慎。
選擇好的超參數并不容易,并且取決于數據和目標。這是UMAP速度的一大優勢所在,通過使用各種超參數多次運行UMAP,您可以更好地了解投影如何受其參數影響。
就像在t-SNE中一樣,簇相對于彼此的大小本質上是沒有意義的。這是因為UMAP使用局部距離概念來構建其高維圖形表示。
同樣,集群之間的距離可能毫無意義。雖然確實在UMAP中更好地保留了集群的全局位置,但它們之間的距離沒有意義。同樣,這是由于在構建圖形時使用了局部距離。
尤其是在n_neighbors值較低時,可以觀察到虛假聚類。
由于UMAP算法是隨機的,因此使用相同超參數的不同運行可能會產生不同的結果。此外,由于超參數的選擇非常重要,因此使用各種超參數多次運行投影可能非常有用。
總結
UMAP是數據科學家武器庫中非常強大的工具,與t-SNE相比具有許多優勢。雖然UMAP和 t-SNE 的輸出有些相似,但速度的提高、全局結構的更好保存和更易于理解的參數使UMAP成為可視化高維數據的更有效工具。最后,重要的是要記住,沒有任何降維技術是完美的,UMAP也不例外。然而,通過建立對算法工作原理的直觀理解以及如何調整其參數,我們可以更有效地使用這個強大的工具來可視化和理解大型高維數據集。
本文由mdnice多平臺發布
總結
以上是生活随笔為你收集整理的机器学习算法:UMAP 深入理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Intel+Nvidia双显卡笔记本Li
- 下一篇: 三国群英传服务器端架设修改,三国群英传O