我正在开展一个项目,我必须根据一些训练观察创建一个k-means模型。我有380个观测值(700个特征)。我正在使用Spark MlLib的K-means算法。当我选择大于10的k(簇数)时,我的一些簇仅分配给它们1个点(例如25个,其中6个只得到1个点)。首先,我认为某些点与其他点的距离很远,但问题是并不总是将相同的点分配给自己的集群。
这是预期的行为吗?如果这是一个问题有多大?
答案 0 :(得分:0)
这是k-means的典型特征。
特别是如果您有比数据点更多的功能,并且您具有非连续功能。这是一种过度拟合 - 由于高维度,许多点在某种意义上是“独特的”。
由于k-means涉及随机,因此每次都不会得到相同的结果。
你需要来探索更高级的算法 - k-means真的很古老而且有限。 Spark可能不是最好的工具,因为它提供的算法很少。