以共识矩阵为相似矩阵的层次聚类

数据挖掘 机器学习 聚类 相似
2022-02-25 03:29:00

我正在关注这篇关于 Python 编程中的共识聚类的文章。在第 7 页,作者指出“共识矩阵很自然地可以用作可视化工具来帮助评估集群的组成和数量。特别是,如果我们将颜色渐变与 0-1 范围的实数相关联,那么白色对应 0,深红色对应 1,如果我们假设矩阵的排列使得属于同一簇的项目彼此相邻(使用相同的项目顺序来索引矩阵),对应于完美共识的矩阵将显示为颜色编码的热图,其特征是在白色背景上沿对角线的红色块。” ,见下图。

在此处输入图像描述

共识矩阵本身是一个 (N × N) 矩阵,它为每对项目存储两个项目聚集在一起的聚类运行的比例。共识矩阵是通过对每个扰动数据集的连接矩阵取平均值来获得的。为了从共识矩阵到上面的可视化,作者说如下:“我们可以使用共识矩阵本身来确定最优的项目顺序。特别是,如果我们以共识矩阵作为相似度矩阵进行层次聚类,则诱导树状图的叶子将排列,以使具有最高共识指数的项目相邻“

经过 10 次采样和对包含 500 个项目的数据集进行聚类后,我得到了我的共识矩阵。共识矩阵如下所示:

在此处输入图像描述

其中 1 或 0 的值表示对 10 次采样的聚类结果完全一致/一致。但是,我无法理解我们如何最终得到上面的可视化。我有几个问题:

  1. 作者说我们使用共识矩阵作为相似度矩阵,但是层次聚类不需要距离矩阵吗?例如,在AgglomerativeClustering的 Python sklearn 实现中,它说:“如果“预先计算”,则需要距离矩阵(而不是相似度矩阵)作为拟合方法的输入。
  2. 作者的意思是“再次强调相同的项目顺序用于索引矩阵的行和列”是什么意思?
1个回答

为了解决您的两个问题:

  1. 凝聚聚类需要距离度量,但您可以从您的共识相似性矩阵中计算它。最基本的方法是这样做:

    distance_matrix = 1 / similarity matrix

    虽然,他们可能会在论文中明确说明他们用于这种转换的函数。

  2. 我认为这只是说矩阵是对称的。热图的 x 轴为 ,热图n=0,1,2,3,4的 y 轴为n=0,1,2,3,4这与相关矩阵的过程相同只要保持你的矩阵不变,它就会保持这个顺序。