新学期,班里转来 30 个新同学,你作为班主任想把他们按兴趣分成几个小组。可尴尬的是,你手里没有“标准答案”——你不知道哪个同学原本该属于哪个组。你只能先分组,再反复问自己:这样的分组,到底好不好?聪明的班主任会从三个角度找答案:挨个问问每位同学“你在本组舒服,还是想去隔壁组”;站上讲台看看各小组之间隔得远不远;再翻开一本“差异账本”,算算组间差异占了总差异的几成。 聚类评估指标做的正是这件事。聚类算法把无标签数据分成若干簇后,我们没有任何正确答案可以参考,只能靠数据自身的结构特征打分:簇内要紧凑,簇间要分离。轮廓系数像“学生民意调查”,DBI 像“班主任量小组间距”,CH 指数像“翻差异账本”。学会这三把尺子,你就能科学地选择簇数、对比算法,而不是拍脑袋决定分几组。

岗位关联

对 AI 从业者的价值:聚类评估是无监督学习中少有的“标准答案替代方案”,掌握轮廓系数、DBI、CH 等内部指标,你才能在真实业务中自信地回答“这个聚类结果到底行不行”,并据此调参、选模型、定簇数。

目录
  1. 可视化演示
  2. 评估必要性:没有标准答案,怎么打分
  3. 轮廓系数:问问每个同学“你待得舒服吗”
  4. DBI 指数:看看小组之间到底隔了多远
  5. CH 指数:组间差异和组内差异的“比值秤”
  6. 指标对比:三把尺子怎么选
  7. 实战运用:从“打分”到“决策”
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过切换聚类数和评估模式,直观理解轮廓系数、DBI指数和CH指数如何衡量聚类质量

本节配有交互动效(进入视口后自动加载,约 3KB)。

K=3 聚类分布 簇0:左上区域10个样本 簇1:右上区域10个样本 簇2:下方区域10个样本 轮廓系数 S=(b-a)/max(a,b) ∈[-1,1] 点击样本点查看其轮廓值分解

评估必要性:没有标准答案,怎么打分

新学期,班里转来 30 个新同学。你作为班主任,想把他们按兴趣分成几个小组。可尴尬的是,你手里没有“标准答案”——你不知道哪个同学原本该在哪个组。你只能先分,再问自己:这样的分组,到底好不好?看小组气氛?看组间话题差异?这些直觉其实都有数学对应。

这正是聚类面临的核心难题。聚类是无监督学习,数据没有标签,没法像分类那样直接算“准确率”。于是科学家设计了一套“内部指标”:不看外部答案,只从数据自身的结构特征给聚类打分。打分的原则只有两条:簇内要紧凑(小组内聊得来),簇间要分离(不同组话题差异大)。

当前最常用的三类内部指标——轮廓系数(Silhouette Coefficient)、Davies-Bouldin 指数(DBI)、Calinski-Harabasz 指数(CH)——都是这两条原则的数学化身。它们的差异在于:如何量化“紧凑”和“分离”,以及二者的权重怎么配比。抓住这条主线,你就能看懂任何一个聚类评估指标。

回到班主任视角:你不需要知道“标准答案”,只要看到每个小组内部讨论热烈、而不同小组之间话题毫不相干,就知道这个班分得不错。内部指标干的就是这件事——在没有答案的时候,给分组质量打分。

评估得分=簇间分离程度簇内紧凑程度\text{评估得分} = \frac{\text{簇间分离程度}}{\text{簇内紧凑程度}}
公式通俗说明:把“组与组之间的差异”放在分子,“组内的默契程度”放在分母。分子越大、分母越小,说明分组越合理。轮廓系数、DBI、CH 的区别,就在于分子分母各自怎么算。
  1. 簇内紧凑程度衡量一个小组内部成员之间的“距离”有多小。组内成员越相似,这个值越小,代表小组氛围越好。
    紧凑度=1∣Ci∣∑j∈Cid(i,j)\displaystyle \text{紧凑度} = \frac{1}{|C_i|} \sum_{j \in C_i} d(i, j)
  2. 簇间分离程度衡量不同小组之间的“距离”有多大。小组与小组之间隔得越远,越不容易混淆,代表分得越清晰。
    分离度=d(Ci,Cj)\displaystyle \text{分离度} = d(C_i, C_j)
  3. 合成评估指标将两者组合成一个数值,便于对不同聚类结果直接比较排序。
    得分=分离度紧凑度\displaystyle \text{得分} = \frac{\text{分离度}}{\text{紧凑度}}

