k-表示空簇

时间:2012-06-17 22:23:45

标签: k-means

我尝试将k-means作为家庭作业来实施。我的练习单给了我关于空中心的以下评论:

  

在迭代期间,如果任何群集中心没有与之关联的数据点,请将其替换为随机数据点。

这让我感到困惑,首先维基百科或我读过的其他资料根本没有提及。我进一步阅读了“为您的数据选择一个好的k”的问题 - 如果我开始为空的集群设置新的中心,我的算法应该如何收敛。

如果我忽略空簇,我会在30-40次迭代后收敛。忽略空集群是错误的吗?

7 个答案:

答案 0 :(得分:8)

查看此空集群如何发生的示例:http://www.ceng.metu.edu.tr/~tcan/ceng465_f1314/Schedule/KMeansEmpty.html 它基本上意味着1)力中的随机震颤,或者2)簇k的数量是错误的。您应该迭代k的几个不同的值并选择最佳值。 如果在迭代期间您遇到空簇,请将随机数据点放入该簇中并继续。 我希望这对你去年的家庭作业有所帮助。

答案 1 :(得分:4)

处理空簇不是k-means算法的一部分,但可能会带来更好的簇质量。谈论收敛,它从来不是完全但只是启发式保证,因此通过包括最大迭代次数来扩展收敛标准。

关于解决这个问题的策略,我会说随机分配一些数据点并不是很聪明,因为我们可能会影响群集质量,因为到目前分配的中心的距离很大或很小。对于这种情况的启发式方法是从最大的集群中选择最远点并移动空集群,然后执行此操作直到没有空集群。

答案 2 :(得分:1)

您不应该忽略空群集,而是替换它。 k-means是一种算法,只能为您提供局部最小值,空簇是您不需要的局部最小值。 即使用随机点替换一个点,你的程序也会收敛。请记住,在算法开始时,您可以随机选择初始K点。如果它可以收敛,为什么K-1会聚点与1个随机点不能?只需要几次迭代。

答案 3 :(得分:1)

“为您的数据选择好的k”指的是选择正确数量的群集的问题。由于k均值算法与预定数量的聚类中心一起工作,因此必须首先选择它们的数量。选择错误的数字可能会使数据点难以划分成簇,或者群集可能变得小而无意义。

我无法回答忽略空簇是否是个坏主意。如果这样做,您最终可能会得到比您在开始时定义的更少数量的聚类。这会让那些期望k-means以某种方式工作的人感到困惑,但这不一定是个坏主意。

如果重新定位任何空的集群中心,如果发生的次数有限,您的算法可能会收敛。但是,如果您不得不经常重新定位,则可能会出现算法未终止的情况。

答案 4 :(得分:0)

对于“为您的数据选择合适的k”,Andrew Ng举例说明了一家T恤衫制造商正在研究潜在的客户度量并进行k均值来决定是否要提供S / M / L(k = 3)或2XS / XS / S / M / L / XL / 2XL(k = 7)。有时,决策是由数据决定的(k = 7给出了空的簇),有时是出于商业考虑(只有三种尺寸时制造成本较低,或者市场营销表明客户希望有更多选择)。

答案 5 :(得分:0)

声明:k均值可能导致

below is the execution flow of k-means on given distribution

请考虑以上数据点的分布。

  • 重叠点表示它们之间的距离为del。 del趋于0,这意味着您可以假设足够小的畸变值,例如0.01。

  • 虚线框代表集群分配

  • 页脚中的传奇代表数字行

N = 6分

k = 3个簇(彩色)

最终簇= 2

蓝色簇是孤儿,最终是空的。

答案 6 :(得分:0)

如果在分配步骤中没有任何点分配给集群,则可以获得空集群。如果发生这种情况,则需要选择替换质心,否则SSE会比必要的大。

*选择对SSE贡献最大的观点 *从集群中选择具有最高SSE的点 *如果有几个空集群,则可以重复上述多次。

*** SSE =平方误差总和。

访问此网站https://chih-ling-hsu.github.io/2017/09/01/Clustering#