tSNEの結果のクラスタリングは慎重に
tSNE(やおそらくUMAP)は本質的に2次元に落とすことが困難な高次元正規分布に対して適用すると、ランダムさによる局所的な密度の変化に過度に反応してアーティファクト(実在しないクラスタ)を作り出してしまう
数学的に生成したデータで実験するとこの問題が目立つ
現実のデータはしばしば「密度の高いところ」を「密度の低いところ」が包んだクラスタがいくつか散らばったような「良い特徴」を持っているため、近傍データ点との距離をベースにして可視化するtSNEやUMAPできちんとその特徴を保ったまま次元削減できる
一方で、そうではなく高次元の一塊のデータに使った場合、本質的に2次元で表現できないものを2次元にしてるわけなのでなんらかの歪みが出る。それは本来は一つのクラスタを複数に引きちぎってしまうとか、大きな意味のない密度の揺らぎを過度に誇張してしまうとかの形で現れて、これは後段のクラスタリングに良くない影響をもたらす。
おそらく現実のデータは小さくて綺麗に離れたいくつかのクラスタと、大きくて高次元で分離困難な1〜2個の泥団子で出来てて、この泥団子部分の分析に関しては「tSNEしてkMeans」とかは密度情報が歪んでるので最悪の手段、DBSCAN系はtSNEやUMAPと似た「近傍に注目」の特性のおかげでマシ(TTTCが使ってたSpectralClusteringもそうなのかな?) ただし「高密度なところをシードとしてそこから近傍を探索する」というヒューリスティックにおいて、シードの位置が間違う可能性がありそう
それを踏まえると、「UMAPの結果をクラスタリングするべきか」で僕が試したやり方の「周辺クラスタと中央の泥団子を分離する」はまだ良いけど、泥団子に対して密度推定をかけたのは明らかに筋悪ですね。泥団子部分は可視化を諦めて元データの高次元空間上でクラスタリングする方が良さそう。 特に元データが低次元の場合にtSNEやUMAPはアーティファクトを生み出してしまう https://gyazo.com/d4cd7ba17948672ce19213a871fe4130https://gyazo.com/04d2c92a85dabbbcdc67321a1795706a