层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构。AggregativeClustering是一种常用的层次聚类算法。
其原理是:最初将每个对象看成一个簇,然后将这些簇根据某种规则被一步步合并,就这样不断合并直到达到预设的簇类个数。这里的关键在于:如何计算聚类簇之间的距离?
由于每个簇就是一个集合,因此需要给出集合之间的距离。给定聚类簇
Ci,Cj
,有如下三种距离:
- 最小距离:
dmin(Ci,Cj)=minx⃗ i∈Ci,x⃗ j∈Cjdistance(x⃗ i,x⃗ j)它是两个簇的样本对之间距离的最小值。
- 最大距离:
dmax(Ci,Cj)=maxx⃗ i∈Ci,x⃗ j∈Cjdistance(x⃗ i,x⃗ j)它是两个簇的样本对之间距离的最大值。
- 平均距离:
davg(Ci,Cj)=1|Ci||Cj|∑x⃗ i∈Ci∑x⃗ j∈Cjdistance(x⃗ i,x⃗ j)它是两个簇的样本对之间距离的平均值。
当该算法的聚类簇采用 dmin 时,称为单链接single-linkage算法,当该算法的聚类簇采用 dmax 时,称为单链接complete-linkage算法,当该算法的聚类簇采用 davg 时,称为单链接average-linkage算法。
下面给出算法:
-
输入:
- 数据集 D= { x⃗ 1,x⃗ 2,...,x⃗ N }
- 聚类簇距离度量函数
- 聚类簇数量 K
-
输出:簇划分