-1

Kモードクラスタリングを使用してカテゴリデータをクラスタリングしますが、同じ数のクラスタでデータをクラスタ化すると、毎回異なるクラスタサイズが返されます。Rのkモードクラスタリングは、実行ごとに異なるクラスタサイズを返します

同じデータと同じ数のクラスタでクラスタを実行すると、クラスタのサイズが常に固定されることが予想されました

私は何か間違っていますか?

library(klaR) 
mysample=read.csv("sample_to_cluster.csv") 
results1 <-kmodes(mysample[,2:ncol(mysample)],3 , iter.max = 50, weighted = FALSE) 
results2 <-kmodes(mysample[,2:ncol(mysample)],3 , iter.max = 50, weighted = FALSE) 
print(results1$size) 
print(results2$size) 
#why results1 & results2 don't have the same sizes 

これは私が CSV

+1

サンプルは、関数であるから、あなたは結論 –

+0

おかげ@AjayOhriを避けるために、あなたのデータフレームの名前を変更してくださいすることができ、私はそれを変えたが、私はまだ同じ問題 – Nobel

答えて

1

を使用していCSVファイルではhttps://stats.stackexchange.com/questions/58238/how-random-are-the-results-of-the-kmeans-algorithm

つ以上のk平均アルゴリズムがありますを参照してください。

Lloydsアルゴリズムを参照してください。このアルゴリズムは、最初のクラスタの中心点のみに依存します。しかし、順序に依存するマックイーン(MacQueen's)もある。即ち、点の順序付けである。次に、Hartigan、Wong、Forgyがあります。

さまざまな実装で実装と最適化の違いがあります。彼らはネクタイを別々に扱うかもしれません!たとえば、多くの素朴な実装では、結びつけられたときに、最初または最後のクラスタに常に要素が割り当てられます。

さらに、k-meansの終了後にクラスタがメモリアドレスによって並べ替えられてしまうことがあるため、k-meansが最初の繰り返し後に収束してもクラスタ1がクラスタ1のままであると誤って考えることはできません。他の人はクラスターのサイズをクラスターの順に並べ替えます(実際にはk-meansには意味があります)。

これは本当にどのような種類のデータがあるかによって異なります。それが球形のクラスターにうまく分割されていると、通常は非常によく似たクラスターになります。そうでなければ、毎回かなりランダムなクラスタが得られるかもしれません。

set.seed(1)

毎回K-手段は、重心を初期化し、ランダムな値を生成するためのシードを必要としている、ランダムに生成されます。ちょうど関数kmeansよう

+0

もhttps://stackoverflow.com/を読みました質問/ 5696381/r-clustering-results-are-different-everytime-i-run –

+0

彼はk-meansについてではなく、k-meansについて尋ねました。 –

1

Kmodesはその後、ランダム初期設定で始まり、それはローカル最適に収束するまで最適化します。

  1. ランダムシードはアルゴリズムの「入力の一部」です。同じランダムシードで同じ結果が得られるはずです。
  2. 異なるランダムな種子の結果が大きく異なる場合は、いずれも良いとは言えません。 の場合はが最適であると議論した論文がありましたが、到達するのは容易でなければなりません。だから毎回違う最適に達するならば、それほど良いことはありません。
関連する問題