聚类算法分析及其性能比较

1 k-means 算法
k-means(k-平均)算法是一种常用的基于划分的聚类算法。k-means 算法是以k 为参数,把n 个对象分成k 个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means的处理过程为:首先随机选择k 个对象作为初始的k 个簇的质心;然后将其余对象根据其与各个簇的质心的距离分配到最近的簇;最后重新计算各个簇的质心。不断重复此过程,直到目标函数最小为止。
k-means 尝试找出使平方误差函数值最小的k 个划分。当数据分布较均匀,且簇与簇之间区别明显时,它的效果较好。面对大规模数据集,该算法是相对可扩展的,并且具有较高的效率。算法的时间复杂度为O (nkt),其中,n 为数据集中对象的数目,k 为期望得到的簇的数目,t 为迭代的次数。通常情况下,算法会终止于局部最优解。但是,k-means 算法只有在簇的平均值被定义的情况下才能使用,这可能不适用于某些应用,例如涉及有非数值属性的数据。其次,这种算法要求事先给出要生成的簇的数目k,显然这对用户提出了过高的要求,并且由于算法的初始聚类中心是随机选择的,而不同的初始中心对聚类结果有很大的影响。另外,k-means 算法不适用于发现非凸面形状的簇,或者大小差别很大的簇,而且它对于噪音和孤立点数据是敏感的。
2 k-medoids 算法
k-medoids 算法是k-means 算法的一个改进。在k-means 算法中,一个异常数据的取值可能会很大,从而会影响对数据分布的估计,因此在k-medoids 算法中设想利用一个medoid 作为一个参考点来代替k-means 算法中各簇的均值。k-medoids 算法的基本思想是首先为每个簇找到一个代表对象从而确定k个簇,如果替换一个簇代表能够改善所获得划分质量的话,那么就可以用新的代表对象替换老的代表对象。为了判定一个非参照点Orandom 是否是当前参照点Oj 的一个好的替代,对于每一个非参照点p,考虑以下四种情况:
p 当前隶属于参照点Oj。若Oj 被Orandom所替换作为参照点,且p 距离一个Oi最近,i≠j,则p 被重新分配给Oi;
p 当前隶属于参照点Oj。若Oj 被Orandom所替换作为参照点,且p 距离Orandom最近,则p 被重新分配给Orandom;
p 当前隶属于参照点Oi。i≠j。若Oj 被Orandom 所替换作为参照点,且p 距离Oi 最近,则p 的隶属不发生变化;
p 当前隶属于参照点Oi。i≠j。若Oj 被Orandom 所替换作为参照点,且p 距离Orandom最近,则p 被重新分配给Orandom。
3 最大最小距离算法
最大最小距离算法是一种在模式识别领域常用的方法,基本思想是取距离尽可能远的对象作为簇中心对数据进行聚类。最大最小距离算法实现简单,处理大数据集的能力较强,但是算法对噪音数据敏感,在存在噪音数据的情况下,聚类中心可能偏移真正的类别中心较远。同时,该算法的输出结果也依赖于常数m 的选择,选择不同的m 得到的聚类结果也不同。由于算法中的距离也是采用欧氏距离,所以也只适合发现球形的簇
4 CURE 算法
CURE 算法是一个自底向上的层次聚类算法,它把层次算法和划分算法结合起来,克服了倾向于发现球形簇的不足。CURE 算法在计算簇间的距离时,既不是用一个质心,也不是用所有的点,而是用一组点,也就是说,它是用多个对象而不是一个对象来代表一个簇。实际上,CURE 算法是从一个簇中选择一定数目散布较好的点来代表该簇,这些点用于确定该簇的形状和大小。然后把它们按照一定的因子向簇的质心收缩。通过调整收缩因子的值,就可以识别不同类型的聚类。使用这些点收缩之后的位置来代表簇,找出最近的两个簇,然后把它们进行合并。重复上述过程,直到得到期望得到的簇的数目。在大数据集的聚类问题上,CURE 采取随机采样的方法。随机采样是在精度与效率之间的折衷,通常情况下,中等规模的采样就能较好地保证聚类的质量。为加速簇的收缩速度,CURE 算法首先对样本数据进行划分,并在每个划分块内局部聚类,去除孤立点后,再对每个划分块中局部的簇进行聚类生成最后的簇。
CURE 算法克服了利用单个代表点或基于质心的方法的缺点,可以发现非球形及大小差异较大的簇。簇或离散点的收缩降低了CURE 算法对孤立点的敏感性。
5 STING 算法
STIN 算法是一种基于网格的多分辨率聚类方法,它将空间区域划分为若干矩形网格单元。针对不同级别的分辨率,通常存在多个级别的矩形单元,这些单元形成了一个层次结构,高层的每个单元被划分为多个低一层的单元。关于每个网格单元属性的统计信息,如平均值、最大值、最小值等,被预先计算和存储。
高层单元的统计参数可以很容易地从低层单元的统计参数中计算得到。这些统计参数包括属性无关的参数、计数count 和属性相关的参数、均值m、标准方差s、最小值min、最大值max 以及该单元中属性值遵循的分布(distribution )类型,例如正态分布、平均分布、指数分布等。当数据被装载进数据库时,底层单元的参数count、m、min 和max 直接进行计算。

6 几种常用的聚类算法的比较总结

 

posted on 2012-07-19 16:34  bigshuai  阅读(1871)  评论(0编辑  收藏  举报