一、原型聚类和层次聚类
原型聚类也称基于原型的聚类(prototype-based clustering),这类算法假设聚类结构能够通过一组原型刻画,先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示、不同的求解方式,产生不同的算法。常用的原型聚类算法有k-means算法。
层次聚类(hierarchical clustering)是一种基于原型的聚类算法,试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用”自底向上”的聚合策略,也可以采用”自顶向下”的分拆策略。层次聚类算法的优势在于,可以通过绘制树状图(dendrogram),帮助我们使用可视化的方式来解释聚类结果。层次聚类的另一个优点就是,它不需要事先指定簇的数量。
二、凝聚层次聚类
层次聚类可以分为凝聚(agglomerative)层次聚类和分裂(divsive)层次聚类。分裂层次聚类采用的就是”自顶而下”的思想,先将所有的样本都看作是同一个簇,然后通过迭代将簇划分为更小的簇,直到每个簇中只有一个样本为止。凝聚层次聚类采用的是”自底向上”的思想,先将每一个样本都看成是一个不同的簇,通过重复将最近的一对簇进行合并,直到最后所有的样本都属于同一个簇为止。
在凝聚层次聚类中,判定簇间距离的两个标准方法就是单连接(single linkage)和全连接(complete linkage)。单连接,是计算每一对簇中最相似两个样本的距离,并合并距离最近的两个样本所属簇。全连接,通过比较找到分布于两个簇中最不相似的样本(距离最远),从而来完成簇的合并。