0t-distributed Stochastic
Neighbor Embedding (t-SNE)

明治大学 理⼯学部 応用化学科
データ化学⼯学研究室 ⾦⼦ 弘昌

t-SNE とは︖
非線形の可視化手法の一つ
PCA や GTM のように、元の空間から低次元空間 (基本的には二次元平面) に写像させる関数が得られるわけではないので注意
写像というよりは、サンプル全体が⾒やすいように二次元平面に配置するイメージ
可視化に特化した手法
元の空間におけるサンプル間の距離関係が二次元平面におけるサンプル間の距離関係として保持されるほど値が⼩さくなる目的関数を準備して、それが⼩さくなるように二次元平面にサンプルを配置させる

1

2t-SNE のイメージ

S-curve

Swiss roll

t-SNE

t-SNE

文字の定義元の空間におけるデータセットを X とする• 変数の数 : m• サンプルの数 : n• つまり、X は n × m の⾏列• i 番目のサンプルを x(i) を表す
低次元空間におけるデータセットを Z とする• 今回は二次元に低次元化するため、変数の数 : 2• サンプルの数 : n• Z は n × 2 の⾏列• i 番目のサンプルを z(i) を表す

3

前処理基本的に、X を標準化 (オートスケーリング) する• 標準化についてはこちら
https://datachemeng.com/basicdatapreprocessing/X (を標準化したあと) に前処理として主成分分析(Principal Component Analysis, PCA) を⾏うこともある• PCA についてはこちら
https://datachemeng.com/principalcomponentanalysis/4t-SNEでは何をしているか︖
目的関数 C を最⼩化している()C =  p ( x , x ) log() ( )p (z , z )nn(i )( j)

i =1 j =1

p x( ) , x( )ijij

ざっくりというと、C は x(i) と x(j) の距離関係と、z(i) と z(j) との距離関係が似ているほど⼩さくなる元の空間におけるサンプル間の距離関係と二次元空間におけるサンプル間の距離関係とが同じになるように、Z を作成できる︕
詳しくは、次のページ以降

5

6

p(x(i), x(j)) って何︖
p(x(i), x(j)) は、x(i) と x(j) の同時確率分布
x(i) と x(j) の “近さ” をあらわす
つまり、x(i) と x(j) が似ている (距離が⼩さい) ほど、大きくなる
t-SNE では下のように定義している((i )p x ,x( j))(=) (p x( ) | x( ) + p x( ) | x( )ji2ij)

p(x(j) | x(i)) って何︖

7p(x(j) | x(i)) は、x(i) が与えられたときの x(j) の事後確率分布
t-SNE では正規分布を仮定して下のように定義している(p x( ) | x( )ji)

 x( i ) − x( j ) 2 
exp  −2
2σi
=2i)k)((nx −x− −1exp
2σ2
k =1iσi : i 番目のサンプルに対応する標準偏差
分⺟の -1 は、k = 1 から n まで和を取るときに、k = i が含まれてしまうためその分を引くためのもの

x(i) と x(j) の距離と p(x(i), x(j)) の関係
x(i) と x(j) の距離が近い (似ている)p(x(j) | x(i)) や p(x(i) | x(j)) が大きくなる

p(x(i), x(j)) が大きくなる((i )また、 p x , x( j))(=) (p x( j ) | x( i ) + p x( i ) | x( j )2

により、 x(i) と x(j) に対して対象になっている(x(i) と x(j) を入れ替えても同じ値))

8p(x(i) | x(j)) の σ

9i はどうする︖

周辺にサンプルが密に存在しているサンプル x(i) にとっては、σi は⼩さくあるべき
周辺にサンプルがあまりないサンプル x(i) にとっては、σi は大きくあるべき
x(i) に対応する確率密度分布 ( p(x(1) | x(i)), p(x(2) | x(i)),…,p(x(n) | x(i)) ) の情報エントロピー(シャノンエントロピー) H を固定して、σi を決めよう︕
n()(H = − p x( ) | x( ) log 2 p x( ) | x( )j =1jiji)

perplexity = 2 H
t-SNE では二分探索 [1] で σi を計算(perplexity は σi に対して単調増加なのでOK)
perplexity は事前に設定する必要がある[1] https://ja.wikipedia.org/wiki/二分探索10

p(z(i), z(j)) って何︖()
評価関数 C =  p ( x , x ) log
p ( z( ) , z( ) )nn(i )

( j)

(i )

( j)

ijp x ,xi =1 j =1

について、 p(x(i), x(j)) は OK、次は p(z(i), z(j))
p(z(i), z(j)) は、z(i) と z(j) の同時確率分布
z(i) と z(j) の “近さ” をあらわす
つまり、z(i) と z(j) が似ている (距離が⼩さい) ほど、大きくなる11

p(z(i), z(j)) の式
t-SNE では⾃由度１の (スチューデントの) t 分布 [1] を仮定して下のように定義している(p z( ) , z( )ij)



1

(i )( j) 2  1+ z − z

=
nn1

−n
2 
k)l)
((k =1 l =1  1 + z
−z

分⺟の -n は、和を取るときに、k = l が含まれてしまうためその分を引くためのもの[1] https://ja.wikipedia.org/wiki/T分布

12目的関数 C の最⼩化
目的関数 C を z(i) で偏微分すると、∂C= 4
(i )∂z
j =1n{() (p x( i ) , x( j ) − p z ( i ) , z ( j )(i )1+ z − z)} (z (i ) − z ( j ))( j) 2

確率的勾配降下法 [1] で z(i) を更新していく
t-SNE ではモメンタム法を利用[1] https://ja.wikipedia.org/wiki/確率的勾配降下法

z(i) の初期値
z(i) の初期値は、平均 0, 標準偏差 10-4 の正規分布に従うように、乱数で生成13

t-SNE をやってみる
こちら https://github.com/hkaneko1985/tsne
をご利用ください

14perplexity をどう決めるか︖

15① 試⾏錯誤によって決める
目安は、5 〜 50 の間の値
② k3n-error (k-Nearest Neighbor Normalized Error for visualizationand reconstruction) [1] によって最適化する
こちら https://github.com/hkaneko1985/tsneに k3n-error を用いた perplexity の最適化のデモがあります[1] H. Kaneko, Chemom. Intell. Lab. Syst., 176, 22-33, 2018

参考文献

16

L. van der Maaten, G. Hinton, Visualizing High-Dimensional Data
Using t-SNE, . Journal of Machine Learning Research, 9, 2579–2605,
2008
http://jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf

sklearn.manifold.TSNE — scikit-learn 0.19.1 documentation
http://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html
H. Kaneko, K-Nearest Neighbor Normalized Error for Visualization andReconstruction – A New Measure for Data Visualization Performance,
Chemometrics and Intelligent Laboratory Systems, 176, 22-33, 2018https://www.sciencedirect.com/science/article/abs/pii/S0169743918300698