Upgrade to Pro — share decks privately, control downloads, hide ads and more …

t-distributed Stochastic Neighbor Embedding (t-...

t-distributed Stochastic Neighbor Embedding (t-SNE) ~データの可視化に特化した手法~

t-SNE とは?
t-SNE のイメージ
文字の定義
前処理
t-SNEでは何をしているか?
p(x(i), x(j)) って何?
p(x(j) | x(i)) って何?
x(i) と x(j) の距離と p(x(i), x(j)) の関係
p(x(i) | x(j)) の σi はどうする?
p(z(i), z(j)) って何?
p(z(i), z(j)) の式
目的関数 C の最小化
z(i) の初期値
t-SNE をやってみる
perplexity をどう決めるか?
参考文献

Hiromasa Kaneko

June 03, 2018
Tweet

More Decks by Hiromasa Kaneko

Other Decks in Technology

Transcript

  1. t-SNE とは︖ 非線形の可視化手法の一つ PCA や GTM のように、元の空間から低次元空間 (基本的には 二次元平面) に写像させる関数が得られるわけではないので注意

    写像というよりは、サンプル全体が⾒やすいように二次元平面に 配置するイメージ 可視化に特化した手法 元の空間におけるサンプル間の距離関係が二次元平面における サンプル間の距離関係として保持されるほど値が⼩さくなる目的関数を 準備して、それが⼩さくなるように二次元平面にサンプルを配置させる 1
  2. 文字の定義 元の空間におけるデータセットを X とする • 変数の数 : m • サンプルの数

    : n • つまり、X は n × m の⾏列 • i 番目のサンプルを x(i) を表す 低次元空間におけるデータセットを Z とする • 今回は二次元に低次元化するため、変数の数 : 2 • サンプルの数 : n • Z は n × 2 の⾏列 • i 番目のサンプルを z(i) を表す 3
  3. 前処理 基本的に、X を標準化 (オートスケーリング) する • 標準化についてはこちら https://datachemeng.com/basicdatapreprocessing/ X (を標準化したあと)

    に前処理として主成分分析 (Principal Component Analysis, PCA) を⾏うこともある • PCA についてはこちら https://datachemeng.com/principalcomponentanalysis/ 4
  4. t-SNEでは何をしているか︖ 5 目的関数 C を最⼩化している ( ) ( ) (

    ) ( ) ( ) ( ) ( ) ( ) ( ) 1 1 , , log , i j n n i j i j i j p C p p = = =  x x x x z z ざっくりというと、C は x(i) と x(j) の距離関係と、z(i) と z(j) との 距離関係が似ているほど⼩さくなる 元の空間におけるサンプル間の距離関係と 二次元空間におけるサンプル間の距離関係とが 同じになるように、Z を作成できる︕ 詳しくは、次のページ以降
  5. p(x(i), x(j)) って何︖ 6 p(x(i), x(j)) は、x(i) と x(j) の同時確率分布

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

    ) ( ) ( ) ( ) ( ) 2 2 2 2 1 exp 2 | exp 1 2 i j i j i i k n k i p σ σ =   −   −       =   −   − −        x x x x x x p(x(j) | x(i)) は、x(i) が与えられたときの x(j) の事後確率分布 t-SNE では正規分布を仮定して下のように定義している σi : i 番目のサンプルに対応する標準偏差 分⺟の -1 は、k = 1 から n まで和を取るときに、k = i が含まれてしまうため その分を引くためのもの
  7. x(i) と x(j) の距離と p(x(i), x(j)) の関係 8 x(i) と

    x(j) の距離が近い (似ている) p(x(j) | x(i)) や p(x(i) | x(j)) が大きくなる p(x(i), x(j)) が大きくなる また、 により、 x(i) と x(j) に対して対象になっている (x(i) と x(j) を入れ替えても同じ値) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) | | , 2 j i i j i j p p p + = x x x x x x
  8. p(x(i) | x(j)) の σi はどうする︖ 周辺にサンプルが密に存在しているサンプル x(i) にとっては、 σi

    は⼩さくあるべき 周辺にサンプルがあまりないサンプル x(i) にとっては、σi は大きくあるべき 9 x(i) に対応する確率密度分布 ( p(x(1) | x(i)), p(x(2) | x(i)),…, p(x(n) | x(i)) ) の情報エントロピー(シャノンエントロピー) H を 固定して、σi を決めよう︕ ( ) ( ) ( ) ( ) ( ) ( ) 2 1 | log | n j i j i j H p p = = − x x x x 2H perplexity = t-SNE では二分探索 [1] で σi を計算 (perplexity は σi に対して単調増加なのでOK) [1] https://ja.wikipedia.org/wiki/二分探索 perplexity は事前に設定する必要がある
  9. p(z(i), z(j)) って何︖ 10 ( ) ( ) ( )

    ( ) ( ) ( ) ( ) ( ) ( ) 1 1 , , log , i j n n i j i j i j p C p p = = =  x x x x z z 評価関数 について、 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) が似ている (距離が⼩さい) ほど、大きくなる
  10. p(z(i), z(j)) の式 11 t-SNE では⾃由度1の (スチューデントの) t 分布 [1]

    を仮定して 下のように定義している [1] https://ja.wikipedia.org/wiki/T分布 ( ) ( ) ( ) ( ) ( ) ( ) ( ) 2 2 1 1 1 1 , 1 1 i j i j n n k l k l p n = =         + −   =     −     + −    z z z z z z 分⺟の -n は、和を取るときに、k = l が含まれてしまうため その分を引くためのもの
  11. 目的関数 C の最⼩化 12 目的関数 C を z(i) で偏微分すると、 (

    ) ( ) ( ) ( ) ( ) ( ) ( ) { } ( ) ( ) ( ) ( ) ( ) 2 1 , , 4 1 i j i j i j n i i j j p p C = − − ∂ = ∂ + −  x x z z z z z z z 確率的勾配降下法 [1] で z(i) を更新していく [1] https://ja.wikipedia.org/wiki/確率的勾配降下法 t-SNE ではモメンタム法を利用
  12. perplexity をどう決めるか︖ ① 試⾏錯誤によって決める 目安は、5 〜 50 の間の値 ② k3n-error

    (k-Nearest Neighbor Normalized Error for visualization and reconstruction) [1] によって最適化する こちら https://github.com/hkaneko1985/tsne に k3n-error を用いた perplexity の最適化のデモがあります 15 [1] H. Kaneko, Chemom. Intell. Lab. Syst., 176, 22-33, 2018
  13. 参考文献 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 and Reconstruction – A New Measure for Data Visualization Performance, Chemometrics and Intelligent Laboratory Systems, 176, 22-33, 2018 https://www.sciencedirect.com/science/article/abs/pii/S0169743918300698 16