返回目录
公开知识笔记 · 不进入目录

正例-未标注学习PU Learning

公开知识笔记

正例-未标注学习PU Learning

一句话理解:当数据只有“确认的正例”和“大量不知道真假的未标注项”时,不应把所有未标注项直接当负例;这类学习问题叫PU Learning。

1. 与普通二分类的区别

普通监督学习假设训练集有可靠正例PP和可靠负例NN。PU学习只有:

  • PP:已确认的正例;
  • UU:未标注集合,其中混有真实负例和漏标正例。

在SIDER矩阵中,1—5级是有记录关联,0是未记录项。0并不等于已证实无关联,所以更接近UU而不是NN。

2. 为什么“全当负例”有问题

若一个真实但尚未记录的药物—副作用组合被当负例:

  1. 训练会惩罚模型给它高分;
  2. 测试也会把它算成假阳性;
  3. 数据库越不完整,偏差越严重。

这在药物安全发现任务中特别矛盾:模型本来就是为了发现尚未记录的风险,却可能因发现它而被扣分。

3. 常见处理思路

方案A:未标注项降权

不完全信任UU,给它较小损失权重。A3Net的第二项损失乘α=0.03\alpha=0.03,属于类似思路,但它仍把所有未知预测拉向固定基线0.5。

方案B:估计类别先验

估计未标注集合中正例比例,再构造无偏或非负风险估计。它需要关于正例被标注机制的假设。

方案C:可靠负例挖掘

从UU中选出最不可能为正的样本作为临时负例,再迭代训练。风险是早期误判会被放大。

方案D:正负样本敏感性分析

改变未知项权重、负采样比例或评估负例定义,检查结论是否稳健。这是复现A3Net时最容易先做的改进。

4. A3Net里的两个具体风险

  1. warm start留出的已知正例被置0后,仍进入未知项损失并被拉向0.5;这不是读取真实标签的直接泄漏,但测试正例以弱负/未知身份参与了训练目标。
  2. 计算AUC时把原始0当负例,可能把漏标正例当成假阳性。

5. PU学习不能自动解决什么

PU方法仍依赖数据收集机制。若药品说明书更倾向报告严重或常见副作用,已标注正例不是随机抽样,简单PU假设也可能失效。外部数据库验证、时间切分和人工核验仍然重要。

6. 初学者检查清单

  • 数据里的0到底表示什么?
  • 是否存在可靠负样本?
  • 未标注项如何进入损失?
  • AUC的“负例”从哪里来?
  • 换一种未知项权重,结论是否改变?

相关概念

相关论文

  • A3Net精读笔记(A3Net)