非階層的クラスタリング k-means

k-meansの必要なところだけ。

k-meansとは

非階層的クラスタリング手法の1つ。

要するに何をしているのか

  1. k個のクラスターの初期位置を決める。
  2. 各データをk個のクラスターとの距離を求め、最も近い位置のクラスターに分類。
  3. 形成されたクラスターの中心を算出
  4. クラスタの中心が変化しない時点まで2, 3を繰り返す

参考:以下のデモツールをカチカチ https://www.albert2005.co.jp/knowledge/data_mining/cluster/non-hierarchical_clustering

短所

k-means法の一つの短所として、初期値(初期に選択される「核」となるk個のサンプル)依存性があります。図29の3つのクラスターは、初期値を変えて、重心が変化しなくなるまで、繰り返し計算した時の結果です。同じデータを距離などを同じ条件にして計算しても、初期値が異なるだけで、結果が大きく違うことが分かります。従って、よいクラスターを得るためには、初期値を変えて何回か分析を実施し、平均クラスター内距離が最小になる初期値を選択するなど、最適初期値での結果を採用することが望ましいといえます。

Rで実践

## PCA
state.pca <- prcomp(state.x77[,1:6], scale = T)

## kmeansでクラスタリング
state.km <- kmeans(scale(state.x77[,1:6]), 3)

## データフレームに変換、クラスターident列を追加。
state.pca.df <- data.frame(state.pca$x)
state.pca.df$cluster <- as.factor(state.km$cluster)

## Plot
ggplot(state.pca.df, aes(x = PC1, y = PC2, label = name, col = cluster)) +
    geom_text() +
    theme_bw()

スクリーンショット 2018-05-27 10.38.38.png (70.7 kB)