文章

半监督学习与新类别发现

半监督学习与新类别发现

半监督学习与新类别发现

深入理解半监督学习和新类别发现的概念,掌握在低标签数据场景下的模型改进方法。从第一性原理出发,理解为什么需要半监督学习,以及如何通过聚类发现新类别。

目录

  1. 半监督学习概述
  2. 半监督学习的典型方法
  3. 新类别发现(Novel Class Discovery)
  4. 置信度分析
  5. 聚类分析在新类别发现中的应用
  6. 新类别发现的实际应用
  7. 半监督学习 vs 新类别发现
  8. 实践要点与注意事项

1. 半监督学习概述

1.1 什么是半监督学习?

定义

半监督学习(Semi-Supervised Learning)

  • 使用少量有标签数据 + 大量无标签数据来训练模型
  • 目标是利用无标签数据直接改进模型的性能
  • 核心思想:无标签数据包含数据分布信息,可以帮助模型学习更好的表示

与监督学习、无监督学习的区别

学习类型数据目标方法
监督学习全部有标签学习输入到输出的映射分类、回归
无监督学习全部无标签发现数据中的模式聚类、降维
半监督学习少量有标签 + 大量无标签利用无标签数据改进模型自训练、协同训练等

可视化理解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
监督学习:
    有标签数据(1000个)
        ↓
    训练模型
        ↓
    预测新数据

无监督学习:
    无标签数据(10000个)
        ↓
    聚类/降维
        ↓
    发现模式

半监督学习:
    有标签数据(100个)+ 无标签数据(10000个)
        ↓
    利用无标签数据改进模型
        ↓
    更好的预测性能

1.2 为什么需要半监督学习?

数据标注成本高

问题:标注数据需要专家,成本高、耗时长。

例子

1
2
3
4
5
医学影像诊断:
    有标签数据:1000张(专家标注,成本高)
    无标签数据:10万张(未标注,成本低)
    ↓
    目标:利用10万张无标签数据提升模型性能

数据获取容易,但标注困难

问题:数据容易获取,但标注需要人工或专业知识。

例子

1
2
3
4
5
网页分类:
    有标签数据:1000个网页(已分类)
    无标签数据:100万个网页(未分类)
    ↓
    目标:利用100万个无标签网页提升分类性能

数据持续产生,但标注滞后

问题:新数据不断产生,但标注跟不上。

例子

1
2
3
4
5
实时数据流:
    有标签数据:历史标注数据(1000条)
    无标签数据:每日新增数据(10000条/天)
    ↓
    目标:利用新增的无标签数据持续改进模型

标注数据不平衡

问题:某些类别样本少,难以学习。

例子

1
2
3
4
5
异常检测:
    有标签数据:1000个正常样本 + 10个异常样本(不平衡)
    无标签数据:10万个样本(可能包含更多异常)
    ↓
    目标:利用无标签数据发现更多异常模式

1.3 半监督学习的核心思想

核心思想:无标签数据包含数据分布信息,可以帮助模型学习更好的表示。

本质

1
2
3
4
5
6
7
8
9
10
11
12
13
14
有标签数据:
    - 提供"正确答案"(监督信号)
    - 告诉模型"什么是正确的"
    ↓
无标签数据:
    - 提供数据分布信息
    - 帮助模型学习更好的表示
    - 发现数据中的模式
    ↓
结合使用:
    - 有标签数据指导学习方向
    - 无标签数据扩展学习范围
    ↓
    更好的模型性能

2. 半监督学习的典型方法

2.1 自训练(Self-Training)

原理

核心思想:用模型的高置信度预测作为伪标签,扩展训练集。

流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
步骤1:用有标签数据训练初始模型
    有标签数据(1000个)
        ↓
    训练模型
        ↓
    初始模型

步骤2:用模型预测无标签数据
    无标签数据(10000个)
        ↓
    模型预测
        ↓
    预测结果 + 置信度

步骤3:选择高置信度的预测作为伪标签
    置信度 > 0.9 的预测
        ↓
    作为伪标签

步骤4:合并数据重新训练
    有标签数据(1000个)+ 伪标签数据(2000个)
        ↓
    重新训练模型
        ↓
    更好的模型

