半监督学习与新类别发现
半监督学习与新类别发现
深入理解半监督学习和新类别发现的概念,掌握在低标签数据场景下的模型改进方法。从第一性原理出发,理解为什么需要半监督学习,以及如何通过聚类发现新类别。
目录
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=1 | x),即给定特征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 特征一致性保证
重要性:
- 聚类结果依赖于特征
- 特征不一致 → 聚类结果无意义
措施:
- 使用相同的特征定义
- 确保特征提取的一致性
总结
本文深入介绍了半监督学习和新类别发现的核心概念和方法。关键要点:
- 半监督学习的本质:利用无标签数据改进模型性能
- 新类别发现:在已知类别基础上发现新类别
- 置信度分析:识别模型的不确定性,发现潜在新类别
- 聚类分析:DBSCAN适合新类别发现(自动确定类别数、支持任意形状、识别噪声)
- 实践要点:置信度阈值设置、聚类参数选择、人工审核重要性
通过新类别发现,我们可以:
- 发现未知的类别
- 扩展模型的识别能力
- 持续改进模型性能
- 适应业务需求的变化
