Fast and Provably Good Seedings for k-means
本文主要介绍关于k-means++改进相关的两篇文章:
1. Fast and Provably Good Seedings for k-means
2. Approximate K-menas++ in Sublinear Time
k-means++ 相对于 k-menas的算法改进主要在于聚类中心的初始化阶段。
如图所示,左边是原始k-means 算法的初始化阶段,原始算随机选择 k 个点作为聚类中心。这种算法一个潜在弊端是选择的初始节点可能落在同一个聚类里面,这是我们不希望看到的。理想的初始化结果是,每个聚类里都有一个初始化的种子节点。
k-means++ 算法就是为了改变原始 k-means 算法的这种缺点。这种算法的核心思想是选取的 k 个种子节点应该尽可能的相互远,如上图右所示。这种想法直觉上比较好(有相应的证明)。
实现上述思想的过程如下:
这个过程称为
这种算法的时间复杂度为
具体做法就是使用MCMC采样来近似
k-MC^2 算法有一个缺点,如下:
由于在MCMC过程中,算法使用的提案分布 q(x) 为均匀分布,这导致了潜在的缺点,就是那些样本数较小的聚类中可能不会被选中为候选节点。
为了改进这个缺点,作者又提出了 AFK-MC^2 。这个算法较k-MC^2 的改进在于改变了提案分布 q(x) ,将原来的均匀分布改变为:
这样修改给人的感觉就是给原来的算法加入了一些先验分布信息,从而在选择候选节点时更为准确。从而整个算法的鲁棒性更好。