可伸缩聚类算法综述
第二十八次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇文章作为可伸缩聚类(Scalable Clustering)算法的开篇,简要介绍了几种针对大规模数据常用的减少时间和空间复杂度的方法。
许多聚类算法所需要的存储量(空间复杂度)都是非线性的,以层次聚类为例,其所需的存储量为,由于磁盘对随机访问速度的限制,这类算法并不适用于大规模的数据集,而且算法本身难以修改。另外,某些算法的计算量(时间复杂度)也是非线性的,因此在这里针对上述问题介绍几种常用的减少时间和空间复杂度的方法。
多维或空间存取方法
许多聚类技术(K-Means、DBSCAN等)需要找出最近的质心、点的最近邻或指定距离内的所有点。可以使用称为多维或空间存取方法的专门技术来更加有效的执行这些任务,至少对于低维数据可以这样做。这些技术,如k-d树或R*树,一般产生数据空间的层次划分,可以用来减少发现点的最近邻所需要的时间。注意,基于网格的聚类法也划分数据空间(如DENCLUE中对核密度估计的改进)。
邻近度界
另一种避免邻近度计算的方法是使用邻近度界。例如,使用欧几里得距离时,有可能使用三角不等式来避免许多距离的计算。例如,在传统K-Means的每一次循环迭代中,需要决定样本点应当留在当前的簇,还是应当移动到一个新的簇中。如果我们知道两个簇质心之间的距离和点到当前所属簇的(更新过的)质心的距离&#x