try ai
科普
编辑
分享
反馈
  • 寻找最佳聚类数

寻找最佳聚类数

SciencePedia玻尔百科
核心要点
  • 简单的启发式方法,如肘部法则,可能会产生误导,因为它们常常在随机、无结构的数据中也暗示存在聚类结构。
  • 稳健的方法,如差距统计量和轮廓系数,通过与零假设进行比较或平衡簇的内聚性和分离度,提供了更可靠的结果。
  • 最小描述长度(MDL)原则通过寻求能够最有效地压缩数据的聚类数,重新定义了这个问题。
  • 最佳“k”值的最终检验是其稳定性,这可以通过自举法和交叉验证等统计技术进行严格评估。

引言

聚类是数据分析中的一项基本任务,它让我们能够揭示隐藏的结构并将相似的对象分组。然而,在任何算法发挥其魔力之前,必须回答一个关键问题:我们应该寻找多少个组,或者说簇?这个“最佳”聚类数(通常表示为“k”)的选择并非微不足道的一步,而是深刻影响最终结果的决定性一步。不存在唯一、普遍正确的答案,这给分析师和研究人员带来了重大挑战。如果没有一种有原则的方法,发现的簇可能是任意的或具有误导性的。

本文旨在填补这一知识空白,引导读者了解用于确定最佳聚类数的各种方法。接下来的章节将为您提供一个侦探的工具箱,用以探查数据的内在结构。在“原理与机制”一章中,我们将深入探讨从直观的肘部法则及其陷阱,到更具统计严谨性的方法(如差距统计量、轮廓系数和最小描述长度原则)背后的思想。我们还将探讨稳定性分析的至关重要性。随后,“应用与跨学科联系”一章将展示这些方法在现实世界中的应用,揭示城市中隐藏的结构,破译我们 DNA 中的生命语言,甚至探讨算法决策中价值与公平的关键问题。

原理与机制

想象一下,你是一位刚刚发现一个新群岛的探险家。你的首要任务是绘制一张地图。但那里到底有多少个岛屿呢?那两块靠得很近的陆地是同一个大岛由狭窄地峡相连的一部分,还是两个独立的岛屿?决定岛屿的“最佳”数量,与在数据集中寻找最佳聚类数的挑战并无太大区别。没有一个神圣的存在可以交给你唯一、普遍正确的答案。相反,我们必须成为侦探,运用各种巧妙的工具和原则来探查我们数据的结构,并得出一个合乎情理的结论。本章就是一次进入数据探险家工具箱的远征,揭示我们做出这一基本决定背后美妙的思想。

肘部的诱惑:初见端倪

也许最直观的起点是这样一个想法:好的聚类是“紧凑”的。如果我们将数据点分组,我们希望每个组内的点都尽可能靠近其组的中心。我们可以用一个名为​​簇内平方和(WCSS)​​的度量来量化这种“紧凑性”。对于每个簇,我们计算每个点到该簇中心(其质心)的平方距离,然后将所有簇的这些值相加。较小的 WCSS 意味着更紧凑、更密集的簇。

那么,我们是否应该只追求尽可能小的 WCSS 呢?别那么快。再想象一下我们的群岛。如果我们说只有一个岛(k=1k=1k=1),所有的陆地都被归为一组,“平均”位置在海洋中的某个地方,离大部分陆地都很远。WCSS 将会非常大。如果我们增加到两个岛(k=2k=2k=2),WCSS 将急剧下降。随着我们增加提议的岛屿数量 kkk,WCSS 总是会减小。在最极端的情况下,如果我们说每个数据点都是它自己的一个簇(k=nk=nk=n,其中 nnn 是点的总数),那么每个点都是它自己的中心,到中心的距离为零,WCSS 也为零!

这揭示了一种权衡。增加 kkk 会给我们带来更好的“拟合”(更低的 WCSS),但也会给我们一个更复杂且可能毫无意义的模型。我们真正寻找的是收益递减的点。我们寻找这样一个 kkk 值,在此之后增加另一个簇并不能带来太多改善。