步骤5:重复步骤2-4
    迭代优化

优缺点

优点

  • 简单易实现
  • 可以利用大量无标签数据

缺点

  • 如果伪标签质量差,可能引入噪声
  • 错误可能累积(错误的伪标签导致更错误的模型)

2.2 协同训练(Co-Training)

原理

核心思想:训练两个不同的模型,互相提供训练样本。

流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
步骤1:训练两个模型(使用不同特征)
    模型A:使用特征集1
    模型B:使用特征集2
    ↓
    两个不同的模型

步骤2:模型A预测无标签数据
    选择高置信度样本
        ↓
    加入模型B的训练集

步骤3:模型B预测无标签数据
    选择高置信度样本
        ↓
    加入模型A的训练集

步骤4:重复步骤2-3
    两个模型互相提供训练样本

适用场景

  • 有两个不同的特征视图
  • 两个模型可以互补

2.3 基于图的方法

原理

核心思想:构建样本相似度图,标签在图上传播。

流程

1
2
3
4
5
6
7
8
9
10
11
12
步骤1:构建样本相似度图
    计算样本之间的相似度
        ↓
    构建图(节点=样本,边=相似度)

步骤2:标签传播
    有标签样本的标签在图上传播
        ↓
    相似的无标签样本获得标签

步骤3:训练最终模型
    使用传播后的标签训练模型

适用场景

  • 样本之间有明显的相似关系
  • 可以构建有效的相似度图

2.4 生成式方法

原理

核心思想:假设数据由生成模型产生,用有标签+无标签数据估计参数。

流程

1
2
3
4
5
6
7
8
步骤1:假设数据由生成模型产生
    例如:高斯混合模型
    ↓
步骤2:用有标签+无标签数据估计参数
    估计生成模型的参数
    ↓
步骤3:基于生成模型进行分类
    使用生成模型进行分类

适用场景

  • 数据分布已知或可假设
  • 生成模型适合数据

3. 新类别发现(Novel Class Discovery)

3.1 什么是新类别发现?

定义

新类别发现:在已知类别模型的基础上,发现未知的新类别。

与标准半监督学习的区别

维度标准半监督学习新类别发现
目标改进已知类别性能发现新类别
方法伪标签训练聚类分析
数据有标签+无标签已知类别模型+无标签

核心区别

1
2
3
4
5
6
7
8
9
10
11
标准半监督学习:
    目标:改进已知类别的性能
    方法:用无标签数据扩展训练集
    ↓
    仍然是已知类别

新类别发现:
    目标:发现未知的新类别
    方法:聚类分析不确定样本
    ↓
    发现新的类别

3.2 新类别发现的核心流程

完整流程

1
2
3
4
5
6
7
8
9
10
11
12
13
已知类别模型
    ↓
预测无标签数据
    ↓
置信度分析
    ↓
不确定样本聚类
    ↓
人工审核
    ↓
新类别标注
    ↓
扩展模型(训练新类别模型)

详细步骤

步骤1:预测无标签数据

1
2
3
4
5
无标签数据(10000个)
    ↓
已知类别模型预测
    ↓
预测结果 + 置信度

步骤2:置信度分析

1
2
3
4
5
6
7
8
9
10
11
高置信度样本(≥ 0.8):
    - 模型很确定
    - 可能属于已知类别
    ↓
中间置信度样本(0.5-0.8):
    - 模型不确定
    - 可能属于新类别
    ↓
低置信度样本(< 0.5):
    - 模型很不确定
    - 可能属于新类别或异常

步骤3:不确定样本聚类

1
2
3
4
5
不确定样本(中间+低置信度)
    ↓
聚类分析(DBSCAN)
    ↓
发现潜在的新类别簇

步骤4:人工审核

1
2
3
4
5
聚类结果
    ↓
人工审核
    ↓
确认新类别

步骤5:新类别标注

1
2
3
4
5
确认的新类别
    ↓
标注数据
    ↓
训练新类别模型

3.3 为什么需要新类别发现?

业务需求

问题:数据中可能存在未知的风险类型。

例子

1
2
3
4
5
6
7
已知类别:
    - 类别1
    - 类别2
    ↓
新数据中可能包含:
    - 新的类别(未知)
    - 需要发现并标注

