Nir*_*Nir 11 algorithm cluster-analysis k-means
我被要求写一个二等分k-means算法,但我不理解算法.我知道k-means算法.
你能解释一下算法,但不能用学术语言解释
谢谢.
Fez*_*vez 15
这个想法是迭代地将你的云点分成两部分.换句话说,您构建一个随机二叉树,其中每个拆分(具有两个子节点的节点)对应于在2中拆分云的点.
你从一堆积分开始.
计算它的质心(重心)w
在云的点之间随机选择一个点cL
与w相比,构造点cR作为cL的对称点(段cL-> w与w-> cR相同)
将云的点分成两部分,最接近cR的点属于子云R,最接近cL的点属于子云L
重申subclouds R和L.
备注:
您可以在使用它们后丢弃随机点.但是,保留所有子模的质心.
当你的subcloud只包含一个点时停止.
如果你想要k个簇,只需取k个质心,使它们包含初始云的所有点.如果你想要的话,你可以做更多精心设计的东西(最小化云的变化等等)假设你想要4个集群(为了方便你的功率为2)那么你只需要将云切成两半,然后每个二分云.如果你想要8个簇,那么再将这些子云切成两次.再次为16个集群.
如果你想要K群的K不是2的幂(比方说24),那么看看最接近的2的次幂.这是16.你仍然缺少8个集群.每个"16级集群"都是"16级子云"的质心.你要做的是采用8"16级集群"(例如随机)并用两个"子""级别-32-集群"替换它们.(这两个子级"32级集群"对应于两个"级别-32-subclouds",它们加起来为父级"level-16-subcloud")