6.7.29
デンドログラムで階層的クラスタリングを可視化
まとめ
- 階層的クラスタリングの結果をツリー構造で描画し、クラスター間の距離と統合順序を読み解く。
scipy.cluster.hierarchyのlinkage+dendrogramで実装できる。- クラスター数を決める前の探索や、グループ間の類似関係を把握したいときに使う。
デンドログラムは凝集型クラスタリングの統合過程をツリー形式で描いたもの。Y 軸が統合時の距離を表し、水平に切断する高さでクラスター数が決まる。
| |

読み方のポイント #
- Y 軸の高さが低い位置でつながっているアイテム同士は類似度が高い。
- 水平線(カット閾値)を引くと、その高さで切断したときのクラスター数が読める。上の例では閾値 8 で 3 クラスターに分かれる。
- 枝の色は
color_thresholdで自動着色され、異なる色が異なるクラスターを示す。
いつ使うか #
- 適している場面: クラスター数を事前に決められないとき、統合の過程を可視化して適切なカット位置を決めたい場合。生物の系統樹や文書の類似関係にも使われる。
- 不向きな場面: サンプル数が 100 を超えるとラベルが潰れて読めない。大規模データでは代表サンプルを選ぶか、ヒートマップ付きデンドログラムに切り替える。
- 代替手段: サンプル数が多い場合は t-SNE / UMAP で 2D に圧縮して散布図。クラスター数が決まっているなら k-means で直接分割。
よくある失敗パターン #
- リンケージ手法の未検討:
ward/average/complete/singleで結果が大きく変わる。コフェネティック相関係数で比較し、最適な手法を選ぶ。 - スケール未統一: 特徴量のスケールが異なると距離計算が歪む。事前に
StandardScalerで標準化してからクラスタリングする。
- 相関ヒートマップ — 変数間の類似度を色で表現
- ツリーマップ — 階層構造を面積で可視化
- コホートヒートマップ — 時間×コホートの行列表示