轮廓系数:问问每个同学“你待得舒服吗”

换个角度:与其站在讲台上凭感觉看,不如挨个问问每位同学。你问小明:“你在现在这个小组待得自在吗?如果把你调到隔壁组,会不会更自在?”如果小明说“我在本组很舒服,隔壁组我不想去了”,那说明他分对了;如果他说“我其实更想去隔壁组”,那说明分组对他不合适。

轮廓系数(Silhouette Coefficient)就是这样一个“采访每位样本”的指标。对每个样本 i,它计算两个值:a(i) 是样本 i 到同簇其他样本的平均距离,类比“小明对本组的融入程度”,越小越自在;b(i) 是样本 i 到最近邻簇所有样本的平均距离,类比“隔壁组对小明的吸引力”,越大越不想去。

将二者合成轮廓系数 s(i)。它的取值范围是 [-1, 1]:越接近 1,说明 b 远大于 a,即“本组最舒服,哪儿也不想去”;接近 0,说明样本刚好在两组边界;接近 -1,说明它其实更适合被分到邻近簇。整个聚类的轮廓系数是所有样本 s(i) 的平均值。

所以轮廓系数这项“民意调查”很直观:每个人都表态“我在本组比在隔壁组更自在”,平均表态分越高,分组就越得人心。这也是它成为最常用聚类评估指标的原因——好理解、好解释、对局部异常敏感。

s(i)=b(i)−a(i)max⁡{a(i),b(i)}\displaystyle s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}}
公式通俗说明:分子是“隔壁组的吸引力减去本组的舒适度”,分母是二者中较大的那个,做归一化。比值越接近 1,说明样本对当前分组越满意;越接近 -1,说明它站错了队。
  1. 计算簇内平均距离 a(i)对样本 i,求它到同簇其他样本距离的平均值。a 越小,说明它在簇内越“合群”。
    a(i)=1∣Ci∣−1∑j∈Ci,j≠id(i,j)\displaystyle a(i) = \frac{1}{|C_i| - 1} \sum_{j \in C_i, j \neq i} d(i, j)
  2. 计算最近邻簇平均距离 b(i)对每个其他簇,求 i 到该簇所有样本的平均距离,再取最小值。b 越大,说明它离“第二选择”越远,归属越唯一。
    b(i)=min⁡k≠i1∣Ck∣∑j∈Ckd(i,j)\displaystyle b(i) = \min_{k \neq i} \frac{1}{|C_k|} \sum_{j \in C_k} d(i, j)
  3. 合成轮廓系数 s(i)用公式把 a 和 b 组合。b 远大于 a 时,s 接近 1,聚类效果好;a 远大于 b 时,s 接近 -1,聚类效果差。
    s(i)=b(i)−a(i)max⁡{a(i),b(i)}\displaystyle s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}}

DBI 指数:看看小组之间到底隔了多远

民意调查虽然直观,但有点费时。班主任想了个更偷懒但更硬核的办法:不看个体感受,直接看“小组中心”之间的距离——如果两个小组的中心离得近,说明这两个组很可能“聊着聊着就串组了”,分组不够清晰。

Davies-Bouldin 指数(DBI)就是这种“只看簇中心”的思路。它给每个簇定义了两个量:簇内直径 S_i,即簇内样本到簇中心的平均距离,类比“小组围绕组长的松散程度”;簇间距离 d(c_i, c_j),即两个簇中心的距离,类比“两个小组之间的隔阂深度”。

对每个簇 i,在其它簇中找一个“最像对手”的簇 j,使得 (S_i + S_j) / d(c_i, c_j) 最大,然后对所有簇取平均。这个比值越大,说明“两个小组内部越松散,而彼此却靠得很近”,分组质量越差。因此 DBI 越小越好。

