-1

2 つの異なるクラスタリング手法を比較するモンテカルロ シミュレーションを実行しようとしています。次のコードは、ランダム クラスタリングに従ってデータセットを生成し、2 つのクラスタリング手法 (kmeans とスパース k 平均) を適用します。

私の問題は、これら 3 つの手法がクラスターに異なるラベルを使用していることです。たとえば、私がクラスター 1 と呼んでいるものは、kmeans はそれをクラスター 2 と呼び、スパース k 平均はそれをクラスター 3 と呼ぶかもしれません。ラベルが一致する場合もあれば、一致しない場合もあります。

これらのラベルを「標準化」する方法を誰かが提供できるので、毎回手動でラベル付けの違いを解決する必要なく、シミュレーションを n 回繰り返し実行できますか?

私のコード:

library(sparcl)
library(flexclust)

x.generate=function(n,p,q,mu){
  c=sample(c(1,2,3),n,replace=TRUE)
   x=matrix(rnorm(p*n),nrow=n)
  for(i in 1:n){
   if(c[i]==1){
      for(j in 1:q){
        x[i,j]=rnorm(1,mu,1)
     }
   }
    if(c[i]==2){
      for(j in 1:q){
       x[i,j]=rnorm(1,-mu,1)
     }
   }
  }
  return(list('sample'=x,'clusters'=c))
}

x=x.generate(20,50,50,1)
w=KMeansSparseCluster.permute(x$sample,K=3,silent=TRUE)
kms.out = KMeansSparseCluster(x$sample,K=3,wbounds=w$bestw,silent=TRUE)
km.out = kmeans(x$sample,3)
tabs=table(x$clusters,kms.out$Cs)
tab=table(x$clusters,km.out$cluster)
CER=1-randIndex(tab)

x$clusters、km.out$cluster、kms.out$Cs の出力例

> x$clusters 
 [1] 3 2 2 2 1 1 2 2 3 2 1 1 3 1 1 3 2 2 3 1 

> km.out$cluster 
 [1] 3 1 1 1 2 2 1 1 3 1 2 2 3 2 2 3 1 1 3 2 

> km.out$Cs 
 [1] 1 2 2 2 3 3 2 2 1 2 3 3 1 3 3 1 2 2 1 3 
4

4 に答える 4

1

類似性の最もよく使用される基準の 1 つはJaccard 距離です。例えば、Ben-Hur, A. Elissee, A., & Guyon, I. (2002) を参照してください。クラスター化されたデータの構造を発見するための安定性ベースの方法。Pacific Symposium on Biocomputing (pp.6--17)。

その他には、

于 2013-11-07T19:27:46.173 に答える
0

Jaccard 距離は (有名で確立されていますが) クラスタ サイズに大きく影響されるため、お勧めしません。これは、ノードではなくノード ペアをカウントするためです。また、統計的な趣向の方法は的を射ていないと思います。ポイントは、仕切り(クラスタリング)の空間が美しい格子構造になっていること。その構造内でうまく機能する 2 つの距離は、Variation of Information (VI) 距離と分割/結合距離です。stackexchange に関するこの回答も参照してください。

https://stats.stackexchange.com/questions/24961/comparing-clusterings-rand-index-vs-variation-of-information/25001#25001

ここで説明する 3 つの距離すべての例 (Jaccard、VI、分割/結合) が含まれています。

于 2013-11-11T11:42:36.147 に答える
0

@Joran が指摘しているように、クラスターは名目上のものであるため、順序自体はありません。

これが私の頭に浮かぶ2つのヒューリスティックです。

  • すでに計算したテーブルから始めます。クラスターが適切に整列している場合、tab行列のトレースは最大になります。
    クラスターの数が少ない場合は、方法 1 の $n$ クラスターに対して方法 2 のすべての順列を試すことで最大値を見つけることができます1 : n。大きすぎる場合は、最大の一致を最初に配置するヒューリスティックを使用できます。対角線など。

  • 同様に、2 つの方法の重心間の距離行列のトレースは最小限になるはずです。

于 2013-11-07T19:56:49.990 に答える