諸々の次元圧縮


 Image manifolds は面白そうという話に関連して、いろんなやり方を比較して試せるデモを見つけたのでメモ。


MANI fold Learning Matlab Demo
Todd Wittman @ University of Minnesota


 matlabgui が用意されていて、サンプルデータや自前のデータを様々な次元圧縮アルゴリズムに入れて結果を可視化することが出来る。


 例:(左上がオリジナルのデータで、あとのものが8種類のアルゴリズムによる2次元展開の結果。)


(サンプルの一つ、穴あき Swiss Roll。2次元シート状のサンプル点がロールケーキみたいに丸まって分布している。PCA や MDS (上2つ)などではシート構造は復元できないのだけれど、LTSA (右下) などでは綺麗に復元されているのがわかる。しかもこれで見るとLTSAは結構速い。)



(サンプルその2。ドーナツ状のらせん構造(Troidal Helix)。落書きみたい。)


 自前の matlab 行列をデータとして取り込んで、解析結果を matlab 行列として返してもらうということも出来るので、ちょっと試しに自分の高次元データを可視化したい/主軸を調べたい/クラスタリングの度合いを見たい/外れ値を検出したいというときにも使えるかも。*1


 あとこの辺の技術って不安定な状態でのスパイク弁別(バーストや電極の動きなどでスパイク形状がある程度連続的に変化していく状態等)に使えるのでは。誰か実装している人いるだろうか。LTSA は PCA と同じぐらい高速に計算できるようだし、ちょっとやってみたら面白いかも。


 こういうのもあるらしい。

Matlab Toolbox for Dimensionality Reduction
Laurens van der Maaten @ Maastricht University


 ↑の著者による、次元圧縮に関する最近(2008年1月)のレビュー(注:PDF)。

Dimensionality Reduction: A Comparative Review.
L.J.P. van der Maaten, E.O. Postma, and H.J. van den Herik.

*1:例は3次元→2次元のものだけれど、m次元→n次元の変換も可能。ただし4次元以上は上記のような一覧表示はしてくれない。