標準のstats
パッケージ:kmeans(dataset, centers = 100, nstart = 25, iter.max = 20)
を使用して、636,688行と7列のデータセットでRのk-meansクラスタリングを実行しています。
次のエラーが表示されます:Quick-TRANSfer stage steps exceeded maximum (= 31834400)
、および http://svn.r-project.org/R/trunk/src/library/stats/R/でコードを表示できますがkmeans.R -何がおかしいのかわかりません。私の問題はデータセットのサイズに関係していると思いますが、誰かが問題を軽減するためにできることを一度だけ明確にできれば幸いです。
私は同じ問題を抱えていました。
?kmeans
を介してRのkmeansのドキュメントを参照してください。
Hartigan-Wongアルゴリズムは通常、これらのいずれよりも優れた仕事をしますが、いくつかのランダムスタート(「nstart」> 1)を試みることをお勧めします。 まれに、いくつかのポイント(「x」の行)が非常に近い場合、アルゴリズムは「Quick-Transfer」段階で収束しない場合があります、警告を通知(および「ifault = 4 ')。その場合、データをわずかに丸めることをお勧めします。
これらの場合、LloydまたはMacQueenアルゴリズムに切り替える必要があります。
ここでのRの厄介な点は、気づかないうちに警告が続くことです。ベンチマークの目的のために、これは失敗した実行であると考えているため、以下を使用します。
if (kms$ifault==4) { stop("Failed in Quick-Transfer"); }
ユースケースによっては、次のようなことをしたい場合があります
if (kms$ifault==4) { kms = kmeans(X, kms$centers, algorithm="MacQueen"); }
代わりに、別のアルゴリズムを続行します。
K-meansのベンチマークを行う場合、Rはデフォルトでiter.max=10
を使用することに注意してください。収束するには10回以上の反復が必要になる場合があります。
@jlhowardのコメント:
試して
kmeans(dataset, algorithm="Lloyd", ..)