Slide 1

Slide 1 text

クラスタ分析における クラスタ数の決め方 @bob3bob3 Tokyo.R #60

Slide 2

Slide 2 text

クラスタ分析におけるクラスタ数の決め方 ● クラスタ分析を行う際、クラスタ数をいくつにするべきかという のは非常に悩ましい問題。 ● 目的や分野によっても考え方が異なるでしょう。 ● 原則として、分析者が意思を持って決めるべき、というのが結 論ではある。 ● ただ、それを支援する、より適切と思われるクラスタ数を示唆 してくれる指標(cluster index)がいくつかRで提供されている。

Slide 3

Slide 3 text

パッケージと関数 ● 今回は3つのパッケージと関数をご紹介。 ○ {cclust} パッケージの clusterIndex() ○ {vegan} パッケージの cascadeKM() ○ {clusterSim} パッケージの cluster.Sim()

Slide 4

Slide 4 text

{cclust}パッケージのclustIndex() ● clustIndex() は cclust() でクラスタリングした結果に対して指標値を返す。 ● 15種の指標を返すが、calinski(疑似F統計量)がおすすめ。 library(cclust) DAT <- as.matrix(iris[,-5]) MAX <- 10 res <- data.frame(matrix(0,MAX,15)) for (i in 2:MAX){ clust <- cclust(DAT, i) temp <- clustIndex(clust, DAT) if(i==2) colnames(res) <- names(temp) res[i,] <- temp } plot(res$calinski, type="b")

Slide 5

Slide 5 text

{vegan} パッケージの cascadeKM() ● cascadeKM() は calinski に基づいて最適と考えられるクラスタリング結果を返す。 library(vegan) # 試行するクラスタ数の最小数と最大数を与える # デフォルトは calinski だが ssi も使える res <- cascadeKM(iris[,-5], 2, 10) best <- plot(res) best$x[,best$best.grps]

Slide 6

Slide 6 text

{clusterSim} パッケージの cluster.Sim() ● cluster.Sim()は複数の標準化手法、距離、クラスタリング手法を組み合わせて最 適なクラスタリングを探索する。引数の指定が独特なのでヘルプからたどれる clusterSim_details.pdf を見ながら設定すること。 library(clusterSim) cluster.Sim(iris[,-5], p=1, min=2, max=10, "G1", outputHtml="results.iris") # これで3,312通りのクラスタリングが試される。 # 非力なマシンでは非常に時間がかかるので注意。

Slide 7

Slide 7 text

最後に ● クラスタの数は分析者が意思を持って決めるべきという結論 は変わらないのですが、これらの指標を使うことで検討にかか る負担を大きく減らし、考察に時間を使うことができます。 ● また、GIGOなのは変わらないので、これらの指標を使っても 元データがダメだとどうにもなりません。本当の肝はどんな データをクラスタリングに利用するかという部分ですが、その 話はまたこんど。