【摘要】 什么情况下选择分层聚类,什么情况下选择K-mean聚类呢?两种模型的好坏如何比较?

K-mean聚类:K-means聚类算法其基本思想是算法首先随机的选择个对象,每个对象初始地代表了一个簇的平均值或中心。对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的簇,然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛通过迭代把数据对象划分到不同的簇中,使簇内部对象之间的相似度很大,而簇之间对象的相似度很小。

 

K-means聚类算法的主要优点

(1)算法简单,快速而且能有效处理大数据集具有收敛速度快,聚类效果好的优势;

(2)当样本数据是密集的,且类与类之间区别特别好的时候,该算法的效果较好;

(3)对处理大数据集,该算法是相对可伸缩和高效率的。

 

K-means聚类算法的主要缺点

(1)簇数k事先给定,这个值的选定是很难估计的;这就从一方面确定了聚类结果中聚类的数目,然而现实中聚类的数目往往难W确定,盲目确定k值,忽视数据集本身数据对象分布的特点将会导致聚类结果的不准确;

(2)K-means 算法对初始聚类中心的选取非常敏感。不同的初始中心会得到不同的结果使聚类不稳定,容易陷入不同的局部最优解

(3)在算法中常采用误差平方和准则函数作为聚类准则函数,考察误差平方和准则函数发现如果各类之间区别明显且数据分布稠密,则误差平方和准则函数比较有效但是如果各类的形状和大小差别很大,为使误差平方和值达到最小有可能出现将大的聚类分割的现象

由于初始中心选择的随机性和类别数的不确定性而存在很多局限性,不同的初始中心会得到不同的结果使聚类不稳定,容易陷入不同的局部最优解,同时不能适用于各种结构的数据,例如各区域尺寸、密度差距很大的数据或者区域边缘不明显的数据,很容易受到噪声的影响, 如果类簇形状很不规则,或者存在类簇相较于其他簇特别大或者特别小时,可能发生对很大的类簇进行分割的情况。使得聚类结果出现错误。

 

哪些情况下使用K-mean:当簇是密集的、球状或团状的,而簇与簇之间区别明显时,使用k-mean聚类效果很好;在应用欧式距离时,只能找到数据点分布的比较均匀的簇。另外需要注意的是 K均值算法仅在凸形簇结构上效果好。因为kmean算法较快,一般数据集大的时候,也常常使用到k-mean算法。

 

分层聚类(hierarchical clustering): 层次聚类算法按数据分层建立簇,形成一棵以簇为节点的树。如果按自底向上进行层次分解,则称为凝聚的层次聚类, 而按自顶向下的进行层次分解,则称为分裂法层次聚类。凝聚的层次聚类首先将每个对象作为一个簇,然后逐渐合并这些簇形成较大的簇,直到所有的对象都在同一个簇中,或者满足某个终止条件。分裂的层次聚类与之相反,它首先将所有的对象置于一个簇中,然后逐渐划分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件,例如达到了某个希望的簇数目,或两个最近的簇之间的距离超过了某个阈值。

 

分层聚类的优点

(1)距离和规则的相似度容易定义,限制少;

(2)不需要预先制定聚类数;

(3)在不同粒度水平上对数据进行探测,可以发现类的层次关系

 

分层聚类的缺点

(1)层次聚类算法要计算邻近度矩阵,所以基本层次聚类算法对时间和空间需求很大。

(2)层次聚类算法的困难在于合并或分裂点的选择。这样的决定是非常关键的,因为一旦一组对象被合并或者分裂,下一步的处理将在新生的簇上进行。己做的处理不能被撤销,聚类之间也不能交换对象。如果在某一步没有很好地选择合并或分裂的决定,可能会导致低质量的聚类结果。而且,这种聚类方法不具有很好的可伸缩性,

(3)另外由于层次聚类需要检查和估算大量的对象或簇才能决定簇的合并或分裂,所以这种方法的可扩展性较差。

 

哪些情况下使用分层聚类:

(1)因为层次聚类算法对时间和空间需求很大,所以层次适合于小型数据集的聚类。

(2)在不清楚数据集不清楚聚成几类的情况下,分层聚类可以在不同粒度水平上对数据进行探测,期望能发现类之间的层次关系。

 

作者:宝珠道人

来源:知乎