班主任站到讲台上一看:每个小组围着自己组长坐得越紧、组与组之间的空地越大,这个 DBI 就越小,班上的分组就越“楚河汉界、互不干扰”。正因为 DBI 只依赖簇中心,它的计算速度比轮廓系数快得多,适合大规模数据。

DBI=1k∑i=1kmax⁡j≠i(Si+Sjd(ci,cj))\displaystyle DBI = \frac{1}{k} \sum_{i=1}^{k} \max_{j \neq i} \left( \frac{S_i + S_j}{d(c_i, c_j)} \right)
公式通俗说明:对每个小组,找到它“最危险的邻居”——即内部松散且离得近的那个组,算出坏比值;再把所有小组的坏比值取平均。平均值越低,说明每个组都有清晰的边界。
  1. 簇内直径 S_i计算第 i 个簇内各点到该簇中心点的平均距离,代表簇的“占地宽度”。簇越紧凑,S_i 越小。
    Si=1∣Ci∣∑x∈Cid(x,ci)\displaystyle S_i = \frac{1}{|C_i|} \sum_{x \in C_i} d(x, c_i)
  2. 簇间距离 d(c_i, c_j)直接计算两簇中心的欧氏距离,代表“小组之间的隔阂”。隔阂越大,两个组越不容易混。
    d(ci,cj)=∥ci−cj∥2\displaystyle d(c_i, c_j) = \|c_i - c_j\|_2
  3. 最差比值与平均对每个簇挑出它“最坏的邻居”比值,再对所有簇求平均,得到整体 DBI。
    DBI=1k∑i=1kmax⁡j≠i(Si+Sjd(ci,cj))\displaystyle DBI = \frac{1}{k} \sum_{i=1}^{k} \max_{j \neq i} \left( \frac{S_i + S_j}{d(c_i, c_j)} \right)

CH 指数:组间差异和组内差异的“比值秤”

轮廓系数问了个体,DBI 看了中心。班主任还有第三招:统计全班的总差异,然后把它拆成“组与组之间的差异”和“组内的差异”两块。如果组间差异占据了绝大部分,说明分组的功劳很大——同学们之间的差异主要是由“组别”带来的。

Calinski-Harabasz 指数(CH)正是基于方差分析的思想。它引入两个矩阵:类间离差矩阵 B_k,即各簇中心到全体中心离差的外积和,刻画“组与组之间的差异”;类内离差矩阵 W_k,即各簇内样本到自身簇中心离差的外积和,刻画“组内剩余差异”。

CH 指数就是两者经自由度归一化后的比值。tr(B_k) 越大说明簇间差异越大,tr(W_k) 越小说明簇内越整齐,所以 CH 越大代表“组间差异大、组内差异小”,聚类效果越好。它比轮廓系数更适合数据量大、簇形状接近球形的场景。

就像班主任做“组间差异 vs 组内差异”的账本:如果班里的差异几乎都发生在组与组之间,组内成员高度一致,那这份分组方案就是“差异收割机”,CH 分数自然飙升。反过来,如果组内差异和组间差异差不多,说明分没分都一样,CH 就低。

CH=tr(Bk)/(k−1)tr(Wk)/(n−k)\displaystyle CH = \frac{tr(B_k) / (k - 1)}{tr(W_k) / (n - k)}
公式通俗说明:分子的迹代表“组间的差异总量”,分母的迹代表“组内没被解释的差异总量”。比值越大,说明分组这步棋走得越有价值。
  1. 类间离差矩阵 B_k把每个簇中心看作一个点,计算它们相对全局中心的离差平方和。簇中心分得越开,矩阵的迹越大。
    Bk=∑i=1kni(ci−xˉ)(ci−xˉ)T\displaystyle B_k = \sum_{i=1}^{k} n_i (c_i - \bar{x})(c_i - \bar{x})^T
  2. 类内离差矩阵 W_k把所有样本相对自身簇中心的离差平方加总。簇内样本越集中,矩阵的迹越小。
    Wk=∑i=1k∑x∈Ci(x−ci)(x−ci)T\displaystyle W_k = \sum_{i=1}^{k} \sum_{x \in C_i} (x - c_i)(x - c_i)^T
  3. 自由度归一化后取比值分别除以 (k-1) 和 (n-k),消除簇数和样本量对数值尺度的干扰,最终得到一个可横向比较的分数。
    CH=tr(Bk)/(k−1)tr(Wk)/(n−k)\displaystyle CH = \frac{tr(B_k) / (k - 1)}{tr(W_k) / (n - k)}

