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

関連

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.