PU --- > 无偏PU learning简介

PU learning是一种在仅有正样本和未标注样本的情况下进行分类学习的方法,常见于检索、异常检测等领域。本文介绍了PU learning的背景、分类,重点讨论了无偏PU learning(uPU learning)和nnPU learning,探讨了它们的风险函数、优化问题和过拟合的解决策略,并提及正样本比例πp的估计方法。实验展示了在特定数据集上的应用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PU learning

背景

PU learning(positive-unlabeled learning),即我们只有正样本和未标注的样本,以此进行分类学习。
其可在以下几个领域内应用:

  1. 检索
    从大量无标注的样本中选取特定的样本,比如人脸标注
  2. 异常检测
    包括inlier-based outlier 检测
  3. 序列数据检测
    负样本的分布随着时间改变,这样传统的分类将不再适合,PU 只需要更新未标注样本,这样的花销更小,比如垃圾邮件检测,由于存在对抗,负样本(垃圾邮件)的形式一直在变,而非垃圾则一般相对稳定状态。
    本文介绍了最近pu learning的几个研究进展。

PU 分类

目前 PU的方法可分为两类;

  • 第一类方法
    也称为两步法:从unlabeled 数据识别出有效的负样本,然后利用正负样本训练分类器。
  • 第二类方法
    全部将未标注的样本作为负样本训练,同时将负样本的赋予一个较小的权重值。

然而,第一类方法在识别有效负样本时比较依赖于经验,需要对相关的业务背景有良好的理解;第二类方法则依赖于未标注样本权重的设置,并且如果loss函数不合适,将存在biased误差。在第二类方法中,为了改进目前学习存在偏差的问题,无偏 PU learning被引入。

uPU learning

我们有一个正的数据集χ\chiχ,一个未标注数据集χ′\chi'χ,即
χ:={ xi}i=1n =p(x∣y=1)χ′:={ xj′}j=1n′ =p(x)p(x):=πp(x∣y=1)+(1−π)p(x∣y=−1)\chi:=\{x_i\}_{i=1}^n ~=p(x|y=1)\\ \chi':=\{x_j'\}_{j=1}^{n'}~=p(x)\\ p(x):=\pi p(x|y=1)+(1-\pi)p(x|y=-1)χ:={ xi}i=1n =p(xy=1)χ:={ xj}j=1n =p(x)p(x):=πp(xy=1)+(1π)p(xy=1)
其中π\piπ是unlabel样本中正样本的比例,为超参数。
对于普通的分类
R^pn(g)=πpR^p++πnR^n−(g)−−−−−(1)\hat R_{pn}(g)=\pi_p\hat R_p^{+} + \pi_n \hat R_n^{-}(g) -----(1)R^pn(g)=πpR^p++πnR^n(g)(1)

风险函数
Ru−(g)=1n−∑x=1n−l(g(xi),−1)=∑xp(x)l(g(xi),−1)=∑xp(y=1)p(x∣y=1)l(g(xi),−1)+∑xp(y=−1)p(x∣y=−1)l(g(xi),−1)=πp∑xp(x∣y=1)l(g(xi),−1)+(1−πp)∑xp(x∣y=−1)l(g(xi),−1)=πp∑xpp(x)l(g(x(xi),−1))+(1−πp)∑xnp(x)l(g(xi),−1)=πpRp−+(1−πp)Rn− R_u^-(g)=\frac{1}{n^-}\sum^{n^-}_{x=1}l(g(x_i),-1)\\ =\sum_xp(x)l(g(x_i),-1)\\ =\sum_xp(y=1)p(x|y=1)l(g(x_i),-1)+\sum_xp(y=-1)p(x|y=-1)l(g(x_i),-1)\\ =\pi_p \sum_x p(x|y=1)l(g(x_i),-1) + (1-\pi_p)\sum_xp(x|y=-1)l(g(x_i),-1)\\ =\pi_p\sum_{x_p}p(x)l(g(x(x_i),-1)) + (1-\pi_p)\sum_{x_n}p(x)l(g(x_i),-1)\\ =\pi_pR_p^{-} + (1-\pi_p)R_n^{-} Ru(g)=n1x=1nl(g(xi

### PU-GCN 的背景与实现 PU-GCN 是一种基于图卷积网络 (Graph Convolutional Networks, GCNs) 的模型,主要应用于部分标记数据集上的半监督学习任务。该模型的核心思想在于通过正样本和未标注样本之间的关系来优化分类性能。以下是关于 PU-GCN 的具体介绍及其可能的实现方式。 #### 1. PU-GCN 的理论基础 PU 学习(Positive-Unlabeled Learning)是一种特殊的机器学习范式,专注于仅利用正样本和未标注样本来训练模型。在图结构的数据上应用 PU 学习时,PU-GCN 利用了图卷积操作的强大能力来捕捉节点间的复杂依赖关系[^1]。这种设计使得 PU-GCN 能够有效处理稀疏标签的情况,并提升预测精度。 #### 2. 模型架构概述 PU-GCN 结合了双流机制(Two-Stream Mechanism),分别针对正样本和未标注样本构建独立的特征提取路径。这一设计借鉴了两流自适应图卷积网络的思想[^2],从而增强了模型对于不同类别分布的学习能力。具体来说: - **正样本流**:负责捕获已知正样本的关键属性; - **未标注样本流**:用于探索潜在负样本的信息并减少误分类风险。 两者的结果最终会被融合到一起以形成全局表示[^3]。 #### 3. 实现细节 为了实现上述功能,在实际编码过程中可以采用如下策略: - 使用 TensorFlow 或 PyTorch 构建基本框架; - 定义两个平行的 GCN 层作为各自输入类型的处理器; - 应用注意力机制调整两条分支的重要性权重; 下面给出一段简单的 Python 示例代码展示如何初始化这样的一个神经网络结构: ```python import torch import torch.nn as nn from torch_geometric.nn import GCNConv class PUGCN(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(PUGCN, self).__init__() # Define two separate streams of GCN layers. self.positive_stream = nn.Sequential( GCNConv(input_dim, hidden_dim), nn.ReLU(), GCNConv(hidden_dim, output_dim) ) self.unlabeled_stream = nn.Sequential( GCNConv(input_dim, hidden_dim), nn.ReLU(), GCNConv(hidden_dim, output_dim) ) def forward(self, positive_x, unlabeled_x, edge_index_positive, edge_index_unlabeled): pos_out = self.positive_stream((positive_x, edge_index_positive)) unlb_out = self.unlabeled_stream((unlabeled_x, edge_index_unlabeled)) return pos_out, unlb_out ``` 此段代码定义了一个具有双重输入通道的基础版本 PU-GCN 类[^4]。 #### 4. 数据准备注意事项 当使用 ind.dataset_str.y 这样的变量加载训练实例标签时,请注意其形式应为 NumPy 数组中的独热编码向量。这有助于后续计算过程顺利进行以及提高兼容性。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值