我在这里有点困惑。 matlab中现有的kmeans函数是否能够连续查找数据的kmeans?或者,onlinephase是否意味着别的什么?
答案 0 :(得分:2)
不,'onlinephase'
是在通常的“assign-recompute”迭代之后的第二步(在批处理模式下)。它保证在给定距离函数(也给出初始聚类质心)的情况下,通过在聚类之间移动点来找到局部最小解,直到总距离不能进一步减小。
不要将此与发现全局最小值(我认为是NP难问题)相混淆
文档中对此进行了详细解释:
算法
kmeans使用两阶段迭代算法来最小化 点到质心的距离,在所有k个簇上求和:
第一阶段使用批量更新,其中每次迭代都包括将点重新分配到最近的集群质心,一次性完成, 然后重新计算聚类质心。这个阶段 偶尔不会收敛到局部最小值的解决方案, 也就是说,将任何一个点移动到a的数据分区 不同的群集增加了总距离。这是更多 可能是小数据集。批处理阶段很快,但可能 只是将解决方案作为第二阶段的起点。
第二阶段使用在线更新,如果这样做会减少距离总和,则会单独重新分配点数 每次重新分配后重新计算质心。每次迭代 在第二阶段包括一次通过所有点。 第二阶段将收敛到局部最小值,尽管可能存在 是总距离较低的其他局部最小值。问题 找到全局最小值只能通过一般来解决 详尽的(或聪明的,或幸运的)选择起点,但使用 具有随机起始点的几个重复通常导致a 解决方案是全球最低限度。