2011-07-29 50 views

回答

12

这个想法是迭代地将你的云点分成两部分。换句话说,您将构建一个随机二叉树,其中每个分裂(具有两个子项的节点)对应于将云中的点分割为2.

您从点云开始。

  • 计算其矩心(重心)瓦特

  • 选择云

  • 的点中随机CL的点相比瓦特时构建点Cr作为CL的对称点(分段CL-> w是相同W-> CR)

  • 独立的两个云点,那些最接近为Cr属于subcloud R,和那些最接近CL属于subcloud L

  • 重申,subclouds R和L

注:

可以丢弃随机点一旦你使用它们。但是,保持所有子模块的质心。

当你的子云包含正好一个点时停止。

如果您想要k个群集,只需取k个质心,使其包含初始云的所有点。如果你愿意,你可以做更多更复杂的事情(最小化云的变化等)。假设你想要4个集群(为了方便起见,两个幂)然后你只需要将你的云切成两半,然后切割每个集群在两个subclouds。如果你想要8个簇,那么再次将这些子云分成两份。再次为16个集群。

如果你想K个K的集群不是2的幂(比方说24),那么看看最接近的二个幂。现在是16个。你还缺少8个集群。每个“level-16-cluster”是“level-16-subcloud”的质心。你要做的是取8个“16级集群”(例如随机),并将它们分别替换为两个“子级”“32级集群”。 (这两个孩子的“32级集群”对应于两个“级别-32-subcloud”,加起来就是父级“level-16-subcloud”)

+0

感谢您的回答,现在更加清晰。但是我有两件事我不明白 - “在云的点之间随机选择一个点” - 意味着我需要选择一个随机向量? 第二件事 - 我不明白我需要为K群集做什么? – Nir

+0

那么,你有一堆你想要聚类的点,对吧?在云中选择一个点意味着......在云中选择一个点=)我不完全明白你的意思是随机矢量......在云中选择点,而不是在整个空间中随机选择。我已经更新了K簇的帖子 – Fezvez

+0

我猜矢量mean point =]但是如果我的随机选择不好,并导致不均匀分裂簇呢?我虽然在做:我会选择拥有最大SSE的集群 - 你认为什么? – Nir