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