如果我们为每个 kkk 值绘制 WCSS,该图通常看起来像一条向下倾斜的手臂。起初,WCSS 急剧下降,像上臂。然后,它开始趋于平缓,像前臂。这条曲线的“肘部”就是那个最佳点,即下降速率急剧变化的点。这种流行的启发式方法被称为​​肘部法则​​。例如,在分析一组未定性的蛋白质时,绘制 WCSS 与提议的蛋白质家族数量(kkk)的关系图可以揭示一个明显的肘部,这表明数据中存在一个自然的分组数量。一种更正式地确定这个肘部的方法是找到曲线上离连接第一个点和最后一个点的直线最远的点——这种方法被称为“弦距”法。

肘部的幻觉:当直觉失灵时

肘部法则简单且吸引人,但它有一个危险的弱点:它常常能看到不存在的肘部。如果我们的数据根本没有真正的聚类结构会怎样?想象一下点完全随机地散布在一个正方形内。是否存在一个“正确”的聚类数?当然没有。

让我们做一个思想实验。如果我们的数据在一个 ddd 维超立方体中均匀分布,我们实际上可以推导出*期望*的 WCSS。结果是一个优美而简单的公式:E[W(k)]=Ck−2/dE[W(k)] = C k^{-2/d}E[W(k)]=Ck−2/d,其中 CCC 是一个取决于点数和维度的常数。这个函数是平滑且凸的;它没有尖锐的“肘部”!它连续下降,欺骗了天真的观察者,让他们认为在没有结构的地方存在结构。这是一个深刻而关键的洞见:​​肘部法则可能会产生误导,因为即使是随机数据也会产生看起来有肘部的曲线。​​

那么我们如何区分一个真实的肘部和一个虚幻的肘部呢?我们需要一种更具统计严谨性的方法。​​差距统计量(Gap Statistic)​​应运而生。这个想法的简洁性堪称绝妙:我们将我们实际数据的 WCSS 曲线与来自“零”数据(没有聚类的数据,如均匀散布的点)的期望 WCSS 曲线进行比较。对于每个 kkk,我们计算期望 WCSS 的对数与我们观察到的 WCSS 的对数之间的“差距”。

Gap(k)=E∗[ln⁡Wk]−ln⁡Wk\mathrm{Gap}(k) = \mathbb{E}^{\ast}[\ln W_k] - \ln W_kGap(k)=E∗[lnWk​]−lnWk​

如果我们的数据有真正的簇,它的 WCSS 将远低于随机数据的 WCSS,从而产生一个大的差距。我们寻找使这个差距最大的 kkk 值,这标志着我们找到了一个显著优于随机偶然性的结构。差距统计量将我们的思想实验形式化,为我们在简单的肘部图含糊不清时提供了一个强大的工具。

双重品质的故事:内聚性与分离度

只考虑 WCSS 意味着我们只关注簇的紧凑性,即​​内聚性​​。但一个好的聚类还有另一个同等重要的品质:簇与簇之间应该有良好的分离。这就是​​分离度​​的概念。一个真正优秀的聚类方法应该平衡这两者。

​​轮廓系数​​是一个非常优雅的度量标准,它为每个数据点同时捕捉了内聚性和分离度。对于任何给定的点 iii,我们计算两个量:

  1. a(i)a(i)a(i):点 iii 到其所在簇中所有其他点的平均距离。这衡量了​​内聚性​​。一个小的 a(i)a(i)a(i) 意味着该点很好地融入其簇中。
  2. b(i)b(i)b(i):点 iii 到最近的相邻簇中所有点的平均距离。这衡量了​​分离度​​。一个大的 b(i)b(i)b(i) 意味着该点远离其他簇。

点 iii 的轮廓系数随后定义为:

s(i)=b(i)−a(i)max⁡{a(i),b(i)}s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}}s(i)=max{a(i),b(i)}b(i)−a(i)​

s(i)s(i)s(i) 的值范围从 -1 到 1。

  • 接近 +1 的分数意味着该点与其自身的簇匹配良好,并且远离其他簇(理想情况)。
  • 接近 0 的分数意味着该点位于两个簇的边界上。
  • 接近 -1 的分数意味着该点可能被分在了错误的簇中。

通过对所有点的轮廓系数求平均,我们得到一个单一的数字,它告诉我们对于给定的 kkk,我们整个聚类的质量。然后我们可以简单地选择使平均轮廓系数最大化的 kkk。

