# Ml Semisupervised

> 标注太少、想利用大量未标注数据时的路线选型与安全纪律。用户说"只有几百条标注/未标注 数据怎么用/pseudo-label/self-training 掉点"、纠结主动学习与半监督区别、协同训练前提、 或加未标注数据反而掉点时激活。 动作: 查资格线(标注真不够?未标注同源?)→验证聚类/流形假设→选路线 (生成式/S3VM/基于分歧/图传播)→强制纯监督基线对照。 不适用于: 标注充足的监督任务、无标签聚类、自监督预训练。 trigger: semi-supervised, unlabeled data, pseudo-label, co-training, TSVM, self-training, 伪标记, 协同训练。

- Skill: `fieldlu/ml-semisupervised` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add fieldlu/ml-semisupervised`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fieldlu/ml-semisupervised/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-semisupervised

---


# 半监督学习 — 未标记数据不是免费的午餐，先验资再用

## R — 原文 (Reading)

> ""聚类假设"(cluster assumption)，即假设数据存在簇结构，同一个簇的样本属于同一个类别。……另一种常见的假设是"流形假设"(manifold assumption)，即假设数据分布在一个流形结构上，邻近的样本拥有相似的输出值。"
>
> — 周志华, 《机器学习》第13章 13.1节 "未标记样本"

> "此类方法有一个关键：模型假设必须准确，即假设的生成式模型必须与真实数据分布吻合；否则利用未标记数据反倒会降低泛化性能。……遗憾的是，在现实任务中往往很难事先做出准确的模型假设，除非拥有充分可靠的领域知识。"
>
> — 周志华, 《机器学习》第13章 13.2节 "生成式方法"

> "不同视图、不同算法、不同数据采样、不同参数设置等，都仅是产生差异的渠道，而非必备条件。"
>
> — 周志华, 《机器学习》第13章 13.5节 "基于分歧的方法"

---

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

未标记样本不含标签，却含有数据分布的信息——前提是你能把"分布"和"标记"挂钩起来。这个挂钩就是桥梁假设：聚类假设（同簇同类别）或流形假设（邻近样本输出相似），本质都是"相似的样本拥有相似的输出"。所有半监督方法的收益与风险都压在这座桥上。

三条纪律：

1. **先验资**：标记数据真的不够吗？若监督基线已达要求，引入半监督等于凭空增加一层假设风险——免费的午餐可能有毒。
2. **查同源**：未标注样本必须与标注样本来自同一分布（独立同分布采样）。分布错位时，海量廉价数据会把模型拽向错误的结构。
3. **按领域知识选路线**：生成式方法要求模型假设准确（需强领域知识背书，EM 求解）；半监督 SVM 押注"低密度分隔"；基于分歧的方法对模型假设最宽容——分歧才是本质，多视图只是产生分歧的渠道之一（不同算法/采样/参数皆可）；图方法概念清晰但撞 O(m²) 存储墙，且天生直推（封闭世界，新样本要重构图或另补预测器）。

最后的安全阀：永远保留纯监督基线对照——加了未标记数据后在同一验证协议下不升反降，立即回退并按病灶定位排查。"安全半监督"至今仍是未决问题，所以对照纪律不是可选的礼貌，是唯一的防线。

---

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

### 案例 1: 瓜田问瓜——主动学习 vs 半监督的三岔口 (c32)
- **问题**: 丰收季来到瓜田，瓜农只抱来三四个好瓜、指着五六个说还需再生长些时日——不到十个带标记的瓜训练分类器太少，地里满地的未标记瓜能不能用上？
- **方法论的使用**: 作者把"用未标记瓜"拆成三条路逐一辨析：(1) 让模型先训一个、自己挑"对改善性能帮助最大"的瓜去问瓜农，问完加进训练集重训再挑——这是主动学习，花查询成本买专家信息；(2) 不与任何专家交互，直接利用未标记瓜携带的分布信息——这是半监督。直观演示：待判别瓜恰好位于一正一反两个标注瓜的正中间，只能瞎猜；但观察到周围未标记瓜聚出的簇后，可有把握判为正类（聚类假设落地）。(3) 请瓜农把地里全部瓜标完再用——耗费大量人力物力，被否定。
- **结论**: 未标记样本虽无标记，却在"与有标记样本同分布"的前提下揭示了数据分布结构，可在标记稀缺时大幅助力建模；医学影像（影像海量、请专家全标病灶不现实）与网页推荐（极少用户愿花时间打标、互联网网页近乎无限）是同一结构的两个现实映射。
- **结果**: 该开篇场景成为半监督章的公理级示例，同时埋下反面伏笔——桥梁假设不成立时未标记数据会反噬（见 B 段 x45）。

---

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

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

1. 用户手里只有几百条（甚至几十条）标注，但还有几万/几十万条同源未标注数据，问"这些未标注的能不能拿来训练"。
2. 用户实现了 self-training / pseudo-label 流程，加入未标注数据后验证集反而掉点，来问"为什么会越加越差"。
3. 用户分不清主动学习、半监督、直推学习、自监督的边界，纠结该往哪个方向投入标注预算。
4. 用户想做协同训练/多视图学习，问双视图前提是否满足，或者两个"视图"其实是高度相关的特征切块。
5. 医学影像、网页分类、语音、异常检测等"标注贵、数据贱"领域的方案讨论。

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

- "**只有几百条**标注" / "标注太**贵**了" / "**未标注**数据怎么用" / "unlabeled data"
- "**pseudo-label**" / "**self-training** 风险" / "伪标记" / "加了大量无标注样本反而**掉点**"
- "**semi-supervised**" / "半监督" / "**协同训练**" / "co-training" / "multi-view 多视图"
- "TSVM" / "label propagation **标签传播**" / "主动学习和半监督有什么**区别**"

### 与相邻 skill 的区分

- 与 `ml-task-matching` 的区别: 那是训练前的通用选型（还没定范式）；本 skill 只管"已确定要走利用未标记数据这条路之后"的资格审查与路线选择。问"用什么模型"→ 选型；问"没标签怎么办/未标注能不能用"→ 本 skill。
- 与 `ml-bayesian-thinking` 的区别: 生成式半监督的底层机制（混合模型假设、EM 迭代、分布假设审查纪律）在那边展开；本 skill 管的是"何时敢用生成式半监督"的决策与安全对照，不重复推导。
- 与 `ml-ensemble-design` 的区别: 基于分歧的方法与集成共享"制造多样性"的手艺（不同算法/采样/参数），但目的不同——集成用分歧降方差提精度，半监督用分歧消化未标记数据。用户目标是"利用无标签"→ 本 skill；"提升有标签任务的鲁棒性"→ ensemble。
- 与 `ml-imbalanced-learning` 的区别: TSVM 标记指派过程中会出现伪标记类别不平衡（书中专门给出 Cu 拆分修正），不平衡的处理细节在那边；本 skill 只负责提醒这道坎的存在。

---

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

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

1. **资格线一：标记数据真的不够吗**
   - 拿监督基线说话：仅有标注数据训练的模型，其验证性能距业务要求差多少？学习曲线是否还在随标注量上升？
   - 完成标准: 给出"监督基线现状 + 差距量化"的一句话结论。
   - **判停条件**: 若监督基线已达标且曲线趋平 → 停止，直接监督学习，不引入额外假设风险。

2. **资格线二：未标注与标注同源吗**
   - 审查两者的采集渠道、时间窗、预处理管线是否一致；必要时做分布对比（特征统计量/漂移检验）。
   - 完成标准: 给出"同分布 / 异分布 / 存疑"三选一的判定与证据。
   - **判停条件**: 若明显异源 → 纯半监督收益存疑，改道主动学习（挑样本去标注）或域适应，并向用户说明原因。

3. **桥梁假设验证**
   - 对数据做可视化/统计检查：是否存在簇结构（聚类假设）？低维邻域结构（流形假设）？类别间是否低密度分隔（S3VM 前提）？
   - 完成标准: 至少一项与所选路线对应的假设证据（图或统计量），或明确承认"无法验证，风险自担"。

4. **路线选型**
   - 按领域知识与技术约束四选一：生成式（有可靠领域知识支撑模型假设、标注极少时往往最好）/ S3VM-TSVM（低密度分隔成立、二分类、能承受迭代求解开销）/ 基于分歧（有多视图或能造分歧——算法/采样/参数差异皆可，最稳健）/ 图传播（样本量可控、可接受直推式封闭世界设定）。
   - 完成标准: 写出所选路线 + 一句"为什么不是另外三条"。

5. **安全性检查（强制，不可跳过）**
   - 保留纯监督基线；加入未标记数据的每个版本都在同一验证协议下与基线对比。
   - 完成标准: 输出"基线 vs 半监督"的同协议对照数字。
   - **判停条件**: 若性能不升反降 → 立即回退基线，按病灶定位排查（生成式→模型假设不准；半监督 SVM→多个低密度划分中被做了不利选择），排查无效则放弃半监督路线并如实告知"safe 半监督尚无通解"。

6. **工程纪律交付**
   - 伪标记置信度阈值与挑选数量上限、迭代轮数上限、类别平衡保护（参照 TSVM 的 Cu 拆分思路）、self-training 无纠错机制的固有风险书面提示。
   - 完成标准: 交付说明包含上述四项配置及其理由。

---

## B — 边界 (Boundary) ★

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

- 标注数据充足、监督学习已经好用：引入半监督是净增风险（多一层桥梁假设），没有收益就没有理由。
- 未标注数据与标注数据明显异源（不同采集设备/不同用户群/不同时间段且已漂移）：桥梁假设从地基上就不成立。
- 需要对训练时未见的新样本持续预测、却选了图半监督：该方法接新样本要么重构全图重传播、要么另训一个预测器——封闭世界假设与开放世界需求冲突。

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

- **模型假设不准，未标记数据反倒降低泛化性能（x45）**: 生成式方法的命门——假设的生成模型与真实分布不吻合时，海量未标记数据会把模型拽向错误结构；各方法病灶各异（生成式→假设不准；S3VM→多低密度划分的不利选择，S4VM 以最坏情形优化补救）；"更一般的 safe 半监督学习仍是一个未决问题"。
- **协同训练的苛刻前提（x46）**: 经典 co-training 要求两个"充分且条件独立"的视图；数据只有一个视图（或两视图高度相关）时硬上，两个分类器互相喂的是同样的偏见，错误滚雪球。推广口径记牢：分歧才是本质，视图只是渠道——无多视图时可用不同算法/数据采样/参数设置制造分歧，但当标注极少又不具多视图时，生成分歧学习器本身"并不容易，需有巧妙的设计"。
- **self-training 的原始性（习题 13.8 点名）**: 自己教自己的闭环没有外部纠错信号，早期错误伪标记会被自我强化——它是理解半监督的反面教具，不是默认首选。
- **图方法的两大硬伤**: 亲和矩阵 O(m²) 存储开销难以规模化；构图仅覆盖训练样本，新样本"难以判知其在图中的位置"。

### 作者的盲点 / 时代局限 (2016 成书)

- 深度半监督缺位：consistency regularization、FixMatch 类方法、以及最重要的"自监督预训练 + 少量标注微调"范式均未出现；当代实践中后者常优先于经典半监督——本 skill 决策树之外应先问"能否用自监督预训练吃掉无标签数据"。
- i.i.d. 假设贯穿全书，"未标注与标注同分布"这一前提在真实数据管道中最常被打破（时间漂移、采样偏差），使用时应主动做漂移检查而非默认成立。
- 书中实验尺度以 UCI 级数据为主，百万级未标注样本下各方法的工程可行性（尤其图方法）需另行评估。

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

- **主动学习**: 引入专家交互、把未标记样本转变为有标记样本，花的是查询预算；半监督不与专家交互、"自动地"利用分布信息。两者可组合但目标函数不同。
- **自监督学习**: 不靠人工标签、从数据自身构造监督信号（预训练表示）；产出是表示而非直接分类器，与半监督"少标签直接提泛化"是两条互补路线。
- **迁移/域适应**: 借用的是其他域/任务的标注知识，跨域正是其研究对象；半监督恰恰要求同分布，前提相反。
- **无监督聚类**: 完全不用标签；半监督的一切价值都来自"少量标签锚定了簇与类别的对应关系"。

---

## 相关 skills

- contrasts-with: ml-task-matching（通用选型 vs 半监督专项资格审查）
- composes-with: ml-bayesian-thinking（生成式路线的 EM/分布假设纪律）, ml-ensemble-design（分歧制造手艺同源、目的不同）, ml-imbalanced-learning（TSVM 伪标记类别不平衡的处置）

---

## 审计信息

- **验证通过**: x45 ✓ / c32 ✓ (阶段1.5 三重验证 PASS)；本 skill 属扩充批A·第2组新增（覆盖 ch13），R 引文已逐字核对章节文本
- **测试通过率**: 待阶段 3 测试 (详见 test-prompts.json)
- **skill_version**: 0.0.1
- **蒸馏时间**: 2026-08-24

