LoginSignup
35
38

More than 5 years have passed since last update.

UMAPについて私的まとめ

Posted at

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

関連

35
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
38