NISHIO Hirokazu[日本語][English]

賛成反対データのUMAP

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

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

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

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

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

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


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

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

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

世論地図のUMAP


(C)NISHIO Hirokazu / Converted from Markdown (ja)
Source: [GitHub] / [Scrapbox]