NISHIO Hirokazu[Translate]
賛成反対データのUMAP
賛成+1, 反対-1, 欠損0のベクトルのようなデータをUMAP, DBSCAN, HDBSCANするときには注意が必要
なぜならこの種のデータはしばしば「同一点に重なるデータ」があり、近傍k個のデータ点をとって密度を計算する系のアルゴリズムから見ると「とても密度の高いクラスタがある」と見えるから

いかにも意味のありげなクラスタができている図
元データは「3%が+1、3%が-1、残りが0」という100次元のベクトル5000個

このUMAPのplotのうち「非ゼロの値が1個しかない点」を赤にするとこうなる
「意味ありげなクラスタ」に見えたものの中に芯のように赤い点があるのがわかる

「非ゼロの値が2個以上のデータ」4920件に限定してUMAPしなおすとこうなる
さきほどの意味ありげなクラスタに見えたものがほとんど消えて、単なるアーティファクトだったことがわかる

個数を数えてみる
原点のデータが8個、たまたま2個重なってるデータがいくつか(12個だった)

この2個重なっている点だけを赤でplotしたものがこれ
アーティファクトのクラスターの芯になっていることがわかる

---

これは生成データでだけ起こるトリッキーな現象ではなく、現実のデータでも起こること
現実のデータから得られた下記のようなUMAPに対してDBSCANでのクラスタリングを試行錯誤していた

2次元データからDBSCANしてもあまりうまくいかなかったので、次元削減前の84次元空間で試していたが、パラメータによっては「中央付近の明らかにクラスタに見えるものを除外したクラスタ」ができて不穏だった

この原因が何かを探究する過程でわかったが「中央付近のクラスタに見えるもの」が欠損値の少ないデータの集まりで、周囲の複雑な意味ありげな形だったものは欠損値多めのデータだった
この結果を見て、欠損値多めのデータの密度が高いというところから上記のような現象に気づいた
元々このデータは matrix.dropna(thresh=3) してたのだけど、ここを matrix.dropna(thresh=10) に変えたところUMAPの結果は下記のようになった
複雑な形状はほとんどすべてアーティファクトだったというわけ


"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]