聚类算法(二)--Kmeans++、elkan K-Means、Mini Batch K-Means、Sequential Leader Clustering

上文原始Kmeans提到,由于Kmeans使用启发式迭代,所以当初始点不当时,导致得不到全局最优。

Kmeans++

这个算法思想也很简单,与原始Kmeans唯一不同的是选择初始点的方式。

如图

假设,我们的样本如上图分布,准备选择3个初始点,即k=3。

第一,我随机选择了1作为初始点,求所有样本点与已选择的聚类中心中最近聚类中心的距离(现在只有点1),求出其他所有点与点1的距离D(xi),选择最大的。

第二,我们现在选到了点9作为初始点(与1距离最远),然后所有样本点与已选择的聚类中心中最近聚类中心的距离,对于点2,3,4,5,6应求到1的距离,7,8求到9的距离,取最大的D(x),

应该是点1到点4最大,那么点4倍被选为初始点。

那么一共选出了点1,9,4作为初始点。

 可以重复一、二步骤,选出多个初始点。

elkan K-Means

Kmeans一文我们知道,一次质心的更新需要将所有样本点到质心的距离都算一次,比较耗时

elkan K-Means的思想是

针对一个样本点,两个质心,如果提前知道质心之间的距离D(a1,a2),那么

当2D(x,a1)≤D(a1,a2), 必有D(x,a1)≤D(x,a2),不必计算D(x,a2)

这一条不太明白,原理是三角形任意一边大于等于其他两边之差,怎么简化计算,不得而知

大样本Mini Batch K-Means

思想更简单,对大样本进行无放回随机抽样,抽取多次保证准确性。 

Sequential Leader Clustering

这种方法不用预先设定K值,不需要迭代,只需将数据过一遍。需要设定一个阈值T。

用下图说明该思想

第一,任意一个数据点(假如是点1)作为质心,依次算出其他2-9到质心1的距离d,若d<T(阈值),认为这两个点属于一个簇

第二,若某样本点与现有质心的距离大于阈值T,则将这个点作为另一个质心。

重复上述两步

缺点:阈值的设定没有依据。

参考https://www.cnblogs.com/pinard/p/6164214.html

https://www.bilibili.com/video/av23933161/?p=30

Valar morghulis
原文地址:https://www.cnblogs.com/super-yb/p/10862831.html