组合聚类
好的,我们开始讲解一个新的词条。组合聚类是组合数学与统计学、机器学习交叉领域的一个重要概念。它研究的核心问题是,如何利用组合结构来描述、分析和优化对一组对象进行“分组”或“聚类”的方法。
我将从最基本的概念开始,逐步深入其数学原理和高级主题。
第一步:基本概念与动机
首先,我们明确几个最基础的定义:
- 集合与对象:我们有一个有限的对象集合 \(X = \{x_1, x_2, \dots, x_n\}\)。这些对象可以是数据点、文档、基因、网络节点等任何我们想研究的东西。
- 相似性/相异性度量:为了分组,我们需要知道对象之间的“关系”。这通常用一个函数 \(d: X \times X \rightarrow \mathbb{R}_{\ge 0}\) 来表示,称为相异性度量(或距离)。\(d(x_i, x_j)\) 越小,表示 \(x_i\) 和 \(x_j\) 越“相似”或越“接近”。有时也使用相似性函数 \(s(x_i, x_j)\),数值越大表示越相似。
- 聚类:集合 \(X\) 的一个聚类(或划分) \(\mathcal{C} = \{C_1, C_2, \dots, C_k\}\) 满足:
- 每个簇 \(C_i\) 是 \(X\) 的非空子集。
- 所有簇两两不相交:\(C_i \cap C_j = \emptyset\) 对 \(i \neq j\)。
- 所有簇的并集等于 \(X\):\(\bigcup_{i=1}^k C_i = X\)。
- \(k\) 称为聚类的簇数,当 \(k=n\) 时,每个对象自成一簇(最细划分);当 \(k=1\) 时,所有对象在一簇(最粗划分)。
组合聚类的目标不是像传统统计学那样寻找某个特定模型下的“最优”聚类,而是从组合结构的角度来研究所有可能的聚类方式、聚类的性质、不同聚类之间的关系,以及如何系统地搜索和评估这些聚类。例如,给定 \(n\) 个对象,总共有 \(B_n\)(贝尔数)种不同的划分方式,这是一个组合爆炸的数字。组合聚关心这些划分构成的集合(称为划分格)的结构。
第二步:核心的组合结构——划分格
组合聚类的核心数学基础是划分格。这是理解聚类之间关系的框架。
- 偏序关系:我们可以在所有聚类(即 \(X\) 的所有划分)上定义一个偏序关系“细于”(记为 \(\le\) 或 \(\preceq\))。我们说聚类 \(\mathcal{C}\) 细于 聚类 \(\mathcal{D}\)(或 \(\mathcal{D}\) 粗于 \(\mathcal{C}\)),记作 \(\mathcal{C} \le \mathcal{D}\),当且仅当 \(\mathcal{C}\) 中的每一个簇都完全包含在 \(\mathcal{D}\) 的某一个簇中。
- 直观上,\(\mathcal{C}\) 比 \(\mathcal{D}\) 分得更细,\(\mathcal{D}\) 是由 \(\mathcal{C}\) 中的一些簇合并而成。
- 例如,对于 \(X=\{a,b,c,d\}\),聚类 \(\mathcal{C}=\{\{a\},\{b\},\{c,d\}\}\) 细于 \(\mathcal{D}=\{\{a,b\},\{c,d\}\}\),因为 \(\{a\}\) 和 \(\{b\}\) 被合并成了 \(\{a,b\}\)。
- 格结构:在这个偏序下,所有划分构成的集合形成一个格,称为划分格 \(\Pi_n\)。格是一种特殊的偏序集,其中任意两个元素都有唯一的最小上界(并,join)和最大下界(交,meet)。
- 并 \(\mathcal{C} \vee \mathcal{D}\):是同时细于 \(\mathcal{C}\) 和 \(\mathcal{D}\) 的“最粗”的聚类。它的簇是 \(\mathcal{C}\) 和 \(\mathcal{D}\) 的簇的连通分量构成的集合(将两个聚类视为两个等价关系,它们的并是传递闭包)。
- 交 \(\mathcal{C} \wedge \mathcal{D}\):是同时粗于 \(\mathcal{C}\) 和 \(\mathcal{D}\) 的“最细”的聚类。它的簇是 \(\mathcal{C}\) 的簇与 \(\mathcal{D}\) 的簇的所有非空交集。
划分格 \(\Pi_n\) 是一个非常丰富的组合对象。它的哈斯图(表示偏序关系的图)是熟知的。\(\Pi_n\) 的元素个数是贝尔数 \(B_n\)。研究其秩、Möbius函数、子格结构等是组合聚类的基础课题。
第三步:从组合结构到聚类算法与准则
有了划分格这个“地图”,我们可以形式化地讨论聚类算法和评估标准。
-
聚类准则函数:为了在众多划分中做选择,我们需要一个评价标准。这通常是一个从划分格到实数的函数 \(J: \Pi_n \rightarrow \mathbb{R}\),称为准则函数或目标函数。常见的例子有:
- 类内紧致性:最小化每个簇内对象间距离的总和或最大值(如K-means的目标:最小化类内平方误差和,SSE)。
- 类间分离性:最大化不同簇对象间距离的总和或最小值。
- 谱聚类目标:最大化图拉普拉斯矩阵的某个特征值或特征向量相关的切割比。
- 模块度(社区发现):衡量聚类结果相对于随机连接的“显著性”。
-
优化视角:寻找“最好”的聚类,就是在划分格 \(\Pi_n\) 上优化准则函数 \(J\)。这本质上是一个组合优化问题,通常是NP难的。组合聚类的任务之一就是分析这个优化问题的结构。
- 例如,可以研究准则函数在划分格上的单调性、超模性/次模性。如果函数是次模的,虽然全局最优解难求,但贪心算法能保证找到近似解。
-
层次聚类与树状图:许多聚类算法(如单连接、全连接、质心法)产生一个层次聚类。这对应于划分格中的一条链:从最细划分(n个簇)开始,通过逐步合并簇,到达最粗划分(1个簇)。这条链可以表示为一棵树状图。组合聚类研究这些合并策略(如基于最小距离的合并)在划分格上对应的路径性质。
第四步:稳定性、一致性理论与组合模型
这是更理论化的方向,探讨聚类的“存在性”和“唯一性”条件。
-
聚类公理:Kleinberg提出了聚类应该满足的三个基本性质:尺度不变性、丰富性、一致性。他证明了没有任何聚类函数能同时满足这三条。这引发了关于“不可能定理”和合理公理体系的讨论,这是组合聚类在基础理论上的探索。
-
稳定性:一个核心问题是,对数据(距离函数 \(d\) )的微小扰动,聚类结果是否会发生剧烈变化?组合上,这可以表述为:如果两个距离函数 \(d\) 和 \(d'\) 很接近(比如 \(\|d - d'\|_{\infty}\) 很小),那么它们在某个准则下的最优(或近似最优)聚类在划分格中是否也接近?这涉及到聚类解空间的连续性。
-
一致性:如果一个距离函数 \(d\) 在某个聚类 \(\mathcal{C}\) 下,类内距离都减小,类间距离都增大,那么 \(\mathcal{C}\) 在 \(d\) 下应该仍然是“好”的聚类。这个性质是否与某些优化算法(如单连接)的确定性相容?这也是组合性质的研究。
第五步:高级主题与前沿交叉
-
聚类集成与共识聚类:如何将多个不同的聚类结果(可能来自不同算法或不同数据子集)组合成一个更鲁棒的共识聚类?这在组合上对应于在划分格上寻找一个“中心”划分,使其到所有给定划分的“总距离”最小。这就需要定义划分之间的距离,如兰德距离、调整兰德指数、变异信息等,并在划分格对应的度量空间中进行优化。
-
最优聚类数的组合判定:如何确定“自然”的簇数 \(k\)?许多方法(如轮廓系数、间隙统计量)本质上是分析准则函数 \(J(k)\) 随 \(k\) 变化的模式。组合上,这可以看作在划分格的分层结构(按簇数 \(k\) 分层)上寻找一个“拐点”或稳定点。
-
基于超图的聚类:当对象间的关系不仅仅是两两的,还涉及多元关系时,可以用超图建模,其中超边包含多个顶点。聚类就变成了寻找超图的“社区”或“划分”,使得超边尽可能多地保留在簇内部。这引向了超图划分、超图拉普拉斯等组合与代数工具。
-
持久同调与拓扑数据分析:这是从代数拓扑借用的强大工具。通过考虑一个随着“距离阈值” \(\epsilon\) 变化的嵌套单复形序列(如Vietoris-Rips复形),其同调群的“生”与“灭”被记录下来,形成持续性条形码。条形码中长久的“条”就暗示了数据中潜在的聚类或空洞结构。这为聚类提供了一种基于拓扑“形状”稳定性的、无需预先指定簇数的组合方法。
总结来说,组合聚类从最基础的集合划分出发,通过构建和分析划分格这一核心组合结构,为理解和形式化所有的聚类任务提供了统一的数学框架。它将聚类算法视为在格上的搜索或优化过程,用组合工具(如格论、次模函数、距离度量)来研究聚类准则、算法性质、稳定性、共识等问题,并与拓扑、代数等高级工具结合,形成了连接离散数学与数据科学的重要桥梁。