其他度量标准也采纳了这种平衡内聚性和分离度的理念。

  • ​​Calinski-Harabasz 指数​​(或方差比标准)本质上是簇间方差与簇内方差的比率。高分意味着簇是紧凑的,并且它们的中心相距很远。
  • ​​Dunn 指数​​将这一点推向了极致。它是任意两个簇之间的最小距离与任何单个簇的最大直径的比值。它提出了一个非常严格的问题:“任意两个簇之间最窄的间隙是否比最宽的簇还要宽?”高的 Dunn 指数表明簇密集且分离良好。

编码员的视角:最小描述长度原则

让我们暂时从几何和统计学中走出来,像一个试图节省空间的计算机科学家一样思考。想象一下,你必须将你的数据集传输给一个朋友。一个包含每个点坐标的原始列表会占用大量空间。你能做得更好吗?

这就是​​最小描述长度(MDL)原则​​背后的核心思想。它将模型选择框定为一个数据压缩问题。最好的模型是那个能够对数据进行最压缩描述的模型。总的“描述长度”有两个部分:

  1. ​​描述模型本身的成本:​​这包括 kkk 个簇中心的坐标、每个簇中点的比例等。一个更复杂的模型(更大的 kkk)具有更高的模型成本。
  2. ​​在给定模型的情况下描述数据的成本:​​一旦你发送了簇中心,你就不需要发送每个点的确切坐标了。你只需要描述它相对于其分配的中心的位置。更紧凑的簇(更低的 WCSS)意味着点更靠近它们的中心,所以这部分描述更短。

总描述长度 Ltotal(k)L_{\text{total}}(k)Ltotal​(k) 是这两部分成本的总和。最初,随着我们增加 kkk,数据成本下降的速度快于模型成本增加的速度。但最终,为模型增加更多参数的惩罚会超过数据压缩带来的好处。MDL 原则告诉我们,最佳的 kkk 是最小化这个总描述长度的那个,实现了模型复杂度和拟合优度之间的完美平衡。这是一种优美的、基于第一性原理的方法,它将聚类转变为寻找对数据最优雅、最有效解释的过程。

终极检验:你的答案稳定吗?

我们已经探索了一系列强大的方法。但它们都有一个共同的潜在弱点:它们基于我们碰巧拥有的那一个特定数据集给出了一个答案。如果我们是在另一天收集的数据呢?我们会得到相同的“最佳” kkk 吗?如果答案对数据的微小变化高度敏感,那它就不是一个非常稳健的发现。一个聚类结果的最终检验是其​​稳定性​​。

现代统计学中评估稳定性的最强大的思想之一是​​自助法(bootstrap)​​。我们不使用我们原始的 nnn 个点的数据集,而是通过从原始数据集中有放回地抽取 nnn 个点来创建一个新的“自助样本”。我们这样做成百上千次。每个自助样本都是我们世界的一个略有不同的版本。然后我们可以在每个自助样本上运行我们的整个分析——比如说,找到最大化轮廓系数的 kkk。如果在 95% 的样本中选择了 k=3k=3k=3,而 k=2k=2k=2 和 k=4k=4k=4 只是偶尔被选中,我们就可以非常有信心地说,我们的数据中有三个稳定的簇。自助法给了我们一个最佳 kkk 值的分布,用一个更诚实的概率陈述取代了一个单一、不确定的答案。

一种更严谨的方法,借鉴自监督机器学习领域,是​​交叉验证​​。在这里,我们将数据分成两半:一个训练集和一个验证集。

  1. 我们仅使用训练集来学习簇中心。
  2. 然后我们看这些中心对被留出的验证集的“预测”效果如何。我们通过计算验证点到其最近的训练质心的平均平方距离来做到这一点。这被称为​​预测失真​​。一个好的、可泛化的模型将具有较低的预测失真。
  3. 然后我们可以交换这两半的角色并对结果取平均值。

这个过程严格测试了在数据的一部分中发现的结构是否能推广到另一部分。此外,它提供了一种直接衡量稳定性的方法。我们可以对数据的两半进行聚类,然后使用像​​调整兰德指数(ARI)​​这样的度量来比较得到的分区,该指数衡量两个聚类之间的相似性。如果某个 kkk 的选择在多次随机分割数据中始终导致高 ARI,那么它就是一个真正稳定和值得信赖的结果。

方法的交响曲

正如我们所见,没有一个单一的旋钮可以转动或按钮可以按下,来找到那个唯一的真 kkk。寻找最佳聚类数的过程是一个科学探究的过程。我们从简单的视觉启发式方法(如肘部法则)开始,但我们很快就了解到它的局限性,并转向更具统计学基础的方法,如差距统计量和轮廓系数。我们可以通过 MDL 从信息论的视角看待这个问题,并且我们必须始终用自助法和交叉验证提供的稳健性测试来挑战我们的结论。