模型局限性

问题:模型只能识别已知类别,无法识别新类别。

解决:通过聚类发现新类别,然后训练新类别模型。


4. 置信度分析

4.1 置信度的本质

什么是置信度?

定义:模型对预测结果的”确信程度”。

技术定义:预测概率值(如0.8表示80%概率属于正类)。

本质含义:模型在训练数据上学到的模式,在当前样本上的匹配程度。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
样本A:
    预测概率 = 0.95
    ↓
    含义:模型95%确定样本A属于正类
    ↓
    置信度高 ✅

样本B:
    预测概率 = 0.55
    ↓
    含义:模型55%确定样本B属于正类
    ↓
    置信度低 ⚠️

为什么需要置信度?

目的1:识别模型的不确定性

问题:模型在哪些样本上不确定?

应用:优先处理不确定样本。

目的2:质量控制

问题:只有高置信度的预测才值得信任。

应用:只使用高置信度预测进行决策。

目的3:主动学习

问题:优先标注哪些样本?

应用:优先标注模型不确定的样本。

目的4:新类别发现

问题:不确定的样本可能属于未知类别。

应用:对不确定样本进行聚类分析。

4.2 置信度的数学本质

概率输出的含义

二分类模型输出:P(y=1x),即给定特征x,样本属于正类的概率。

概率接近0或1:模型很确定(学到了清晰的决策边界)

例子

1
2
3
4
5
6
7
概率 = 0.95:
    - 模型很确定样本属于正类
    - 样本远离决策边界(在正类区域的核心)

概率 = 0.05:
    - 模型很确定样本属于负类
    - 样本远离决策边界(在负类区域的核心)

概率接近0.5:模型很不确定(样本接近决策边界)

例子

1
2
3
概率 = 0.52:
    - 模型不确定样本属于哪一类
    - 样本接近决策边界(在模糊区域)

4.3 样本分类的理论基础

高置信度样本(≥ 0.8):模型非常确定

为什么模型确定?

  • 样本的特征与训练数据中的正类样本高度相似
  • 样本远离决策边界(在决策空间的”核心区域”)

可能的含义

  • 真正属于已知类别(正确预测)
  • 训练数据中常见模式(模型见过的)

处理策略

  • 暂时保留(未来可能用于伪标签训练)
  • 不立即使用(需要人工验证)

中间置信度样本(0.5-0.8):模型有一定把握

为什么不确定?

  • 样本特征介于正负类之间
  • 样本接近决策边界(在”模糊区域”)

可能的含义

  • 边界样本(属于已知类别但特征不典型)
  • 可能属于新类别(模式与已知类别部分相似)

处理策略

  • 进行聚类分析
  • 发现潜在的新类别

低置信度样本(< 0.5):模型非常不确定

为什么不确定?

  • 样本的特征与训练数据中的任何类别都不太相似
  • 样本远离所有已知类别的决策边界

可能的含义

  • 异常值(噪声、数据错误)
  • 新类别(模式完全不同于已知类别)
  • 特征缺失或错误(数据质量问题)

处理策略

  • 进行聚类分析
  • 识别异常值和新类别

4.4 置信度分析的局限性

模型的置信度可能不准确

校准问题:模型输出的概率可能不是”真实概率”。

例子

1
2
3
4
5
模型输出概率 = 0.9
    ↓
    但实际准确率只有0.7
    ↓
    模型过于自信

如何改善?

  • 概率校准(Platt Scaling、Isotonic Regression)
  • 使用校准集调整概率输出

置信度依赖于训练数据

问题:如果训练数据有偏,置信度也会有偏。

例子

1
2
3
4
5
训练数据中某个类别样本多
    ↓
    模型对这类样本更"自信"
    ↓
    置信度有偏

特征质量影响置信度

问题:特征不好 → 模型学不到有效模式 → 所有样本的置信度都低。

解决:优化特征工程。


5. 聚类分析在新类别发现中的应用

5.1 聚类的本质:无监督学习的核心

什么是聚类?

定义:将相似的样本归为一组,不相似的样本分开。

本质:基于相似性的数据分组,无需标签。

例子

