階層的クラスタリングの基礎

Pythonで学ぶクラスタ分析

Shaumik Daityari

Business Analyst

linkage による距離行列の作成

scipy.cluster.hierarchy.linkage(observations, 
                                method='single', 
                                metric='euclidean', 
                                optimal_ordering=False
)
  • method: クラスタ間の近さの計算方法
  • metric: 距離尺度
  • optimal_ordering: データ点の並び替え
Pythonで学ぶクラスタ分析

どの手法を使うべきか?

  • 'single': 最も近い2点に基づく
  • 'complete': 最も遠い2点に基づく
  • 'average': 全点の算術平均に基づく
  • 'centroid': 全点の重心(幾何平均)に基づく
  • 'median': 全点の中央値に基づく
  • 'ward': 二乗和に基づく
Pythonで学ぶクラスタ分析

fcluster でラベルを作成

scipy.cluster.hierarchy.fcluster(distance_matrix, 
                                 num_clusters,
                                 criterion
)
  • distance_matrix: linkage() の出力
  • num_clusters: クラスタ数
  • criterion: しきい値の決め方
Pythonで学ぶクラスタ分析

Ward 法での階層的クラスタリング

Pythonで学ぶクラスタ分析

単連結法での階層的クラスタリング

Pythonで学ぶクラスタ分析

完全法での階層的クラスタリング

Pythonで学ぶクラスタ分析

手法選択のまとめ

  • すべてに最適な唯一の手法はない
  • データ分布をよく理解して選ぶ
Pythonで学ぶクラスタ分析

演習に進みましょう

Pythonで学ぶクラスタ分析

Preparing Video For Download...