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
で次元削減して表現している