k-meansの必要なところだけ。
k-meansとは
非階層的クラスタリング手法の1つ。
要するに何をしているのか
- k個のクラスターの初期位置を決める。
- 各データをk個のクラスターとの距離を求め、最も近い位置のクラスターに分類。
- 形成されたクラスターの中心を算出
- クラスタの中心が変化しない時点まで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()