对角矩阵(即距离/相似度矩阵)是层次聚类(尤其是凝聚式层次聚类)的核心输入,其计算过程本质是基于距离矩阵不断合并簇、更新矩阵的迭代过程,具体步骤如下:
一、初始化距离矩阵(对角矩阵)
首先对所有N个数据点计算两两之间的距离,构建N×N的对称距离矩阵(对角矩阵,对角线元素为0,代表自身与自身的距离为0)。
- 常用距离度量:欧氏距离、曼哈顿距离等,层次聚类最常用欧氏距离。
- 示例:若有A-G共7个数据点,先计算所有点对的距离,得到对称的距离矩阵,对角线为0,非对角线元素为对应两点的距离。
二、迭代合并与矩阵更新
凝聚式层次聚类的核心迭代逻辑如下,每一步都会更新距离矩阵:
1. 寻找最近簇:在当前的对角矩阵中,找到非对角线距离最小的两个簇(初始时每个数据点就是一个簇)。
- 例如初始矩阵中B和C的距离最小(1.00),则优先合并B、C为一个新簇(B,C)。
2. 合并簇:将距离最近的两个簇合并为一个新簇,此时总簇数减1。
3. 更新距离矩阵:删除原两个簇对应的行和列,新增一行一列代表新簇与其他所有簇的距离,重新计算新簇到其余簇的距离,得到新的对角矩阵。
计算两个簇之间距离(即新行/列的数值)有三种常用标准:
- 单连接(Single Linkage):取两个簇中所有点对的最小距离作为簇间距离,易受极端值影响,可能出现“链式效应”。
- 完全连接(Complete Linkage):取两个簇中所有点对的最大距离作为簇间距离,限制较强,可能忽略整体相近的簇。
- 平均连接(Average Linkage):取两个簇中所有点对的距离均值作为簇间距离,结果更稳定,计算量相对更大。
- 示例:合并(B,C)后,计算新簇(B,C)到A的距离,需取B到A、C到A的距离均值作为簇间距离。
三、终止与结果输出
重复上述“找最近簇-合并-更新矩阵”的步骤,直到满足终止条件:
- 可选终止条件:所有点合并为一个大簇、达到预设的簇数量、最近簇的距离超过设定阈值。
- 最终可通过树状图(dendrogram)可视化整个合并过程,直观展示数据的层次结构,也可通过切割树状图得到指定数量的聚类结果。
补充说明
如果是分裂式层次聚类(自顶向下),则初始将所有点放在一个大簇中,每次分裂时计算簇内点的距离矩阵,将最不相似的子簇拆分,逐步更新矩阵直到每个点自成一类,该方法实际应用较少。