指标对比:三把尺子怎么选

现在班主任手上有三把尺子:民意调查(轮廓系数)、量中心距离(DBI)、算差异账本(CH)。三把尺子量的是同一批学生,但量出来的排名一定一样吗?不一定。轮廓系数逐样本计算,对“边界样本”敏感,能发现局部不合理分配,但复杂度高,需要所有样本两两之间的距离;DBI 只用簇中心,计算快,但忽略了簇的形状和密度差异;CH 基于方差分析,在大簇、球形簇上表现稳,但对非球形簇不友好。

实际使用时没有绝对最优,常见做法是同时计算多个指标,观察它们在候选 k 值上的“共识”。比如 k=4 时轮廓系数最高、DBI 最低、CH 最高,那 k=4 通常就是稳健的选择。若轮廓系数偏向 k=5、DBI 偏向 k=3,则说明数据本身没有极其清晰的簇结构,这时要回到业务看哪个 k 更有解释力。

下表总结了三个指标的核心差异:

| 指标 | 计算粒度 | 计算开销 | 最优方向 | 突出优势 |

|------|---------|---------|---------|---------|

| 轮廓系数 | 每个样本 | 高(需逐对距离) | 越大越好 | 局部敏感、可解释 |

| DBI | 簇中心 | 低 | 越小越好 | 速度快、适合大规模 |

| CH | 方差矩阵 | 中 | 越大越好 | 球形簇稳健 |

班主任会综合“学生口碑、组间距离、差异占比”三份报告来做决策。三份报告一致时大胆拍板;不一致时,就要回到业务现场看哪把尺子更贴合真实需求——评估指标的最终目的是辅助决策,而不是代替决策。

实战运用:从“打分”到“决策”

打分不是目的,最终目的是做出决策。班主任拿到三份打分报告后,接下来要决定:到底留几个小组最合适?这是聚类调参的核心场景。以 K-means 为例,k 需要提前指定。我们让 k 从 2 试到 10,对每个 k 跑一次聚类,分别计算轮廓系数和 DBI,画成曲线。曲线最高点(或拐点)对应的 k,就是数据自己“投出来的最优簇数”。

选簇数之外,评估指标还能用来对比不同聚类算法。比如在相同 k 下,分别跑 K-means 和层次聚类,比较两者的轮廓系数高低,就能客观选出更适合当前数据的算法。再进一步,聚类结果要真正落地,还需要业务验证:电商分群后,看每个群的客单价、活跃度是否真的不同;文本聚类后,看每个簇的主题描述是否清晰可读。指标是数据的“体检报告”,业务是最后的“诊断医生”。

实战中推荐一个三步流程:第一步,用轮廓系数或 CH 锁定候选 k 范围;第二步,用 DBI 从候选范围中剔除边界模糊的解;第三步,对留下的解进行业务可解释性验证,拍板最终方案。这样既利用了指标客观性,又保留了业务的判断力。

所以记住:轮廓系数、DBI、CH 是班主任的量化助手,它们告诉你“分组在统计上好不好”;但你才是最终拍板的人。把指标当作导航仪,把业务当作方向盘,才能开好聚类这辆车。

AI 应用场景

场景1:电商用户分群——用轮廓系数选 K

阶段:模型评估与调参

解决的问题:运营团队想把用户分为几个消费群体,但不知道分几类合适。以前靠经验拍脑袋定 K,导致群体边界模糊、运营动作难以落地。现在用 K-means 在 K=2 到 8 上分别计算轮廓系数与 DBI,选择两者综合最优的 K,分出的用户群在客单价、复购率上差异显著。

