以下のコードを使用しているときに、四角形の合計内で合計が増加しています。これも可能ですか、コードで間違いをしていますか?クラスタの数に応じてKmeansの合計が2乗の合計内に増加できますか?
v<-foreach(i = 1:30,.combine = c) %dopar% {
iter <- kmeans (clustering_data,centers = i,iter.max = 1000)
iter$tot.withinss
}
以下のコードを使用しているときに、四角形の合計内で合計が増加しています。これも可能ですか、コードで間違いをしていますか?クラスタの数に応じてKmeansの合計が2乗の合計内に増加できますか?
v<-foreach(i = 1:30,.combine = c) %dopar% {
iter <- kmeans (clustering_data,centers = i,iter.max = 1000)
iter$tot.withinss
}
K-meansはランダム化されたアルゴリズムです。それは最適を見つけることを保証しません。
あなたは単純に悪いランダムを持っていました。
はい。 Anony-Mousseの答えを参照してください。
kmeans()
関数の引数をに設定した場合は、アルゴリズムを25回実行し、各実行から誤差測定値を収集し、内部で平均を構築します。このようにして、foreachループを構築する必要はありません。ドキュメントから
Rのkmeans()
## random starts do help here with too many clusters
## (and are often recommended anyway!):
(cl <- kmeans(x, 5, nstart = 25))
あなたは n始動のための合理的な値を選択する必要があります。次に、異なるランダム初期化によるエラーが平均化された可能性が高くなります。 (ただし、nstartの実行後にtot.withinssが最小になるという保証はありません)