賛成反対データのUMAP
なぜならこの種のデータはしばしば「同一点に重なるデータ」があり、近傍k個のデータ点をとって密度を計算する系のアルゴリズムから見ると「とても密度の高いクラスタがある」と見えるから
https://gyazo.com/33db5afa7fee3f182b00dbd64a54e268
いかにも意味のありげなクラスタができている図
元データは「3%が+1、3%が-1、残りが0」という100次元のベクトル5000個
このUMAPのplotのうち「非ゼロの値が1個しかない点」を赤にするとこうなる
https://gyazo.com/95c96b22678ea65e678f20b8195cf7d4
「意味ありげなクラスタ」に見えたものの中に芯のように赤い点があるのがわかる
「非ゼロの値が2個以上のデータ」4920件に限定してUMAPしなおすとこうなる
https://gyazo.com/9689803635bc2483f202bf33805ed273
さきほどの意味ありげなクラスタに見えたものがほとんど消えて、単なるアーティファクトだったことがわかる
個数を数えてみる
https://gyazo.com/44e6cf0408866a29384d135d7bcacb1b
原点のデータが8個、たまたま2個重なってるデータがいくつか(12個だった)
この2個重なっている点だけを赤でplotしたものがこれ
https://gyazo.com/a975353317cd7b1eec001355ed9d0484
アーティファクトのクラスターの芯になっていることがわかる
---
これは生成データでだけ起こるトリッキーな現象ではなく、現実のデータでも起こること
現実のデータから得られた下記のようなUMAPに対してDBSCANでのクラスタリングを試行錯誤していた
https://gyazo.com/ca78ba9feeb5beabee68258e4128cdc9
2次元データからDBSCANしてもあまりうまくいかなかったので、次元削減前の84次元空間で試していたが、パラメータによっては「中央付近の明らかにクラスタに見えるものを除外したクラスタ」ができて不穏だった
https://gyazo.com/2f5bb5b150d2c2ceaa7eb3de6daa4e0c
この原因が何かを探究する過程でわかったが「中央付近のクラスタに見えるもの」が欠損値の少ないデータの集まりで、周囲の複雑な意味ありげな形だったものは欠損値多めのデータだった
https://gyazo.com/66f90b8311c1343c4720c730623b1ca1
この結果を見て、欠損値多めのデータの密度が高いというところから上記のような現象に気づいた
元々このデータはmatrix.dropna(thresh=3)してたのだけど、ここをmatrix.dropna(thresh=10)に変えたところUMAPの結果は下記のようになった
https://gyazo.com/6c91b8174f233a4441bc3c3fc66a7d08
複雑な形状はほとんどすべてアーティファクトだったというわけ