t-Distributed Stochastic Neighbor Emdedding 是一種非線性的降維算法,常用于將數(shù)據(jù)降維到二維或者三維空間進(jìn)行可視化,,來觀察數(shù)據(jù)的結(jié)構(gòu),。 在MDS算法中,降維的基本思想是保持高維和低維空間樣本點(diǎn)的距離不變,,而t-SNE由SNE算法延伸而來,,基本思想是保持降維前后概率分布不變?;诟呔S分布來構(gòu)建概率 首先看下SNE算法,,初始高維空間下兩個(gè)樣本點(diǎn)的條件概率如下 這個(gè)公式是用某個(gè)事件的概率除以所有事件的概率得出的,類似下圖 降維到低維空間之后,,兩個(gè)樣本點(diǎn)的條件概率如下 KL散度又叫做相對(duì)熵,通過真實(shí)分布和理論分布之間熵的差異來衡量兩個(gè)分布之間的差異,,公式如下 其中p(x)表示真實(shí)的概率分布,,q(x)表示理論的概率分布,在SNE算法中,,對(duì)應(yīng)的目標(biāo)函數(shù)如下 對(duì)于該目標(biāo)函數(shù)而言,,由于KL函數(shù)是非對(duì)稱函數(shù),,低維空間的不同距離會(huì)導(dǎo)致不同的權(quán)重,比如p為0.8,q為0.2, 對(duì)應(yīng)的損失為 而當(dāng)p為0.2,,q為0.8時(shí),,cost為-0.277, 差別很大。 在求解的過程中,,首先需要解決的問題就是每個(gè)樣本對(duì)應(yīng)的方差的設(shè)值問題,,在SNE中,通過困惑度這個(gè)超參數(shù)來幫助尋找最佳的方差,,困惑度的公式如下 其中H指的是樣本對(duì)應(yīng)的熵 通過給定一個(gè)具體的困惑度數(shù)值,,通過二分查找的方式來尋找一個(gè)最佳的方差值,通常困惑度的范圍為5-50,。 另外,,在尋找目標(biāo)函數(shù)最小值的過程中,通過梯度下降法來解決問題,,目標(biāo)函數(shù)的梯度如下 在梯度下降的過程中,,為了加速優(yōu)化和避免陷入局部最優(yōu)解,在梯度更新的公式中,,需要引入之前梯度累加的指數(shù)衰減項(xiàng),,具體的公式如下 綜合來看,SNE的目標(biāo)函數(shù)本身存在權(quán)重問題,,而且求解過程中,,超參數(shù)很多,,需要多次優(yōu)化,,比較復(fù)雜。為了克服SNE的這些問題,,t-SNE被提出,,其區(qū)別于SNE的地方主要是以下兩點(diǎn) 1.使用對(duì)稱的SNE 2.低維空間下使用t分布替代高斯分布 t-SNE中目標(biāo)函數(shù)如下 用聯(lián)合概率來替代了條件概率,從而將目標(biāo)函數(shù)轉(zhuǎn)換為一個(gè)對(duì)稱函數(shù),。另外,,低維空間的概率基于t分布來計(jì)算,公式如下 對(duì)于t-SNE算法而言,,其梯度公式如下 使用t-SNE之后,,解決了目標(biāo)函數(shù)的非對(duì)稱問題,而且t分布的處理相比高斯分布更具實(shí)際意義,,如下圖所示 橫軸為距離,,縱軸為相似度,對(duì)于較大相似度的點(diǎn),,在t分布中對(duì)應(yīng)的距離更小,,對(duì)于相似度較小的點(diǎn),,在t分布中對(duì)應(yīng)的距離更長。對(duì)應(yīng)到低維之后的樣本點(diǎn),,就是同一簇內(nèi)的點(diǎn)更緊密,,不同簇之間的點(diǎn)更疏遠(yuǎn),非常符合我們的需求,。 在scikit-learn中,,使用t-SNE算法的代碼如下 >>> import numpy as np |
|