Posted at

UMAPについて私的まとめ

More than 1 year has passed since last update.

最新の次元圧縮手法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



関連