我只是在这里有点困惑。matlab中现有的kmeans函数是否有能力连续查找数据的kmeans?或者在线阶段是否意味着别的?
问问题
831 次
1 回答
2
不,这'onlinephase'
是在通常的“分配重新计算”迭代(在批处理模式下)之后作为第二步执行的。它保证在给定距离函数(也给定初始簇质心)的情况下找到局部最小解,方法是在簇之间移动点,直到距离的总和不能进一步减小。
不要将此与找到全局最小值混淆(我认为这是 NP 难题)
这在文档中有很好的解释:
算法
kmeans 使用两阶段迭代算法来最小化点到质心距离的总和,对所有 k 个集群求和:
第一阶段使用批量更新,其中每次迭代都包括一次将点重新分配到它们最近的集群质心,然后重新计算集群质心。此阶段有时不会收敛到局部最小值的解,即,将任何单个点移动到不同集群的数据分区会增加距离的总和。这对于小型数据集更有可能。批处理阶段很快,但可能仅将解决方案近似为第二阶段的起点。
第二阶段使用在线更新,如果这样做会减少距离总和,则单独重新分配点,并且在每次重新分配后重新计算聚类质心。第二阶段的每次迭代都包含一次通过所有点。第二阶段将收敛到一个局部最小值,尽管可能存在其他距离总和较小的局部最小值。寻找全局最小值的问题通常只能通过详尽(或聪明或幸运)的起点选择来解决,但使用具有随机起点的多个复制通常会导致全局最小值的解决方案。
于 2012-08-01T17:58:51.770 回答