K-Means||算法
K-Means||
算法是为了解决K-Means++
算法缺点而产生的一种算法;
主要思路是改变每次遍历时候的取样规则,并非按照K-Means++
算法每次遍历只获取一个样本,而是每次获取K个样本,重复该取样操作O(logn)次(n是样本的个数),然后再将这些抽样出来的样本聚类出K个点,最后使用这K个点作为K-Means算法的初始聚簇中心点。实践证明:一般5次重复采用就可以保证一个比较好的聚簇中心点。
整体步骤
- 在N个样本中抽K个样本,一共抽log(n)次,形成一个新的样本集,一共有K*log(n)个数据。
- 在新数据集中使用
K-Means
算法,找到K个聚簇中心。 - 把这K个聚簇中心放到最初的样本集中,作为初始聚簇中心。
- 原数据集根据上述初始聚簇中心,再用
K-Means
算法计算出最终的聚簇。
伪代码
采用了一个采样因子l,第1步随机初始化一个中心点,第2-6步计算出满足概率条件的多个候选中心点C,候选中心点的个数可能大于k个,所以通过第7-8步来处理。第7步给C中所有点赋予一个权重值
k-means
算法聚类出这些候选点的k个聚类中心。