具体案例:某电商平台用聚类评估指标发现 K=4 时轮廓系数 0.52、DBI 0.64,明显优于 K=3 和 K=5,据此将用户分成“价格敏感型、品质型、冲动型、沉睡型”,针对不同群体推送差异化优惠券,转化率提升 12%。

场景2:图像分割中的超参数调优

阶段:超参数优化

解决的问题:在图像分割任务中,超像素分割算法的紧凑度参数会影响分割粒度。若靠人工观察每张图对比,效率极低。通过内部指标对比不同参数下的分割结果,无需人工标注即可快速筛选参数组合。

具体案例:医学影像分割中,用 DBI 对比不同紧凑度参数产生的分割结果,选出 DBI 最低的参数组合,使分割边界更贴合细胞轮廓,辅助医生提升标注效率。

场景3:文档主题聚类中的算法选型

阶段:算法对比与选型

解决的问题:对大量新闻文档做主题聚类,K-means 与层次聚类效果孰优孰劣无法直观判断。通过内部指标量化对比,避免“凭感觉选算法”,让选型有数据支撑。

具体案例:新闻推荐系统用轮廓系数对比 K-means 和层次聚类在 K=6 时的表现,层次聚类轮廓系数 0.46,高于 K-means 的 0.38,最终选用层次聚类结果作为新闻分类依据,首页点击率提升 8%。

Python 演示

python54 行
import numpy as npfrom sklearn.datasets import make_blobsfrom sklearn.cluster import KMeans  def euclidean(a, b):    return np.sqrt(np.sum((a - b) ** 2))  def silhouette_score_manual(X, labels):    n = len(X)    scores = np.zeros(n)    for i in range(n):        same = np.where(labels == labels[i])[0]        same = same[same != i]        a = np.mean([euclidean(X[i], X[j]) for j in same])        best_b = np.inf        for c in set(labels):            if c == labels[i]:                continue            other = np.where(labels == c)[0]            b = np.mean([euclidean(X[i], X[j]) for j in other])            best_b = min(best_b, b)        scores[i] = (best_b - a) / max(a, best_b)    return float(np.mean(scores))  def davies_bouldin_manual(X, labels):    k = len(set(labels))    centers = np.array([X[labels == c].mean(axis=0) for c in range(k)])    radii = []    for c in range(k):        pts = X[labels == c]        radii.append(np.mean([euclidean(centers[c], p) for p in pts]))    db = 0.0    for i in range(k):        worst = max((radii[i] + radii[j]) / euclidean(centers[i], centers[j])                    for j in range(k) if j != i)        db += worst    return float(db / k)  def main():    np.random.seed(42)    X, _ = make_blobs(n_samples=300, centers=3, cluster_std=1.2, random_state=42)    for k in range(2, 7):        labels = KMeans(n_clusters=k, n_init=10, random_state=42).fit_predict(X)        s = silhouette_score_manual(X, labels)        dbi = davies_bouldin_manual(X, labels)        print(f"k={k}: silhouette={s:.3f}  dbi={dbi:.3f}")  if __name__ == "__main__":    main()
目的:从零实现轮廓系数和 DBI 两个聚类评估指标,并在合成数据集上对比不同 k 值下 K-means 的聚类质量,帮助理解“选 k”的完整流程。
  1. same = np.where(labels == labels[i])[0]找出所有与样本 i 同簇的索引,供计算 a(i) 使用
  2. a = np.mean([euclidean(X[i], X[j]) for j in same])簇内平均距离 a(i),衡量“本组舒适度”
  3. b = np.mean([euclidean(X[i], X[j]) for j in other])样本 i 到某个其他簇的平均距离,对应 b(i)
  4. scores[i] = (best_b - a) / max(a, best_b)套用轮廓系数公式,逐样本打分
  5. centers = np.array([X[labels == c].mean(axis=0) for c in range(k)])计算每个簇的中心点,DBI 的基石
  6. radii.append(np.mean([euclidean(centers[c], p) for p in pts]))簇内各点到中心的平均距离,即簇内直径 S
  7. worst = max((radii[i] + radii[j]) / euclidean(centers[i], centers[j]) for j in range(k) if j != i)对每个簇找“最坏邻居”的 (Si+Sj)/d 比值
  8. labels = KMeans(n_clusters=k, n_init=10, random_state=42).fit_predict(X)对指定 k 执行 K-means 并得到簇标签

