特にk-meansについては、ギャップ統計を使用できます。基本的に、アイデアは、増加するクラスターの参照分布と比較した平均分散に基づいて、クラスター化の良さを計算することです。詳細については、元の論文に記載されています。
Tibshirani、R.、Walther、G。、およびHastie、T。(2001)。ギャップ統計を使用したデータセット内のクラスター数の推定。JR統計学者。Soc。B、63(2):411-423。
関連する質問に私が提供した回答は、特定のデータセットが何らかの構造を示すかどうかを確認するために使用できる他の一般的な有効性インデックスを強調しています。
ノイズのみが存在する場合に何を見つけることができるのかわからない場合、リサンプリングを使用してクラスターの安定性を調べるのが良い方法です。言い換えれば、データをリブートし(ブートストラップを介して、または小さなノイズを追加することにより)、Jaccardの類似性によって測定された結果のパーティションの「近さ」を計算します。つまり、同様のクラスターがデータで復元された頻度を推定できます。このメソッドはfpc Rパッケージでとしてすぐに利用できますclusterboot()
。入力として生データまたは距離行列のいずれかを受け取り、幅広いクラスタリング手法(階層的、k-means、ファジー手法)を適用できます。この方法は、リンクされたリファレンスで説明されています。
Hennig、C.(2007)クラスター安定性のクラスターごとの評価。
計算統計とデータ分析、52、258-271。
Hennig、C.(2008)溶解点と分離の堅牢性:一般的なクラスター分析手法の堅牢性基準。Journal of Multivariate Analysis、99、1154-1176。
以下は、k-meansアルゴリズムを使用した小さなデモです。
sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
sim.xy(100, c(2.5,0), c(.4,.2)),
sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
clustermethod=kmeansCBI,
krange=3, seed=15555)
3つのクラスター(krange
)のいずれもサンプル全体で解消されず、クラスターごとの平均Jaccardの類似性はすべてのクラスターで> 0.95であるため、この人工(および十分に構造化された)データセットでは結果が非常に良好です。
以下は、20個のブートストラップサンプルの結果です。見てわかるように、統計単位は同じクラスターにグループ化されたままになる傾向がありますが、それらの間にある観測値の例外はほとんどありません。
もちろん、この考え方を任意の有効性インデックスに拡張できます。ブートストラップ(置換を含む)で新しい一連の観測値を選択し、範囲(たとえば、シルエット幅、共表現相関、平方クラスター番号(2から10など)、100または500回繰り返し、クラスター数の関数として統計の箱ひげ図を見てください。
これは、同じシミュレーションデータセットで得られたものですが、ウォードの階層クラスタリングを使用して、コフェネティック相関(結果のパーティションで距離情報がどの程度再現されるかを評価)とシルエット幅(クラスター内の均一性と相互作用を評価する組み合わせ測定クラスター分離)。
cophenetic相関の範囲は0.6267から0.7511で、中央値は0.7031(500ブートストラップサンプル)です。シルエットの幅は、3つのクラスター(中央値0.8408、範囲0.7371-0.8769)を考慮すると最大になるようです。