真正的美妙之处不在于任何单一方法,而在于它们的交响乐。当肘部法则、轮廓系数、差距统计量和稳定性分析都指向同一个答案时,我们从猜测走向了发现。而当它们意见不一时,那也是一种发现——它告诉我们,我们数据的结构是模糊的,不能被一个单一的数字简洁地概括。这个探索不仅仅是为了找到一个答案;它是为了深刻理解隐藏在我们数据中那个世界的形状和构造。

应用与跨学科联系

既然我们已经摆弄了聚类的机器,并深入了解了选择那个至关重要的数字 kkk 的方法,让我们退一步看。这一切是为了什么?一个科学原理的真正魔力不在于其抽象的表述,而在于它出人意料地出现的地方以及它揭示的意想不到的联系。正如我们将看到的,对“最佳”聚类数的追求不仅仅是一个数学难题;它是一段旅程,将我们从我们城市的建筑带到我们自己 DNA 的秘密语言,甚至进入构建一个公平公正社会的内心。

揭示我们世界无形的建筑

向窗外看一座城市。它不是建筑物和街道的随机堆砌。它有结构——一种逻辑。有住宅区、繁华的商业区、工业园区和交通枢纽。一个算法,如果只给定原始数据,能自己发现这种结构吗?答案是响亮的“能”。想象一下,给一个聚类算法输入一个城市的“转录组”,其中特征不是基因,而是人口普查数据、商业类型、交通流量和公共服务。通过要求算法将最相似的社区分组,我们可以观察到城市隐藏的解剖结构浮现出来。在这里找到最佳的 kkk 等同于问:这个大都市由多少种根本不同的社区类型组成?它是一个简单的“市中心”和“郊区”的城市,还是一个由专业区域组成的更复杂的织锦?

这个原理从静态的地点延伸到动态的移动。思考一个城市的日常脉搏:通勤者的流动。每个人的路径都是独一无二的,是 GPS 轨迹的纠结面条。我们如何在这片混乱中找到秩序?挑战在于,“路径”不是空间中的一个简单点。为了比较两次通勤,我们必须有创造力。一个巧妙的技巧是重采样每条轨迹,就像拉伸或压缩一根橡皮筋,使得每条路径都由相同数量的点表示,比如 L=50L=50L=50。一个二维平面中的路径变成了一个高维,2L2L2L 维空间中的单个点!一旦我们完成了这个想象的飞跃,我们熟悉的聚类工具就可以开始工作了。出现的簇是城市循环系统中无形的高速公路和动脉——定义城市生活的主要通勤模式。WCSS 曲线中的肘部则告诉我们真正存在多少条不同的“超级路线”,为城市规划和交通管理提供了宝贵的见解。

绘制城市地图的相同逻辑也可以绘制生命本身的地理图。在空间转录组学这一开创性领域,科学家可以在组织切片上的数千个不同位置测量数千个基因的活性。每个位置,或“点”,都成为一个数据点,其特征描述了其基因活性和物理坐标。然后我们可以要求聚类算法对这些点进行分组。值得注意的是,在没有任何解剖学先验知识的情况下,该算法可以重新发现器官的不同层次和功能区域。例如,它可以描绘出大脑皮层的不同层次,或在健康组织中识别出癌性肿瘤。在这里,分析师甚至可以调整算法对空间的敏感度,决定在多大程度上权衡基因相似性与物理邻近性。kkk 的选择变成了一个假设:我们相信在这片生命切片中存在多少种不同类型的组织?

破译生命之语

自然界充满了信息,通常是用我们才刚刚开始理解的语言写成的。聚类是破译这些未知代码的强大工具。其中一个最迷人的例子来自宏基因组学,即研究直接从环境样本中回收的遗传物质。一勺海水或一撮土壤包含来自数千个物种的令人眼花缭乱的 DNA 混合物,其中大多数物种对科学来说是未知的。这就像被递给了一堆被撕碎、未贴标签的书。我们该如何开始整理它们呢?