1
2
3
4
5
6
7
8
样本集合:
    样本1, 样本2, 样本3, 样本4, 样本5
    ↓
聚类分析
    ↓
簇1:样本1, 样本2(相似)
簇2:样本3, 样本4(相似)
噪声:样本5(不相似)

为什么需要聚类?

目的1:发现隐藏模式

问题:数据中可能存在的自然分组。

应用:理解数据的内部结构。

目的2:数据探索

问题:理解数据的分布。

应用:发现数据中的模式。

目的3:新类别发现

问题:识别不属于已知类别的样本群体。

应用:对不确定样本进行聚类,发现新类别。

聚类与分类的根本区别

维度分类(有监督)聚类(无监督)
数据有标签无标签
目标学习标签到样本的映射发现数据的内在结构
本质学习已知发现未知

5.2 聚类算法的基本原理

相似性的本质

定义:如何定义”相似”?

方法:距离度量(欧氏距离、余弦距离等)。

本质:相似性 = 空间中的”接近程度”。

关键问题:在特征空间中,相似的特征向量应该接近。

例子

1
2
3
4
5
6
7
特征空间(2维):
    样本A:(1, 2)
    样本B:(1.1, 2.1)
    样本C:(10, 20)
    ↓
    样本A和B接近 → 相似
    样本A和C远离 → 不相似

聚类的基本假设

假设1:簇内相似性高

  • 同一簇内的样本特征相似

假设2:簇间相似性低

  • 不同簇的样本特征不同

本质:数据在特征空间中形成”密集区域”。

5.3 为什么选择 DBSCAN?

K-Means 的本质与局限

核心思想:假设簇是球形的、大小相似的。

局限1:需要预先指定K(类别数)

问题:我们不知道有多少新类别。

局限2:只能发现凸形簇(球形)

问题:新类别可能是不规则形状。

局限3:对噪声敏感

问题:不确定样本中可能包含噪声。

结论:不适合新类别发现。

层次聚类的本质与局限

核心思想:逐步合并或分裂簇。

局限1:计算复杂度高(O(n³))

问题:效率低。

局限2:需要确定切割点(决定类别数)

问题:仍需要确定类别数。

结论:不适合新类别发现。

DBSCAN 的本质优势

核心思想:基于密度的聚类。

关键洞察:簇是”高密度区域”,噪声是”低密度区域”。

优势1:自动确定类别数(不需要预设K)

优势2:能发现任意形状的簇(不限于球形)

优势3:能识别噪声点(离群点)

为什么适合新类别发现?

  • 我们不知道有多少新类别 → DBSCAN自动发现
  • 新类别可能是不规则形状 → DBSCAN支持任意形状
  • 噪声样本需要过滤 → DBSCAN能识别噪声

5.4 DBSCAN 算法的深入理解

核心参数的含义

参数1:eps(邻域半径)

定义:判断两个点是否”接近”的距离阈值。

本质:定义了”密度”的尺度。

如何选择?

  • 太小 → 所有点都是噪声(无法形成簇)
  • 太大 → 所有点聚成一个簇(失去区分度)
  • 方法:K-距离图(找到”拐点”)

参数2:min_samples(最小样本数)

定义:形成一个簇所需的最小点数。

本质:定义了”密度”的最低标准。

如何选择?

  • 太小 → 噪声点也被认为是簇
  • 太大 → 小的真实簇被当作噪声
  • 方法:根据领域知识和数据规模设定

算法的核心步骤

步骤1:找到核心点

  • 邻域内点数 ≥ min_samples

步骤2:扩展簇

  • 从核心点出发,递归连接密度可达的点

步骤3:识别噪声

  • 不属于任何簇的点

本质:基于”密度连接”的图搜索。

5.5 聚类结果的处理

大聚类 vs 小聚类的本质区别

大聚类:样本数多,模式稳定,更可能是真实的新类别。

小聚类:样本数少,可能只是噪声或偶然模式。

本质:统计显著性(样本量越大,越不可能是偶然)。

处理策略的原理

大聚类:保存等待人工审核

原因

  • 可能包含重要的新类别模式
  • 人工审核的必要性:聚类只能发现”相似性”,无法判断”业务含义”

小聚类:直接删除(碎片化聚类)

