日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

umap入门

發布時間:2023/12/20 编程问答 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 umap入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義

?該算法基于關于數據的三個假設:

  • 數據均勻分布在黎曼流形上(Riemannian manifold);
  • 黎曼度量是局部恒定的(或可以這樣近似);
  • 流形是局部連接的。

一種降維技術,假設可用數據樣本均勻(Uniform)分布在拓撲空間(Manifold)中,可以從這些有限數據樣本中近似(Approximation)并映射(Projection)到低維空間。

實現

1. 學習高維空間中的流形結構

1.1 尋找最近的鄰居

nearest-neighbor-descent算法找鄰居

n_neighbors 參數指定想要的近鄰點數量【要進行不斷驗證---控制這數據的局部和全局結構】

1.2 構建圖

UMAP通過連接來確定最近鄰來構建圖,圖的形成過程分為

1.2.1 變化距離

假設在流形上均勻分布,表明空間根據數據看起來稀疏/密集的位置拉伸和收縮的

它本質上意味著距離度量不是在整個空間中通用的,而是在不同區域之間變化的。我們可以通過在每個數據點周圍繪制圓圈/球體來對其進行可視化,由于距離度量的不同,它們的大小似乎不同

1.2.2 local_connectivity

接下來,我們要確保試圖學習的流形結構不會導致許多不連通點。所以需要使用另一個超參數local_connectivity(默認值= 1)來解決這個潛在的問題

當我們設置local_connectivity=1 時,我們告訴高維空間中的每一個點都與另一個點相關聯。

1.2.3 模糊區域

你一定已經注意到上面的圖也包含了模糊的圓圈延伸到最近的鄰居之外。這告訴我們,當我們離感興趣的點越遠,與其他點聯系的確定性就越小。

這兩個超參數(local_connectivity 和 n_neighbors)最簡單的理解就是可以將他們視為下限和上限:

Local_connectivity(默認值為1):100%確定每個點至少連接到另一個點(連接數量的下限)。

n_neighbors(默認值為15):一個點直接連接到第 16 個以上的鄰居的可能性為 0%,因為它在構建圖時落在 UMAP 使用的局部區域之外。

2 到 15 : 有一定程度的確定性(>0% 但 <100%)一個點連接到它的第 2 個到第 15 個鄰居。

1.2.4 邊的合并

連接確定性是通過邊權重(w)來表達的。由于我們采用了不同距離的方法,因此從每個點的角度來看,我們不可避免地會遇到邊緣權重不對齊的情況。 例如,點 A→B 的邊權重與 B→A 的邊權重不同。

?如果我們想將權重為 a 和 b 的兩條不同的邊合并在一起,那么我們應該有一個權重為 + ? ? 的單邊。 考慮這一點的方法是,權重實際上是邊(1-simplex)存在的概率。 組合權重就是至少存在一條邊的概率。

2. 找到該流形的低維表示

從高維空間學習近似流形后,UMAP 的下一步是將其投影(映射)到低維空間。

2.1.最小距離

與第一步不同,我們不希望在低維空間表示中改變距離。相反,我們希望流形上的距離是相對于全局坐標系的標準歐幾里得距離。

從可變距離到標準距離的轉換的轉換也會影響與最近鄰居的距離。因此,我們必須傳遞另一個名為 min_dist(默認值=0.1)的超參數來定義嵌入點之間的最小距離。

本質上,我們可以控制點的最小分布,避免在低維嵌入中許多點相互重疊的情況。

2.2.最小化成本函數(Cross-Entropy)

指定最小距離后,該算法可以開始尋找較好的低維流形表示。 UMAP 通過最小化以下成本函數(也稱為交叉熵 (CE))來實現:

?

最終目標是在低維表示中找到邊的最優權值。這些最優權值隨著上述交叉熵函數的最小化而出現,這個過程是可以通過隨機梯度下降法來進行優化的

使用

1. 超參數

  • n_neighbor---- 平衡 local versus global structure?

它控制 UMAP 在構建流形時為每個樣本查看的本地鄰域的區域。較小的值將關注點縮小到局部結構,考慮到特性和小模式,可能會失去全局。

較高的值可n_neighbors提供更大的靈活性,并允許 UMAP 專注于相應維度中數據的更廣泛“視圖”。當然,這是以丟失結構的細節為代價的。此參數的默認值為 15。

  • min_dist

另一個關鍵參數是min_dist控制數據點之間的字面距離。您可以調整默認值 0.1 以控制不同點云的緊密度。較低的值將導致嵌入更密集,可更輕松地查看單個集群。這在聚類期間可能很有用。相比之下,接近 1 的值會給點更多的喘息空間,讓您能夠看到更廣泛的拓撲結構。

  • n_components

控制想要壓縮的維度,默認設置為2;

對于超過100個特征的數據集,2D不能完全保留數據拓撲結構,5步嘗試2-20之間的值,并評估不同基線模型 查看準確性的變化

  • metric

metric表示計算點之間距離的公式。默認值為euclidean,但您可以在許多其他選項中進行選擇,manhattan包括minkowski和chebyshev。

fit = umap.UMAP(n_neighbors=n_neighbors,min_dist=min_dist,n_components=n_components,metric=metric)u = fit.fit_transform(data);

?umap 用于聚類

利用 UMAP 執行非線性流形感知降維,可以將數據集降低到足夠小的維度,以便基于密度的聚類算法取得進展。UMAP 的一個優點是它不需要您只減少到兩個維度 - 您可以減少到 10 個維度,因為目標是聚類,而不是可視化,并且 UMAP 的性能成本最小。碰巧 MNIST 是一個非常簡單的數據集,我們真的可以將它一直推到只有兩個維度,但通常你應該探索不同的嵌入維度選項。

接下來要注意的是,當使用 UMAP 進行降維時,您將需要選擇與使用 UMAP 進行可視化不同的參數。首先,我們需要一個較大的?n_neighbors值——較小的值將更多地關注非常局部的結構,并且更容易產生細粒度的集群結構,這可能是數據中噪聲模式的結果,而不是實際類別。在這種情況下,我們會將其從默認的 15 加倍到 30。

其次,將其設置min_dist為非常低的值是有益的。由于我們實際上希望將點密集地打包在一起(畢竟密度是我們想要的),因此較低的值會有所幫助,并且可以在集群之間進行更清晰的分離。在這種情況下,我們將簡單地設置?min_dist為 0。

總結

以上是生活随笔為你收集整理的umap入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。