t-sne について、理論とか知りたくなったので調べてまとめてみる

正式には t-sne(t-distributed stochastc neighbor embedding) といい次元削減法の一種。 word2vec など、高次元空間で表されるデータを可視化するときに用いられる

次元削減とは、高次元のデータの集合についてデータの特徴を保持したまま、 低次元のデータ集合に変換すること

他には主成分分析(PCA)などの方法が知られている

sne という手法に改良を加えたものを t-sne という

sne

アプローチとしては、高次元空間での類似度を$p_{ij}$、

低次元空間での類似度を$q_{ij}$とし、確率分布で表現する。 それらの分布を最小化するように確率分布のパラメータを最適化する 二点間の類似度を条件付き確率で表現する

$p_{ij}$は$x_iのx_j$近さを確率で表す

条件付き確率

B における A の条件付き確率

$$P(A|B)=\frac{P(A,B)}{P(B)}$$

と表す$P(A,B)$を A,B の同時確率(A と B が同時に生じる確率)という

$P(B)$は、B の生じる確率で、(複数の事象が生じる前提において)周辺確率ともいう

javascrtipt で使ってみる

実装と言っても、ライブラリを使っている t-sne

https://demo.uni-3.app/mnisttsne にて、 https://github.com/tensorflow/tfjs-examples/tree/master/tsne-mnist-canvas これの react 版を実装した

mnist 画像のベクトルを t-sne で次元削減して表現している

mnist tsne mnist tsne

参考