非監(jiān)督學(xué)習(xí)之——降維(t-SNE)

PCA是線性降維,它不能解釋特征之間的復(fù)雜多項(xiàng)式關(guān)系。 因此還有一些非線形降維算法,例如:T-SNE、UMAP、SOM、LLE等等。

t-SNE本質(zhì)上來說就是要找到一個投影方法,使得降維后,數(shù)據(jù)之間的分團(tuán)信息得以保存。

首先,它將通過選擇一個隨機(jī)數(shù)據(jù)點(diǎn)并計算與其他數(shù)據(jù)點(diǎn)(|x—x|)的歐幾里得距離來創(chuàng)建概率分布。 從所選數(shù)據(jù)點(diǎn)附近的數(shù)據(jù)點(diǎn)將獲得更多的相似度值,而距離與所選數(shù)據(jù)點(diǎn)較遠(yuǎn)的數(shù)據(jù)點(diǎn)將獲得較少的相似度值。 使用相似度值,它將為每個數(shù)據(jù)點(diǎn)創(chuàng)建相似度矩陣(S1)

其次,它將根據(jù)正態(tài)分布將計算出的相似距離轉(zhuǎn)換為聯(lián)合概率。

通過以上的計算,t-SNE將所有數(shù)據(jù)點(diǎn)隨機(jī)排列在所需的較低維度上。

然后,t-SNE將再次對高維數(shù)據(jù)點(diǎn)和隨機(jī)排列的低維數(shù)據(jù)點(diǎn)進(jìn)行所有相同的計算。但是在這一步中,它根據(jù)t分布分配概率。這就是名稱t-SNE的原因。t-SNE中使用t分布的目的是減少擁擠問題

最后,對于較低維的數(shù)據(jù)點(diǎn),還將創(chuàng)建一個相似度矩陣(S2)。然后該算法將S1與S2進(jìn)行比較,并通過處理一些復(fù)雜的數(shù)學(xué)運(yùn)算來使S1與S2之間有所不同。包括使用兩個分布之間的Kullback Leibler散度(KL散度)作為損失函數(shù)運(yùn)行梯度下降算法。使用KL散度通過將兩個分布之間相對于數(shù)據(jù)點(diǎn)位置的值最小化,幫助t-SNE保留數(shù)據(jù)的局部結(jié)構(gòu)。

算法步驟:
第一步:計算數(shù)據(jù)集中每行與其他行的距離(默認(rèn)為歐氏距離),轉(zhuǎn)為概率。


t-SNE對某一行計算轉(zhuǎn)化得到概率向量

第二步:對每一行重復(fù)操作,得到概率矩陣。


t-SNE對每一行得到的概率矩陣熱力圖

第三步:沿兩條新軸用學(xué)生氏分布(t分布)對數(shù)據(jù)隨機(jī)化。


t-SNE的t分布隨機(jī)化

第四步:逐漸迭代,通過最小化KL divergence,使得二維空間的新概率矩陣盡可能接近原高維空間的。


t-SNE 類引力與斥力效應(yīng)的迭代

基于R的t-SNE實(shí)現(xiàn)

例:對USArrests數(shù)據(jù),使用t-SNE降維

#加載包
library(Rtsne)

#由于四個變量的量綱不統(tǒng)一,不方便進(jìn)行運(yùn)算,先進(jìn)行標(biāo)準(zhǔn)化處理
USArrests_scale <- as_tibble(scale(USArrests, scale=TRUE))
#將標(biāo)準(zhǔn)化后的數(shù)據(jù)使用t-SNE算法進(jìn)行降維
noteTsne <- Rtsne(USArrests_scale, perplexity = 7, theta = 0, max_iter = 1000, eta = 300, verbose = T)

參數(shù)說明:

  1. dims:參數(shù)設(shè)置降維之后的維度,默認(rèn)值為2;
  2. perplexity(困惑度):控制距離轉(zhuǎn)化為概率的分布。越小越關(guān)注局部結(jié)構(gòu),越大越關(guān)注全局結(jié)構(gòu)。簡單來說,就是最后分簇后,每個簇包含的數(shù)據(jù)數(shù)量。越小分的簇越多,越大分的簇越少。參數(shù)的取值必須小于(nrow(data) - 1 )/ 3;
  3. theta:參數(shù)取值越大,結(jié)果的準(zhǔn)確度越低,但計算速度會提高,反之,越小越精確,計算速度越慢。默認(rèn)值為0.5;
  4. max_iter:參數(shù)設(shè)置最大迭代次數(shù),默認(rèn)1000
t-SNE 調(diào)整perlexity 和 theta 的效果
t-SNE 調(diào)整 eta 和 max_iter 的效果

可視化數(shù)據(jù),觀察降維后的效果:

#先將四個變量放到同一列,這樣便于畫圖和比較
USArrestsTSNE <- USArrests_scale %>% 
  mutate(tSNE1 = noteTsne$Y[,1], tSNE2 = noteTsne$Y[,2]) %>% 
  pivot_longer(1:4, names_to ="Variable", values_to = "Value")

#畫圖
ggplot(USArrestsTSNE, aes(tSNE1, tSNE2,col=Value)) +
  facet_wrap(~ Variable) +
  geom_point(size = 1) +
  scale_color_gradient(low = "dark blue", high = "cyan") +
  theme_bw()

t-SNE的特點(diǎn):

優(yōu)點(diǎn):

  • 相較于正態(tài)分布,使用t分布能更好地分散可能的數(shù)據(jù)簇,更易識別;
  • 分類效果往往勝過PCA。

缺點(diǎn):

  • t-SNE在低維容易保持局部結(jié)構(gòu),不易保留全局結(jié)構(gòu)。
  • 計算費(fèi)時,計算時間隨簇數(shù)顯著增加。
  • 無法像PCA一樣投影新數(shù)據(jù)。
  • 簇間距離意義不大。

【參考文獻(xiàn)】:

  1. t-SNE的通俗易懂解釋
  2. t-SNE分析的原理
  3. t-SNE:可視化效果最好的降維算法
  4. t-sne數(shù)據(jù)可視化算法的作用是啥?為了降維還是認(rèn)識數(shù)據(jù)?
  5. 數(shù)據(jù)可視化降維:PCA vs TSNE vs UMAP
  6. 從SNE到t-SNE再到LargeVis
  7. 有關(guān)t-SNE的小技巧
  8. How to Use t-SNE Effectively
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容