回答:
たぶんあなたはあなたの問題に対して間違ったアルゴリズムを使用しているのでしょう。
K-meansは前処理に非常に敏感です。1つの属性が他の属性よりもはるかに大きい場合、出力を支配します。出力は事実上1次元になります
何をするにしても、SSQのような数字から始める以外の方法で結果を検証する必要があります。代わりに、視覚化を検討してください。
また、視覚化により、データ内にクラスターが1つしかない場合もあることがわかります。
1つの方法は、特定のkについてクラスター内のメンバーを手動で検査し、グループ化が意味をなすかどうかを確認することです(それらは区別可能ですか?)。これは、分割表と条件付き手段を介して実行できます。これをさまざまなkに対して行い、適切な値を決定できます。
主観的ではない方法は、Silhouette Valueを使用することです。
/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function
これは、お気に入りのソフトウェアパッケージで計算できます。リンクから:
この方法は、グループ内の類似性と最も近いグループの類似性を比較するだけです。同じクラスターの他のメンバーへのデータメンバーの平均距離が、他のクラスターメンバーへの平均距離よりも大きい場合、この値は負であり、クラスタリングは成功しません。一方、影絵の値が1に近い場合、クラスタリング操作が成功したことを示します。0.5は、クラスタリングの正確な尺度ではありません。
contingency tables and conditional means
これはさらに神秘的です。良いkに「主観的に」到達するためにそれらをどうすればよいですか?
通常、次のことを検討できます。
NbClustパッケージを使用して、kの最適値を見つけることができます。クラスタ数を決定するための30のインデックスを提供し、最良の結果を提案します。
NbClust(data = df、distance = "euclidean"、min.nc = 2、max.nc = 15、method = "kmeans"、index = "all")