最新の次元圧縮手法UMAPについて、論文とUMAPモジュールのgithubをそれぞれ流し読みしたので特徴をまとめてみる。
必要な代数幾何学の知識が圧倒的に不足しているため、間違っている可能性が大いにある.
※まとまりきってないけど一度仮公開(2018/3/23)
UMAPの特徴
- t-SNEより高速
これに関しては、論文で様々なデータセットに対して検証しているが、8コア並列のt-SNEよりも早くなっているようだ。
自分でgoogle colaboratoryを用いて試したところ、t-SNEよりも1/4以下の処理速度で終わった。
- 可視化だけでなく、機械学習の次元削減にも利用できる
t-SNEは圧縮後の次元数を大きくすると、計算時間が急増する。
UMAPでは、いくつかの高速化手法が用いられており、圧縮後の次元数が大きくても現実的な時間で終了する(?)ため、機械学習データへの次元圧縮にも使用できるということだと思う。
- t-SNEよりも、マクロ/ミクロな関係性をうまくとらえている
論文中では、t-SNEとの可視化結果の比較が掲載されており、「まぁ、確かにそんな感じがする」といったところ。
- コサイン距離および相関距離などの距離指標が使用できる
これは結構大きい違いで、分散表現の可視化にコサイン距離が使えるのはありがたい。
- 処理の過程において確かな理論的基盤を持っている
この辺りの説明は、新たに論文で投稿されるらしい。
UMAPモジュールのパラメータ
目的に応じてn_neidhborsやmetricは決まっているはずなので、
後は、データに応じて、alphaやmin_dist、spread辺りを調整するのだと思う。
-
n_neighbors (default:15)
大きくするとマクロな、小さくするとミクロな構造を振る舞いを反映させる。
t-SNEでいうところのperplexityのような値だと思われる。
2~100が推奨されている。 -
n_components
圧縮後の次元数。 -
metric
使用する距離指標が選択できる。 -
alpha
圧縮データの学習率。 -
init
初期化法。
"spectral"は、Spectral Embeddingを使って初期値を決定しているようだ。
"random"よりは、おそらく良いのだろう(適当)。 -
random_state
いつもの乱数シード。 -
negative_sample_rate
計算時にネガティブサンプリングを行う際のサンプリングレート -
gamma
ネガティブサンプルにかかる重み。
正規化項の重みのようなもので、大きくするとまとまりは悪くなる傾向にある。
ノイジーなデータに対しては、この値を調整することで、可視化結果をある程度操作できそう。
以下、よくわからないもの。
-
min_dist
同一クラスタとして判定する距離。
おそらく、距離指標によっても適切に設定する必要がある。 -
spread
同一クラスタとして判定する指標。min_distと関連。
大きくするとまとまりが悪くなる。 -
set_op_mix_ratio
-
local_connectivity
-
a
-
b