Canopy算法相对于K-means不用事先指定K值,即是算法不用受到初始聚类中心的影响。
Canopy算法执行步骤:

  1. 所有数据放入List集合中,并确定距离阈值T1、T2;并且T1>T2
  2. 遍历集合,随机选取一点判断该点与所有Canopy的距离;如果此时没有一个Canopy,则把该点作为第一个Canopy;如果距离小于T2则直接从集合中删除;如果距离大于T1直接产生一个新的Canopy。
  3. 直到集合中的数据为空

Canopy由于使用粗精度计算距离且聚类速度快,因此一般先采用Canopy聚类,然后再使用K-means。在使用K-means时,Canopy的个数可以作为K的个数,Canopy的聚类中心可以作为初始的聚类中心;在每个Canopy中使用-means,减少了直接使用k-means计算时间的复杂度。
对于Canopy的T1和T2可以使用交叉验证和先验进行选取。

参考文献

  1. Canopy聚类算法过程
  2. Canopy聚类算法
  3. 划分方法聚类(三) Canopy+K-MEANS 算法解析
  4. 学习笔记——Canopy + K-means的聚类算法
  5. Canopy聚类算法分析