Kepler Mapper を試行。
https://github.com/scikit-tda/kepler-mapper
example を動かしたのですが、そのままでは Version 違いで動きませんでした。最新版の API reference を参照し、修正したら動きました。ついでに mapper.visualize で html に。
図はできました。が、思っていたほど topology が主体ではないですね。コードを見る限り、UMAP で次元を圧縮してから DBSCAN でクラスターを作成してます。これだと機械学習分野の前処理と変わらないのですが、その後、クラスター間の線をつないで図ができています。つなぐぐか、つながないかの判断が topology なんでしょうね。
感覚的には分かったので、説明を検索。
Mapper の説明。3人目の方が話されています。
https://aip.riken.jp/video/aip-open-seminar-2/?lang=ja
Mapper
・ Extract the "shape" of complicated data.
・ Local clustering + global information
・ Generalization/"discretization" of Reeb graph.
・ Tool for exploratory (topological) data analysis.
0. prepare the data
1. Choose filter function
2. Partition (with overlap) using filter and cover
3. Perform Clustering in each partiton
4. Create Mapper graph
Each cluster is represented by a vertex.
Draw an edge if there's a non-empty interaction between two clusters.
上の例では UMAP が filter function に該当するのでしょう。動画ではPCAが紹介されています。
Reeb graph って何だろう、と探してみたら、良い動画がありました。比較により、Mapper の特徴がよくわかります。
https://www.youtube.com/watch?v=_tiv0qYcM3U
この動画の冒頭で紹介されている文献は Kepler-mapper でも参照されています。よくわからない部分が多いのですが、動画の解説部分は理解できましたので必要に迫られるまで寝かしておきましょう。
***********************************************************
202010827追記
実際のデータ(10,000,000*3)を入れたら、MemoryError。クラスタリングに sklearn を使っているからでしょう。実務での利用は難しいかな。
0 件のコメント:
コメントを投稿