答案在于统计学。不同的生物在其遗传密码中表现出不同的“方言”,这种现象被称为密码子使用偏好。例如,一些细菌可能偏好 G 和 C 核苷酸,而另一些则偏好 A 和 T。通过计算一个 DNA 片段中 64 种可能的三联体(密码子)的频率,我们可以为它创建一个 64 维的“指纹”。对这些指纹进行聚类,使我们能够将可能来自相同或相似生物的基因片段分组。最佳聚类数 k^\widehat{k}k(通常使用像轮廓系数这样的方法估计)给了我们对样本生物多样性的第一个有根据的猜测——我们这个被撕碎的图书馆中不同“作者”的数量。

但是我们如何知道这些算法定义的组是否有意义呢?我们可以在一个已知问题上测试我们的方法。例如,我们可以取一组来自已知病毒科的基因组,隐藏它们的标签,然后要求聚类算法根据它们的组成特征对它们进行分组。之后,我们可以偷看标签并测量我们簇的“纯度”。如果一个簇几乎只包含来自一个科的病毒,我们就可以更有信心地认为我们的算法发现的结构对应于真实的生物学类别。这是科学中一个反复出现的主题:我们通过首先看一个工具是否能告诉我们一些我们已经知道的事情,来建立我们对它的信心,然后再用它来探索未知。

这种在混合物中寻找结构的想法甚至可以扩展到更复杂的系统,比如人类免疫系统。向我们的免疫细胞呈递外来肽的分子有多种类型,每种类型对它将结合的肽种类都有自己的“偏好”。一个实验可以给我们一个包含数百万种肽的列表,这些肽是来自几种这类分子类型的混合物。这就像听一个派对的录音,里面有几个对话同时在进行。统计聚类模型,通常在贝叶斯框架下构建,可以解卷积这个混合物并分离出不同的对话。选择最佳聚类数 KKK 是一个微妙的平衡行为,由所谓的“信息准则”(如 AIC 或 BIC)来管理,这些准则权衡模型解释数据的能力与其复杂性,防止我们捏造实际上并不存在的对话。

有良知的聚类:价值与公平

到目前为止,我们一直将每个数据点都视为平等的。但在现实世界中,情况很少如此。在商业中,一个高收入的客户比一个随意的浏览者更值得挽留。在医学上,一个具有高临床风险因素的病人比一个健康的人更值得关注。我们可以通过使用加权版本的簇内平方和,将这些价值观直接嵌入到我们的聚类算法中。每个点对总误差的贡献乘以其权重。一个高权重的点就像一个重物,将其簇的重心拉向它,并且如果它没有被很好地代表,算法会受到更重的惩罚。

这个看似微小的改变带来了深远的影响。整个问题的“能量景观”被改变了。突然之间,最佳聚类数可能会改变。例如,一小群但风险极高的患者,在未加权的分析中可能会迷失在一个更大的簇中,但现在可能被正确地分离出来成为一个独立的组,因为算法被迫关注他们。我们发现的结构不再仅仅是数据几何形状的反映,而是我们,即分析师,认为重要的东西的反映,。

这引出了最后一个,也许是最重要的跨学科联系:算法公平性。聚类算法越来越多地被用于做出影响人们生活的决定——在贷款申请、招聘和刑事司法中。当我们在数学上“最优”的簇,在完美地最小化方差的同时,也恰好将人们沿着种族或性别等敏感界线完美地隔离时,会发生什么?这不是一个假设性的问题。由于社会偏见常常嵌入在数据本身中,标准算法很容易发现并放大它们。

在这里,我们面临一个选择。我们可以将公平性作为对聚类过程的数学约束。例如,我们可以要求每个簇的人口构成相对于总人口必须是平衡的,在某个容差 ϵ\epsilonϵ 内。这迫使其算法找到既在其特征上连贯又在其构成上多样化的群体。

这创造了一个引人入胜且根本性的权衡。强制执行公平性几乎总是会导致更高的 WCSS——从纯数学的角度来看,这是一个“更差”的聚类。我们有意识地牺牲一些统计纯度来换取一些伦理完整性。问题不再是简单地最小化 JJJ,而是在公平性约束下最小化 JJJ。这揭示了对“最佳”聚类的追求不仅仅是一个技术练习。它也是一个社会性的练习。kkk 的选择,以及我们定义的簇的本质,反映了我们选择嵌入到我们算法中的价值观。我们在世界中发现的模式是一面镜子,但它们也可以是我们想要建立的那种世界的蓝图。