前言
PCA是一種線性降維算法,不能解釋特征之間的復(fù)雜多項(xiàng)式關(guān)系。如果特征與特征之間的關(guān)系是非線性的話,用PCA可能會(huì)導(dǎo)致欠擬合的情形發(fā)生。
線性降維算法的一個(gè)主要問(wèn)題是它們集中將不相似的數(shù)據(jù)點(diǎn)放置在較低維度區(qū)域時(shí),數(shù)據(jù)點(diǎn)相距較遠(yuǎn)。但是為了在低維、非線性曲面的流型上表示高維數(shù)據(jù),我們也需要把相似的數(shù)據(jù)點(diǎn)放在一起展示,這不是線性降維算法所能做的。
t-SNE是一種比PCA更有效的非線性降維方法,它是基于在鄰域圖上隨機(jī)游走的概率分布,可以在數(shù)據(jù)中找到其結(jié)構(gòu)關(guān)系。t-SNE在高維空間中采用的高斯核心函數(shù)定義了數(shù)據(jù)的局部和全局結(jié)構(gòu)之間的軟邊界,可以同時(shí)保留數(shù)據(jù)的局部和全局結(jié)構(gòu)。局部方法尋求將流型上的附近點(diǎn)映射到低維表示中的附近點(diǎn)。 另一方面,全局方法試圖保留所有尺度的幾何形狀,即將附近的點(diǎn)映射到附近的點(diǎn),將遠(yuǎn)處的點(diǎn)映射到遠(yuǎn)處的點(diǎn)。
對(duì)同樣的一組數(shù)據(jù)降維,t-SNE的結(jié)果明顯優(yōu)于PCA——
PCA結(jié)果圖
t-SNE結(jié)果圖
t-SNE降維原理
簡(jiǎn)易原理
假設(shè)我們現(xiàn)在需要將二維平面上分布的點(diǎn)降到一維直線上,
如果我們直接將這些點(diǎn)投放在x軸或者y軸,不同顏色/cluster的點(diǎn)會(huì)會(huì)混合在一起。
t-SNE首先會(huì)將這些點(diǎn)隨機(jī)擺放在直線上,然后t-SNE會(huì)逐漸將這些點(diǎn)移動(dòng),直到它們聚在一起(保留二維空間上的分布特征)。
這些點(diǎn)是如何移動(dòng)的呢?
黃色點(diǎn)來(lái)自于同一cluster,因此最左邊上的這個(gè)黃色點(diǎn)希望朝其余的黃點(diǎn)靠近,而紅色點(diǎn)由于和黃色的點(diǎn)不屬于同一cluster,因此會(huì)被排斥。
如同上述所講,低維空間上的點(diǎn)會(huì)被其在高維空間的臨近點(diǎn)所吸引,相對(duì)的,會(huì)排斥那些遠(yuǎn)距離的點(diǎn)。然后就這樣一步一步的,原本高維空間上距離較近的點(diǎn)會(huì)逐漸聚攏在一起。
詳細(xì)原理
上面大致描述了一下t-SNE如何將近距離的點(diǎn)聚攏在一起。
但是如何判斷誰(shuí)和誰(shuí)相互吸引?誰(shuí)和誰(shuí)相互排斥呢?
Step 1
計(jì)算二維平面上所有點(diǎn)的相似性(similarity)。
首先計(jì)算黑色點(diǎn)和其周?chē)c(diǎn)的距離(此處暫時(shí)以兩個(gè)點(diǎn)為例,黑色和藍(lán)色),然后將這兩個(gè)點(diǎn)排放在以黑色點(diǎn)為中心的正態(tài)曲線下,接下來(lái)計(jì)算藍(lán)色點(diǎn)到正態(tài)曲線的長(zhǎng)度(unscaled similarity distance,也成為similarity score)。
進(jìn)而,我們獲得了黑色點(diǎn)同其余所有點(diǎn)的similarity scores。
similarity score大,表明兩個(gè)點(diǎn)在二維平面上的距離近;相對(duì)的,表明兩個(gè)點(diǎn)在二維平面上的距離遠(yuǎn)。
Step 2
獲得黑色點(diǎn)同其余所有點(diǎn)的similarity score后,我們需要對(duì)這些scores進(jìn)行標(biāo)準(zhǔn)化,使得它們加和為1。
為什么要進(jìn)行標(biāo)準(zhǔn)化處理呢?
scaled similarity scores代表cluster的相對(duì)緊密度。
假設(shè)平面上有一個(gè)新紫色的cluster(我們暫且認(rèn)為紫色cluster的分布和藍(lán)色cluster完全一樣,只是密度(density)是藍(lán)色cluster的兩倍,那么紫色cluster正態(tài)曲線的寬度也會(huì)是藍(lán)色cluster的兩倍(正態(tài)曲線的高度和寬度由方差決定)),
image進(jìn)行標(biāo)準(zhǔn)化處理后,這兩個(gè)cluster的similarity score就是一樣的了(上面提到過(guò),t-SNE可以同時(shí)保留數(shù)據(jù)的局部和全局結(jié)構(gòu))。
image當(dāng)然了,t-SNE還有一個(gè)混亂度(perplexity)的參數(shù)來(lái)表示預(yù)期的密度(這個(gè)我還沒(méi)搞明白,暫時(shí)步說(shuō)了)。這個(gè)其實(shí)影響不大,實(shí)際上,這兩個(gè)cluster的相似性遠(yuǎn)比我們自己預(yù)期的要大的多。
接下來(lái)我們會(huì)獲得每一個(gè)點(diǎn)同其余所有點(diǎn)的scaled similarity scores。
Step 3
問(wèn)題來(lái)了,由于每一個(gè)點(diǎn)所對(duì)應(yīng)正態(tài)曲線的寬度是由其周?chē)c(diǎn)分布的緊密度來(lái)決定的。那么兩個(gè)點(diǎn)之間,前后兩次計(jì)算的similarity scores可能會(huì)不同。所以t-SNE會(huì)將這兩個(gè)點(diǎn)的similarity score求均值。
最終,我們可以獲得一個(gè)矩陣,每一行/列表示這個(gè)點(diǎn)同其他點(diǎn)的similarity score。
Step 4
計(jì)算一維直線上所有點(diǎn)的similarity scores。
同之前計(jì)算二維平面上點(diǎn)的計(jì)算過(guò)程一般,選擇一個(gè)指定的點(diǎn),然后計(jì)算其同周?chē)c(diǎn)的距離,進(jìn)而獲得similarity scores。只是這次使用的曲線從正態(tài)分布變?yōu)閠分布。
這就是為什么t-SNE為什么有一個(gè)t的原因了。
此時(shí)獲得的矩陣比上面那個(gè)矩陣顯得混亂一些。
t-SNE每次移動(dòng)一下直線上的點(diǎn),移動(dòng)的目的是為了讓上圖左邊的矩陣變得像右邊一樣。
Reference
https://juejin.im/entry/5a65b689f265da3e2b1689eb
申明
本文是根據(jù)StatQuest系列視頻整理而來(lái)
已獲得Josh Starmer授權(quán)說(shuō)明
感謝久久瓊殷不辭辛苦將視頻轉(zhuǎn)載至B站
