2016年8月31日水曜日

【R】k-meansで統計的に適切なクラスタ数を選択する(Gap統計量:clusGap)

目的:統計的に適切なクラス多数を指定してk-meansをおこないたい
方法:clusGap(data, kmeans, k.max = 10, B = 10, verbose = interactive())
補足:library(cluster)が必要

dataはデータ、kmeansはk-means、K.maxはクラスタ数の最大値、Bはブートストラップ回数*

*ブートストラップ回数とは
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97%E6%B3%95

> result_gap <- clusGap(df.sample_data, kmeans, K.max = 80, B = 1000, verbose = interactive())
Clustering k = 1,2,..., K.max (= 80): .. done
Bootstrapping, b = 1,2,..., B (= 1000)  [one "." per sample]:
.................................................. 50 
.................................................. 100 
.................................................. 150 
.................................................. 200 
.................................................. 250 
.................................................. 300 
.................................................. 350 
.................................................. 400 
.................................................. 450 
.................................................. 500 
.................................................. 550 
.................................................. 600 
.................................................. 650 
.................................................. 700 
.................................................. 750 
.................................................. 800 
.................................................. 850 
.................................................. 900 
.................................................. 950 
.................................................. 1000 
> plot(result_gap)

下記はサンプルデータの結果

上の結果だと、20付近まで数値が右肩上がりに上昇しているが、それ以降は比較的停滞傾向にある。そのため、クラスタ数は20で良いと考えられる。


◆参考サイト
R K-means法のクラスタ数を機械的に決定する方法
http://www.trifields.jp/how-to-decide-number-of-clusters-in-r-1677

0 件のコメント :

コメントを投稿