# Ml Clustering Toolkit

> 聚类选型与评估流程。用户问"聚类分几类""kmeans 还是 dbscan""怎么评估聚类效果 / clustering evaluation""轮廓系数"，或对无序属性硬算欧氏距离、把簇当真实类别下结论时激 活。动作：有无参考模型定外部/内部指标(DB指数/Dunn)→按数据形状选范式(k均值 vs DBSCAN vs AGNES)→按属性有序性选距离(闵氏/VDM/非度量)→k 值指标扫描+任务语义。警告：聚类没有 客观标准(NFL 重演)，簇≠真实类别。不适用于：有标签分类、降维可视化(ml-dimensionality)。 trigger: clustering evaluation, silhouette, DBSCAN, k-means, dendrogram, 轮廓系数。

- Skill: `fieldlu/ml-clustering-toolkit` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add fieldlu/ml-clustering-toolkit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fieldlu/ml-clustering-toolkit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: fieldlu (https://skillmd.com/u/fieldlu)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/fieldlu/ml-clustering-toolkit

---


# 聚类工具箱 — 没有标准答案的问题如何做出可辩护的选择

## R — 原文 (Reading)

> "我们希望'物以类聚'，即同一簇的样本尽可能彼此相似，不同簇的样本尽可能不同。换言之，
> 聚类结果的'簇内相似度'(intra-cluster similarity)高且'簇间相似度'(inter-cluster
> similarity)低。"
>
> — 周志华，《机器学习》第9章 9.2节 "性能度量"

> "聚类性能度量大致有两类。一类是将聚类结果与某个'参考模型'(reference model)进行比较，
> 称为'外部指标'(external index)；另一类是直接考察聚类结果而不利用任何参考模型，称为'内
> 部指标'(internal index)。"
>
> — 周志华，《机器学习》第9章 9.2节

> "DBSCAN 将'簇'定义为：由密度可达关系导出的最大的密度相连样本集合。"（D 中不属于任何簇
> 的样本被认为是噪声或异常样本）
>
> — 周志华，《机器学习》第9章 9.5节 "密度聚类"

---

## I — 方法论骨架 (Interpretation)

聚类是无监督的：没有"正确答案"可供比对，所以整个方法论围绕两个问题重组——**怎么判断结果好不好**，以及**用什么方式切分才匹配数据形状**。

评估侧是一条二岔口：手上有参考模型（如领域专家给的划分）就走**外部指标**（两两配对计数：同簇同参考、同簇异参考……）；没有参考就走**内部指标**——用簇内平均距离 avg、簇内最远距离 diam、簇间最近距离 dmin、簇中心间距 dcen 组装出 DB 指数（越小越好）或 Dunn 指数（越大越好）这类自洽判据。

算法侧是三大范式按数据几何形态分流：
- **原型聚类**（k均值/LVQ/高斯混合）：假设簇能被一组原型（均值向量/概率成分）刻画——适合团状凸簇；k 均值最小化平方误差是 NP 难，贪心迭代只保证局部解。
- **密度聚类**（DBSCAN）：假设簇由样本分布的紧密程度确定——能刻出任意形状的簇，还能顺带标出噪声点；靠邻域参数 (ε, MinPts) 定义核心对象与密度可达链。
- **层次聚类**（AGNES 自底向上 / DIANA 自顶向下）：产出树状图，在不同层切割得到不同粒度的簇——适合需要多分辨率解读的场景。

距离度量是横贯三者的底层选择：先审属性有没有"序"，有序算闵可夫斯基，无序用 VDM，混合拼接，必要时允许违反直递性的非度量距离。

---

## A1 — 书中的应用 (Past Application)

### 案例 1: 西瓜数据集 4.0 五连演算 (c27)
- **问题**: 同一份数据（30 样本、密度×含糖率），不同聚类范式给出的结果差多少？
- **方法论的使用**: 作者依次跑五种算法并给出逐步数值：k 均值（x₁ 距三中心 0.369/0.506/0.166 入 C₃，第五轮收敛）；LVQ（利用类别监督信息拉推原型 p₅=(0.725;0.445)→(0.722;0.442)）；高斯混合 EM（后验 γ₁₁=0.219 加权更新参数）；DBSCAN（ε=0.11, MinPts=5，从 13 个核心对象出发生成四簇）；AGNES（dmax 链接建树状图，特定层切割得 7 簇）。
- **结论**: 三大范式在同一数据上的簇划分各不相同且都"说得通"——聚类结果的合理性永远相对于所选范式与参数而言。
- **结果**: 这套五连演算成为横向比较聚类方法的通用沙盘，也直观展示了"同一数据多种合法切分"的现实。

### 案例 2: 人马非度量距离 (c26)
- **问题**: 相似度度量必须满足数学公理吗？
- **方法论的使用**: 作者构造场景——希望"人""马"分别与"人马"相似但彼此很不相似；令 d(人,人马)、d(马,人马) 都小而 d(人,马) 大，则三角不等式被打破。数学上取 d₃=3 即满足直递性，但从语义看 d₃ 应远大于 d₁ 与 d₂。
- **结论**: 距离公理可以为任务语义让路——"非度量距离"是合法选项，必要时可通过距离度量学习从数据中学出合适距离。
- **结果**: 确立了"度量服务语义而非相反"的原则，成为审距离这一步的最高裁决。

### 案例 3: 聚类为何新算法最多——作者的自我剖白
- **问题**: 为什么聚类领域的"新算法"出现最多最快、知识却不够系统化？
- **方法论的使用**: 作者在阅读材料中直陈原因："聚类不存在客观标准；给定数据集，总能从某个角度找到以往算法未覆盖的某种标准从而设计出新算法"——并承认因此本章只能采用"列举式"叙述。
- **结论**: NFL 定理"脱离具体问题谈优劣无意义"在聚类中的重演：每个内部指标都是一种"客观标准"的主张，而主张之间不可通约。
- **结果**: 为"警惕把簇当真实类别"这条边界纪律提供了全书级别的理论背书。

---

## A2 — 触发场景 (Future Trigger) ★

### 用户会在什么情境下需要这个 skill?

1. 用户拿到无标记数据要做分群，第一个问题就是"该分成几类 / 怎么定 k"。
2. 用户纠结算法选型："kmeans 还是 dbscan？""层次聚类什么时候用？"——通常因为不知道自己的数据是团状还是任意形状、有没有噪声。
3. 用户跑完聚类不知道怎么向老板/审稿人证明结果合理："聚类效果怎么评估？轮廓系数怎么看？"
4. 用户的特征表里混着性别/城市等无序类别列，直接编码成数字算欧氏距离，结果可疑。
5. 用户把聚类簇直接当真实类别使用（"簇 1 就是高价值客户"），需要有人提醒证据强度。

### 语言信号 (用户的话里出现这些就应激活)

- "聚类分几类？" / "k 值怎么定？" / "how many clusters"
- "kmeans 还是 dbscan？" / "kmeans vs dbscan" / "该用什么聚类算法"
- "怎么评估聚类效果？" / "clustering evaluation" / "轮廓系数" / "silhouette score"
- "DB 指数 / Dunn 指数 / dendrogram 怎么看"
- "聚类出来的簇就是用户画像吗？" / "cluster 当类别用行不行"

### 与相邻 skill 的区分

- 与 `ml-task-matching` 的区别: task-matching 管"这个任务该不该用聚类"以及有监督方法间的选型；本 skill 在已决定聚类之后运作——评估、选范式、选距离、定 k 全流程。NFL 原则是两者的共同上游。
- 与 `ml-dimensionality` 的区别: dimensionality 处理高维灾难下的降维/特征选择（聚类前的高维预处理常先经它）；本 skill 不做维度压缩，只做无标记数据的分组与评估。高维数据上"距离趋同"的症状出现时先走降维再回来聚类。
- 与 `ml-diagnosis` 的区别: diagnosis 是有监督的偏差-方差归因，依赖训练/验证误差信号；聚类没有这种信号，诊断逻辑完全不同（内部指标 + 任务语义复核）。两者不可互相替代。

---

## E — 可执行步骤 (Execution)

当 skill 被激活后, agent 应按以下步骤执行:

1. **澄清任务与约束**
   - 完成标准: 明确回答三个问题——聚出来做什么用途（客户分层/异常初筛/探索性可视化）？有没有参考模型（专家标注、既有分群）可用作对照？业务上是否要求标出噪声点？答案将决定后续所有分支。
   - 判停条件: 若发现实际是有标签分类任务 → 移交 `ml-task-matching`，本 skill 终止。

2. **选评估指标**
   - 完成标准: 有参考模型 → 外部指标（Jaccard/FM/RI 两两配对族）；无参考 → 内部指标（DB 指数越小越好、Dunn 指数越大越好，轮廓系数逐样本看归属强度）。同时声明所选指标的偏好立场——它只是"某种角度"的标准，不是客观真理。

3. **按数据形状选算法范式**
   - 完成标准: 给出明确选型及理由——团状凸簇、要快、要可解释 → k 均值（注意其最小化平方误差是 NP 难、贪心仅局部解、对初始中心敏感，需多组初值择优）；任意形状 + 有噪声要剔除 → DBSCAN（ε, MinPts 需调，密度均匀假设要核对）；要多粒度树状解读 → AGNES 层次聚类（合并后不可回溯，单/全/均链接的选择影响链式效应）。

4. **审距离度量**
   - 完成标准: 逐一检查参与距离计算的属性——有序属性 → 闵可夫斯基（p=2 欧氏、p=1 曼哈顿）；无序属性 → VDM，禁止硬编码数字算伪距离；混合属性 → 闵氏+VDM 拼接；重要性不均 → 加权距离。若任务语义需要组合相似性（人马型），显式采用非度量距离并说明违反直递性的理由。
   - 判停条件: 发现存在无序属性被连续化编码 → 先修复编码再继续，禁止带着伪序往下跑。

5. **定 k 并复评**
   - 完成标准: 对 k 做指标扫描（内部指标随 k 的曲线找拐点），结合任务语义约束（业务最多能运营几个群）收敛到候选值；报告须包含多个 k/多种子/多算法的结果对比，而非单次运行。明确声明"聚类没有客观标准"，最终取舍以任务需求为裁判。

6. **防越界解读**
   - 完成标准: 输出中显式区分"统计上稳定的簇结构"与"业务上可用的类别"；建议对关键簇做抽样人工复核后才赋予业务含义。

---

## B — 边界 (Boundary) ★

### 不要在以下情况使用此 skill

- 数据有标签、目标是预测 → 这是分类不是聚类，走监督学习管线。
- 主要诉求是把高维数据压到二维看一眼 → 那是降维可视化（`ml-dimensionality`），聚类只是可选的事后加工。
- 核心诉求是异常检测的完整方法论 → 聚类可作异常初筛（远离所有簇中心/密度极低处），但不等于异常检测本身。

### 作者在书中警告的失败模式

- **距离度量误用 (x37)**: 无序属性硬算闵氏距离会凭编码数字产生伪远近（{飞机,火车,轮船} 编码 1/2/3 后"飞机-火车<飞机-轮船"毫无依据）；应改 VDM 或混合距离。反向陷阱同样存在：坚持三角不等式反而表达不了组合语义。
- **"聚类没有客观标准"(NFL 重演)**: 给定数据集总能找到某个角度发明新算法——所以任何"最优聚类"的说法都隐含了标准选择；换一个内部指标结论可能反转。
- **贪心与不可回溯**: k 均值只给局部解且依赖初始中心（换个初始化面目全非）；AGNES/DIANA 合并或分拆后不能回溯调整——单次运行的结果不足以支撑结论。
- **把簇当真实类别**: 簇是算法在某种距离与某种标准下的产物，与真实类别（若存在）可以完全错位；书中特别指出 LVQ 才借助监督信息辅助聚类，纯无监督结果没有这种保障。

### 作者的盲点 / 时代局限

- 成书于 2015-2016：谱聚类仅在阅读材料提及，深度聚类（自编码器嵌入 + 聚类）、HDBSCAN 等现代密度方法缺失；但"范式三分 + 距离审查 + 无客观标准"的骨架可直接外推。
- 高维场景着墨少：维数灾难让距离失效的问题在本章未展开（ch10 补），高维聚类前应先降维——这是读者需自行拼接的一环。
- 大规模聚类的工程扩展（mini-batch kmeans、分布式 DBSCAN）不在讨论范围。

### 容易混淆的邻近方法论

- **聚类 vs 分类**: 聚类是无监督的"物以类聚"，分类是有标记的学习；两者术语相近（都叫"簇划分/类别"）但证据等级天差地别。
- **外部指标 vs 内部指标**: 外部指标衡量与参考的一致性，内部指标衡量自洽性——前者强不代表后者好（参考本身可能平庸），反之亦然，不可混用。
- **DBSCAN 的噪声 vs 异常检测**: DBSCAN 把不属于任何簇的样本标为噪声/异常，但这只是聚类的副产品；系统的异常检测另有方法体系。

---

## 相关 skills

- depends-on: ml-task-matching（确认任务确实无监督）
- contrasts-with: ml-diagnosis（有监督归因 vs 无监督评估）
- composes-with: ml-dimensionality（高维先降维再聚类）, ml-pitfall-audit（x37 度量误用审计的前置）

---

## 审计信息

- **验证通过**: V1 ✓ / V2 ✓ / V3 ✓
- **素材单元**: c27, c26 / x37（扩充批A 新增单元，阶段 1.5 池外补充）
- **skill_version**: 0.0.1
- **蒸馏时间**: 2026-08-24

