2016-10-31 17 views
1

次のシミュレーションデータについて検討してください。kのための 'nstart'を決めるにはrの意味ですか?

x1 <- c(rnorm(500000,5),rnorm(500000),rnorm(500000,5),rnorm(500000,15)) 
y1 <- c(rnorm(500000,5),rnorm(500000),rnorm(500000,15),rnorm(500000,5)) 
label <- rep(c("c1","c2","c3","c4"), each = 500000) 

dset = data.frame(x1,y1,label) 
with(dset,plot(x1,y1,col = label)) 

したがって、4つのクラスタがあり、私はアルゴリズムを意味します。一般に、20 - 25 'nstart'を使用することが適切であると言われています。しかし、大きなサンプルにどのように影響しますか?ここで私のサンプルサイズは200万です。だから、大きなサンプルのために 'nstart'を決める方法はありますか?

ここに私が提訴したコードです。私はコードにいくつかの並列処理を使用したいので、4つのコアを使用して作業を完了できるようにします。

parLapply(cl, c(25,25,25,25), fun=kmeans(x=dset[,c(1,2), centers=4, nstart=i)) 
+1

kmeansコードがないので、検索していないという印象を受けます。あなたの検索戦略を含めることによって、印象が正しくないことを私に示すことができます。 –

+0

@ 42-私はk meansコードを使用しませんでした。なぜなら、私はいくつかの並列処理も実装していたので、少し複雑になるかもしれないからです。どのように私はコードを貼り付けた。ここでは、各コアに25を割ることで100として「nstart」を使用しました。私が知りたいことは、サンプルを無作為に推測することなく、どのようにして 'nstart'を決めることができるのですか? –

+0

おそらく関連している:http://stackoverflow.com/questions/5466323/how-exactly-does-k-means-work –

答えて

1

n_startは必ずしもサンプル数に依存しません。

を実行すると、k-meansで得られる最良のクラスタリングを確実に見つけることができます。

他のデータセットでは、k-meansがデータに対してまったく機能しないため、どれも良いとは限りません。

私はむしろ次のようにしています:k-を実行することは、何回かを意味します。非常に似通った結果が得られた場合は、より良い結果が得られなくなったら最高のものを使用してください。結果が非常に異なる場合は、k-meansが機能せず、停止して他のことを行うことができます。

関連する問題