常见误区

误区“我算出来的轮廓系数是 0.85,说明我的聚类结果特别棒,可以直接上线了!”

正解轮廓系数高说明簇内紧凑、簇间分离,但它本质衡量的是几何距离,不保证簇有业务含义。真实场景中 0.3-0.5 的轮廓系数配合可解释的分群,往往比 0.8 但无法解释的分群更有价值。就像班主任看到小组内坐得再挤,也不代表这个小组的课题方向真的成立。聚类评估要“指标 + 业务”双保险。

为何常见:初学者容易把单一指标当作绝对真理,忽略了指标只是数据结构的量化投影,而不是最终业务目标。

误区“k=4 时轮廓系数最高但 DBI 不是最低,我的代码肯定有 bug。”

正解不同指标对“好”的定义不同:轮廓系数侧重个体归属感,DBI 侧重中心距离比,CH 侧重方差分解,结论不一致是常态而非异常。就像班主任把三份报告摆在一起,学生口碑最好的方案未必是组间距离最远的方案。矛盾时应回到业务目标选主指标,或看多个指标的“共识区间”。

为何常见:学生习惯了分类任务里“准确率越高越好”的单一目标,难以接受无监督场景下多指标需要权衡的现实。

误区“我直接对原始特征算欧氏距离,结果轮廓系数一直很低,一定是数据有问题。”

正解距离类指标对量纲极其敏感,比如“年龄”和“收入”混在一起,收入数值大就会主导距离计算,年龄特征形同虚设。班主任如果只看身高分组,忽略兴趣,自然分不好。必须先把特征标准化(如 z-score 或 min-max),保证每个维度对距离的贡献公平,聚类评估才有意义。

为何常见:距离计算是隐式步骤,新手容易忽略特征的量纲差异对距离本质的影响。

误区“轮廓系数告诉我 k=5 最好,那就用 5,不用再想别的了。”

正解统计最优不等于业务最优。k=5 在几何上分得最开,但业务上可能就是解释不了第 5 群。正确的做法是:指标缩小候选范围(比如 k 在 4-6 之间),再用业务可解释性和落地成本做最终决策。就像班主任先用问卷筛出两套候选方案,再结合家长反馈定最终分组。

为何常见:把“自动选 k”理解成“一键定稿”,低估了业务验证这一环在真实项目中的分量。

面试题

Q1. 轮廓系数的取值范围最接近下列哪个区间?

单选题 · easy

  • A.[-1, 1]← 正确答案
  • B.[0, 1]
  • C.[-∞, +∞]
  • D.[0, +∞)

答案:A。轮廓系数 s=(b-a)/max(a,b),分子最大不会超过分母,所以取值被限制在 [-1, 1]。越接近 1 表示聚类越好,越接近 -1 表示样本被分错了簇,这正是它作为归一化指标的优点。

Q2. 轮廓系数公式中的 a(i) 代表什么含义?

单选题 · easy

  • A.样本 i 到同簇其他样本的平均距离← 正确答案
  • B.样本 i 到最近邻簇样本的平均距离
  • C.样本 i 到全局中心的距离
  • D.样本 i 到最远样本的距离

答案:A。a(i) 是簇内平均距离,衡量样本 i 与本簇的“融洽度”,a 越小越紧凑。B 描述的是 b(i),C 和 D 都不是轮廓系数的组成部分。类比班主任问“你在本组待得自在吗”——a 就是这种自在度的量化。

Q3. DBI 指数越小说明什么?

单选题 · easy

  • A.簇内越松散、簇间越接近
  • B.簇内越紧凑、簇间越分离← 正确答案
  • C.簇内越紧密、簇间越靠近
  • D.簇内越分散、簇间越遥远

答案:B。DBI 的分子是两簇的簇内直径之和(内部松散程度),分母是簇间距离。比值越小,说明“内部紧 + 组间远”的组合越理想,因此 DBI 越小越好。反之若 A 成立,DBI 会变大。

Q4. CH 指数越大说明什么?

