python 降維與資料聚類之 TSNE

2021-09-11 23:24:23 字數 1262 閱讀 2275

計算機可以處理任意多維的資料集,但我們人類認知只侷限於3維空間,計算機依然需要我們,所以需要通過一些方法有效的視覺化高維資料。通過觀察現實世界的資料集發現其存在一些較低的本徵維度,同時,盡可能多地保持高維資料的重要特徵。

在高維空間相似的資料點,對映到低維空間距離也是相似的。常規的做法是用歐式距離表示這種相似性,而sne把這種距離關係轉換為一種條件概率來表示相似性,即利用兩點的條件概率來度量空間中兩點的相似度,那麼乙個較為合理的降維方式是使得高維空間的條件概率和低維空間的條件概率應該對應相等。如何衡量兩個分布之間的相似性?當然是用經典的kl距離(kullback-leibler divergence)。sne希望能夠找到乙個低維資料表示,以最小化所有資料點的kl距離。

在乙個10維空間中,有可能存在11個點,且兩兩距離相等。而在二維空間中,最多只能找到找到3個點,且它們兩兩距離相等。因此,想在2維空間中完整地表示10維空間中的距離關係是不可能的。

從上圖可以看出,不同類別的簇擠在一起,無法區分開來,這就是擁擠問題。如果沒有顏色標記,可能根本區分不出類別。實際上,擁擠問題的出現與某個特定演算法無關,而是由於高維空間距離分布和低維空間距離分布的差異造成的。

假設乙個以資料點x為中心,半徑為r的m維球(二維空間就是圓,三維空間就是球),且資料點是在m維球中均勻分布的。根據對二維空間和三維空間的想象,我們可以知道,位於圓周和球面附近的點的數量肯定多於其他位置,也就是說,資料集中資料點與x點的距離的分布是不均衡的,即中心區域資料點少,邊沿區域資料點多。如果這種不均衡的距離關係保留到低維,肯定會出現擁擠問題。

出現上述問題的主要原因在於資料中存在離群點,而sne中使用的高斯分布對雜訊非常敏感,因此在tsne中,採用t分布這種長尾分布。下圖顯示的是高斯分布normal和t分布在含有離群點和含有離群點兩種情況下的表現。可以看出,高斯分布對離群點很敏感,容易受到影響,而t分布則不受影響。

tsne 執行極慢,pca 則相對較快;因此,尤其在視覺化高維資料時,常先用 pca 進行降維,再用 tsne 進一步降維。例如,對於minist資料集,每個手寫體數字的共有28x28=784畫素。為了加速計算的同時不嚴重扭曲點間距離的情況下抑制某些雜訊,首先利用pca降維至30維,再使用tsne進行降維,最終轉換為二維。

data_pca= pca(n_components=30).fit_transform(data)

data_pca_tsne = tsne(n_components=2).fit_transform(data_pca)

tsne降維的動態過程如下所示。更多細節請移步:從sne到t-sne再到largevis

聚類和降維

聚類是用於尋找資料內在的分布結構。既可以作為乙個單獨的過程,如異常檢測等 也可作為分類等其他學習任務的前驅過程。聚類是標準的無監督學習。在一些推薦系統中需要確定新使用者的型別,但 使用者型別 這個概念可能無法精確定義,此時往往會先對原有的使用者資料進行聚類。然後根據聚類的結果將每個簇定義為乙個類。然...

聚類 降維與度量學習

聚類 簇內相似度高,簇間相似度低。下式為閔可夫斯基距離 di st x i,xj u 1n xiu xju p 1 p dis t xi xj u 1n xiu xju p 1p 當p 1 p 1 時為曼哈頓距離 當p 2 p 2時為歐氏距離。但這樣的計算方式只適合有序屬性 1與2 比 1與3 更進...

6 聚類(K means) 降維(Pca)

一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相似度計算方法有歐式距離法。k means k 初始中心點個數 計畫聚類數 means 求中心點到其他資料點距離的平...