原因

  • 样本量太小,统计不可靠,可能是噪声
  • 风险:可能误删真实的小类别
  • 权衡:宁愿漏掉小类别,也不让噪声干扰

噪声点:单独处理

原因

  • 这些点不属于任何已知或新发现的类别
  • 可能是异常值、数据错误、或极其罕见的样本

5.6 聚类在新类别发现中的局限性

聚类的假设不一定成立

假设:相似的样本属于同一类别。

:相似的样本可能属于不同类别(类别重叠)。

解决:需要人工审核,聚类只是”候选发现”。

特征选择的重要性

问题:聚类结果完全依赖于特征。

影响:特征不好 → 聚类无意义。

本质:特征定义了”相似性”的度量标准。

维度灾难的影响

问题:高维空间中,所有点都”稀疏”,难以形成密集区域。

解决:特征选择、降维(PCA、t-SNE)。


6. 新类别发现的实际应用

6.1 完整流程设计

流程

1
2
3
4
5
6
7
8
9
无标签数据导入
    ↓
模型预测与置信度分析
    ↓
不确定样本聚类
    ↓
人工审核与标注
    ↓
新类别模型训练

6.2 策略选择

增量聚类 vs 全量重新聚类

增量聚类

  • 只对新数据聚类
  • 优点:效率高
  • 缺点:可能遗漏历史数据中的模式

全量重新聚类

  • 对所有不确定样本重新聚类
  • 优点:发现完整模式
  • 缺点:计算成本高

手动触发 vs 自动触发

手动触发

  • 人工控制时机
  • 优点:可控
  • 缺点:可能遗漏

自动触发

  • 定期自动执行
  • 优点:及时发现
  • 缺点:可能频繁执行

6.3 特征更新机制

为什么需要更新特征?

原因:新数据可能包含新的特征模式。

时机:发现新类别后,可能需要更新特征。


7. 半监督学习 vs 新类别发现

7.1 核心区别对比

维度半监督学习新类别发现
目标改进已知类别性能发现新类别
方法伪标签训练聚类分析
数据有标签+无标签已知类别模型+无标签
应用提升模型性能发现未知模式

7.2 为什么项目选择新类别发现?

业务需求匹配

需求:发现未知的风险类型。

匹配:新类别发现适合这个需求。

更安全可控

优势

  • 不直接用无标签数据训练模型
  • 先聚类发现模式,人工审核后再使用
  • 避免伪标签带来的噪声

更适合当前场景

场景

  • 有已知类别模型
  • 有大量无标签数据
  • 需要发现新类别

匹配:新类别发现更适合。


8. 实践要点与注意事项

8.1 置信度阈值的设置

原则

  • 根据业务需求设置
  • 平衡精确率和召回率

建议

  • 高置信度阈值:0.8-0.9(用于伪标签)
  • 不确定阈值:0.5-0.8(用于聚类)

8.2 聚类参数的选择

eps(邻域半径)

  • 使用K-距离图找到拐点
  • 根据数据规模调整

min_samples(最小样本数)

  • 根据数据规模设定
  • 通常为3-5

8.3 人工审核的重要性

必要性

  • 聚类只能发现相似性,无法判断业务含义
  • 需要人工确认新类别的业务价值

流程

  • 聚类结果 → 人工审核 → 确认新类别 → 标注数据

8.4 特征一致性保证

重要性

  • 聚类结果依赖于特征
  • 特征不一致 → 聚类结果无意义

措施

  • 使用相同的特征定义
  • 确保特征提取的一致性

总结

本文深入介绍了半监督学习和新类别发现的核心概念和方法。关键要点:

  1. 半监督学习的本质:利用无标签数据改进模型性能
  2. 新类别发现:在已知类别基础上发现新类别
  3. 置信度分析:识别模型的不确定性,发现潜在新类别
  4. 聚类分析:DBSCAN适合新类别发现(自动确定类别数、支持任意形状、识别噪声)
  5. 实践要点:置信度阈值设置、聚类参数选择、人工审核重要性

通过新类别发现,我们可以:

  • 发现未知的类别
  • 扩展模型的识别能力
  • 持续改进模型性能
  • 适应业务需求的变化
本文由作者按照 CC BY 4.0 进行授权