1 K-means
,该算法是相对可伸缩的和高效率的,因为它的复杂度是O(tkn),其中n是数据的总数,k是聚类的个数,t是算法循环的次数,通常 有 k,t<<n,因此算法的效率很高。其缺点是:需要用户输入最终结果的聚类个数k,而判断一个未知数据集的划分个数通常是很困难的,k个初始 点的选择对最终的聚类结果影响很大。K一MeanS方法不适合发现非凸形状的并行层次聚类技术研究类,或者大小差别很大的类。而且,它对于“噪声”和孤立 点数据是敏感的,少量的该类数据能够对平均值产生极大的影响。
K一MeanS算法有很多变种。他们可能在初始k个平均值 的选择、相异度的计算和计算聚类平均值的策略上有所不同。K一MeanS算法也可和其他聚类算法相结合,达到取得更好聚类效果的目的。例如,可先采用层次 的凝聚算法决定结果类的数目,并找到一个初始的聚类,然后用迭代重定位来改进聚类结果。
2 层次化聚类:
层次化聚类可以分为agglomerative和divisive层次聚类;
2.1
凝聚的层次聚类:凝聚的层次聚类是自底向上的策略。首先将每个对象作为一个类,然后合并这些原子类为越来越大的类,直到所有的对象都在一个类中,或者某个终结条件被满足。分裂的层次聚类是种自顶向下的策略与凝聚的层次聚类相反,它首先将所有对象置于一个类中,然后逐渐细分为越来越小的类,直到每个对象自成一类,或者达到了某个终结条件,例如达到了某个希望的类数目,或者两个最近的类之间的距离超过了某个闽值。绝大多数聚类方法属于这一类,它们只是在簇间相似度的定义_}二有所不同。
2.2
分裂的层次聚类:这种自顶向下的策略与凝聚的层次聚类相反,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件,例如达到了某个希望的簇数目,或者两个最近的簇之间的距离超过了某个闭值。
层次化聚类方法尽管简单,但如何恰当地选择合并或分裂点,是个很困难的工作,这样的选择是非常关键的,因为一旦一组对象被合并或者分裂,下一步的处理将在新生成的簇上进行。已做的处理不能被撤消,聚类之间也不能交换对象。如果在某一步没有很好的选择合并或者分裂的决定,可能会导致低质量的聚类结果。而且,这种聚类方法不具有很好的可伸缩性,因为合并或者分裂的决定需要检查和估算大量的对象或簇。