单选题 · easy

  • A.类间离差大、类内离差小← 正确答案
  • B.类间离差小、类内离差大
  • C.类间离差大、类内离差大
  • D.类间离差小、类内离差小

答案:A。CH = tr(Bk)/(k-1) / tr(Wk)/(n-k),分子是类间离差(组与组的差异),分母是类内离差(组内残余差异)。CH 越大说明分组解释了绝大部分差异,类比“组间话题差异大、组内意见高度一致”。

Q5. 无标签数据完成聚类后,最合适的质量评估方式是?

单选题 · mid

  • A.计算聚类准确率
  • B.使用内部评估指标← 正确答案
  • C.使用外部对比指标
  • D.人工标注全部样本后重算

答案:B。无监督聚类没有真实标签,无法计算准确率。内部指标只依赖数据样本自身的分布特性(簇内紧凑、簇间分离)来打分,所以 B 正确。外部指标需要标签,人工标注全部样本成本过高且违背无监督初衷。

Q6. 某个样本的轮廓系数为 -0.2,最可能说明什么?

单选题 · mid

  • A.它更接近自己簇,分组合理
  • B.它更接近相邻簇,分配可能不合理← 正确答案
  • C.它恰好位于两个簇的正中间
  • D.该样本属于典型的异常点

答案:B。s 为负意味着 a > b,即样本到本簇的平均距离大于到最近邻簇的平均距离,说明它“身在曹营心在汉”,更亲近相邻簇。C 对应 s 接近 0,而异常点不一定对应负轮廓系数。

Q7. 实际业务中验证聚类效果时,合理的做法包括?

多选题 · mid

  • A.结合业务指标观察分群可解释性← 正确答案
  • B.用轮廓系数选完 k 直接上线
  • C.对比不同算法的内部指标得分← 正确答案
  • D.只关注 DBI 最优的算法结果

答案:AC。聚类评估是“指标 + 业务”双保险。A 用业务可解释性做最终验证是正确的;C 用内部指标客观对比算法也是合理做法。B 忽略业务环节,D 只盯单一指标,都过于片面,类比班主任只听一份报告就拍板。

Q8. 关于聚类评估指标,下列说法正确的有?

多选题 · hard

  • A.轮廓系数同时考虑簇内紧凑与簇间分离← 正确答案
  • B.DBI 取值越大的 k 聚类效果越好
  • C.CH 指数需要计算簇中心的离差矩阵← 正确答案
  • D.多个评估指标的结论在任何数据上都不矛盾

答案:AC。轮廓系数的 a 衡量簇内紧凑、b 衡量簇间分离,A 正确。DBI 越小越好,B 错误。CH 的类间离差矩阵 Bk 就是基于簇中心计算的,C 正确。D 过于绝对,不同指标侧重不同,结论可能矛盾,这是常态。

Q9. DBI 公式中的分子 S_i + S_j 表示什么?

单选题 · hard

  • A.簇 i 与簇 j 的样本数量之和
  • B.簇 i 与簇 j 的簇内直径之和← 正确答案
  • C.簇 i 与簇 j 中心的距离之和
  • D.簇 i 与簇 j 的方差之和

答案:B。S_i 是簇 i 内各点到簇中心的平均距离,即簇内直径。分子是两簇直径之和,代表两簇各自的松散程度;分母是簇间距离。比值越小说明两个簇“内部紧、隔得远”,分组越清晰。

Q10. 关于聚类评估指标的计算前提,下列说法正确的有?

多选题 · extreme

  • A.需要先计算样本两两之间的距离← 正确答案
  • B.轮廓系数的计算不需要簇中心← 正确答案
  • C.DBI 需要簇中心来计算簇间距离← 正确答案
  • D.三种指标都可以在未指定 k 时直接计算

答案:ABC。轮廓系数需逐样本计算到其他样本的距离,本质依赖两两距离;它只用样本间距离,不需要簇中心,B 正确。DBI 的簇间距离 d(ci,cj) 就是两个簇中心的欧氏距离,C 正确。三种指标都依赖聚类结果,而聚类必须先指定 k 才能得到簇标签,D 错误。