【要約】自分のブログ53記事をUMAPで並べてみたら、「実践記」と「Claude入門」はきれいには分かれなかった [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者は自身のブログ記事を2つのカテゴリに分類しているが、文章の類似性が本当に異なっているのかを検証した。分類の妥当性を確認する過程で、以下の課題に直面した。
- ・カテゴリ分けが主観的な思い込みである可能性。
- ・形態素解析ライブラリを使用できない環境での日本語ベクトル化の制約。
- ・次元削減後の可視化結果が、真のデータの構造を反映しているかという疑念。
- ・低次元投影による「見かけ上の近さ」が、高次元の類似性を保証しないリスク。
// Approach
形態素解析を用いず、文字n-gramによるTF-IDFを用いて日本語テキストをベクトル化し、複数の次元削減手法で比較検証した。
- ・TF-IDF (char n-gram, 2-4gram) を用い、単語分割なしで文章を数値化。
- ・UMAP、t-SNE、TruncatedSVDの3手法を用いて2次元へ投影。
- ・UMAPはコサイン距離、t-SNEは50次元への線形圧縮後にユークリッド距離を使用。
- ・シルエットスコアを用いて、高次元空間と低次元空間での分離度を定量的に比較。
// Result
次元削減後の可視化では、タグによる分離は不完全であった。むしろ「記事の長さ」が軸として機能していた。
- ・UMAPでのシルエットスコアは0.549と上昇したが、高次元の生データは0.064とほぼ分離していない。
- ・2次元空間で隣接していても、高次元でのコサイン類似度は平均程度に留まるケースを確認。
- ・一方で、連載(series)単位では、語彙の重複により一貫して明確なクラスタリングが確認された。
Senior Engineer Insight
> 可視化結果の「見かけの綺麗さ」に騙されてはならない。次元削減は分散の大きい軸を強調するため、分離が強調されすぎる傾向がある。特に、低次元での近傍が、高次元での類似性を保証しない点は、異常検知やログ解析の現場で致命的な誤認を招く。可視化はあくまで探索的手段とし、必ず高次元での類似度や、分離の要因(文字数などのノイズ)を定量的に検証すべきである。