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(x∣y=1)χ′:={xj′​}j=1n′​ =p(x)p(x):=πp(x∣y=1)+(1−π)p(x∣y=−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)=πp​R^p+​+πn​R^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)=n−1​x=1∑n−​l(g(xi​),−1)=x∑​p(x)l(g(xi​),−1)=x∑​p(y=1)p(x∣y=1)l(g(xi​),−1)+x∑​p(y=−1)p(x∣y=−1)l(g(xi​),−1)=πp​x∑​p(x∣y=1)l(g(xi​),−1)+(1−πp​)x∑​p(x∣y=−1)l(g(xi​),−1)=πp​xp​∑​p(x)l(g(x(xi​),−1))+(1−πp​)xn​∑​p(x)l(g(xi​),−1)=πp​Rp−​+(1−πp​)Rn−​

因此对于PU learning 其风险函数为
R^pu(g)=πpR^p+(g)−πpR^p−(g)+R^u−(g)−−−−−(2)\hat R_{pu}(g)=\pi_p \hat R_p^{+}(g) - \pi_p \hat R_p^{-}(g)+\hat R_u^{-}(g)----- (2)R^pu​(g)=πp​R^p+​(g)−πp​R^p−​(g)+R^u−​(g)−−−−−(2)
其中:R^p+(g)=(1/np)∑i=1npℓ(g(xip),+1)\hat R_p^{+} (g) = (1/{n_p})\sum \limits_{i = 1}^{{n_p}} \ell (g(x_i^p), + 1)R^p+​(g)=(1/np​)i=1∑np​​ℓ(g(xip​),+1) , R^u−(g)=(1/nu)∑i=1nuℓ(g(xiu),−1)\hat R_u^ - (g) = (1/{n_u})\sum \limits_{i = 1}^{{n_u}} \ell (g(x_i^u), - 1)R^u−​(g)=(1/nu​)i=1∑nu​​ℓ(g(xiu​),−1),R^p−(g)=(1/np)∑i=1npℓ(g(xip),−1)\hat R_p^{-} (g) = (1/{n_p})\sum \limits_{i = 1}^{{n_p}} \ell (g(x_i^p), -1)R^p−​(g)=(1/np​)i=1∑np​​ℓ(g(xip​),−1)

上式子的empirical risk estimators函数是无偏的。当损失函数满足一个对称条件时【Analysis of learning from positive and unlabeled data】:
l(t,+1)+l(t,−1)=1l(t,+1)+l(t,-1)=1l(t,+1)+l(t,−1)=1
我们会得到
R^pu(g)=2∗πpR^p(g(x),1)+R^u(g(x),−1)−πp−−−−−(3)\hat R_{pu}(g)=2*\pi_p\hat R_p(g(x), 1) + \hat R_u(g(x), -1) -\pi_p -----(3)R^pu​(g)=2∗πp​R^p​(g(x),1)+R^u​(g(x),−1)−πp​−−−−−(3)
这样能够通过普通的cost-sensitive learning得到分类器。并且,满足上述对称条件的R^pu\hat R_{pu}R^pu​一定是关于g非凸的。这样,不仅计算度增加,而且保证得到最优解。另外,满足上式子的损失函数有0-1损失函数,sigmoid函数等等。如果换成其他损失函数,最终的目标函数将比(3)式子多一误差项【1】,最终的求解出现偏差,该类方法中应用比较多的是biased SVM。

我们难道无法得到无偏的最优解了吗?是的,如果我们最终优化的目标函数是(3)。不过,我们可以退一步去做,直接去以(2)作为我们的目标函数。

在15年一篇工作中【1】,提出对P和U样本分别采用不同的损失函数:对U样本采用普通的凸损失函数l(z)l(z)l(z),对P样本采用复合损失函数l(z)−l(−z)l(z)-l(-z)l(z)−l(−z);如果复合损失函数同样是凸的,那么目标函数将能够凸优化,但是这种条件有限制:复合损失函数关于z必须是线性的,我们的决策函数z关于变量x也需要是线性的。

虽然终于找到一种即无偏差,又可得到最优解的方法,但决策函数的要求大大限制了该方法的应用。另外,如果使用这种方法,需要设计一些特别的损失函数,如下:

而对于一般的复杂的决策函数,尤其将深度学习应用其中,凸优化与无偏估计几乎不可兼得,而两者中,无偏估计更容易获取,只要我们从上式(2)中出发。
但是,我们发现,式(2)中有减号,这就有了一种可能,即R^u−(g)−πpR^p−(g)\hat R_u^{-}(g)-\pi_p \hat R_p^{-}(g)R^u−​(g)−πp​R^p−​(g)可能为负!

nnPU learning

由公式2可知,进行训练的时候,如果不加限制,“负样本”的目标函数可能为负,这将会导致过拟合,为了最优化,不切实际地将分类超平面远离正样本。为了降低过拟合,【2】提出Non-negative PU learning,即将公式(2)稍作改进:
R^pu(g)=πpR^p+(g)+max{0,R^u−(g)−πpR^p−(g)}\hat R_{pu}(g)=\pi_p\hat R_p^{+}(g) + max\{0,\hat R_u^{-}(g)-\pi_p\hat R_p^{-}(g)\}R^pu​(g)=πp​R^p+​(g)+max{0,R^u−​(g)−πp​R^p−​(g)}
在MNIST数据集中,利用多层神经网络结果如下:

最后,注意到,还有一个超参数 πp\pi_pπp​的选择,实验证明其选择的值比实际值高时,要优于比实际值低,即高估该值的效果更好;具体估计该值的方法,可参考【3】,具体如下:
如果知道未标注样本中正样本比例为θ\thetaθ,那么有
q′(x;θ)=θp(x∣y=1)+(1−θ)p(x∣y=−1)q'(x;\theta)=\theta p(x|y=1) + (1-\theta) p(x|y=-1)q′(x;θ)=θp(x∣y=1)+(1−θ)p(x∣y=−1)
进而求解,利用分布的相似度量f-散度,有θ:=arg⁡min⁡0≤θ≤1∫f(q′(x;θ)p(x))p(x)dx\theta :=\arg \,\min_{0\le\theta \le 1}\int f(\frac{q'(x;\theta)}{p(x)})p(x)dxθ:=arg0≤θ≤1min​∫f(p(x)q′(x;θ)​)p(x)dx

然而,我们并不知道正样本的比例,这时可以对原分布部分拟合
q(x;θ)=θp(x∣y=1)q(x;\theta)=\theta p(x|y=1)q(x;θ)=θp(x∣y=1)
然后求
θ:=arg⁡min⁡0≤θ≤1∫f(q(x;θ)p(x))p(x)dx\theta :=\arg \,\min_{0\le\theta \le 1}\int f(\frac{q(x;\theta)}{p(x)})p(x)dxθ:=arg0≤θ≤1min​∫f(p(x)q(x;θ)​)p(x)dx

由于缺失了负样本下x的分布信息,部分拟合将过高估计正例样本的比例。该文通过利用惩罚散度来避免负样本缺失造成的误差,对于各个散度的惩罚形式如下:

同时证明了L1−distanceL_1-distanceL1​−distance的惩罚形式能够有效简化估计过程,使得计算更加高效。

def nnpu_loss(self, y_true, y_pred):'''y_true: shape[batch_size, 2], 经过labelEncoder处理后的0,1矩阵,0类位于第一列,1类位于第二列,那么这里0类就是已知的标签数据,1类为unlabel数据。y_pred: shape[batch_size ,2], 模型预测的分类概率,这里我们以模型预测的第一类概率为准。'''print("============================== use nnpu_learning !!!! ===========================================")p = y_true[:, 0] * y_pred[:, 0]u = y_true[:, 1] * y_pred[:, 0]p_num = tf.where(K.sum(y_true[:, 0], axis=-1) == 0, 1.0, K.sum(y_true[:, 0], axis=-1))u_num = tf.where(K.sum(y_true[:, 1], axis=-1) == 0, 1.0, K.sum(y_true[:, 1], axis=-1))t = self.pi * K.sum(p*1, axis=-1)/p_numt2 = K.sum(-u, axis=-1)/u_num - self.pi *K.sum(-p, axis=-1)/p_numt3 = tf.where(t2 > 0.0, t2, 0.0)loss = t + t2return -loss

实验

将未标注数据全部作为negative样本训练随机森林

随机选取与positive等量negative 训练分类并对剩余样本预测,重复多次,将概率平均

PU learning

看出PU学习的更好,使用该方法的前提是,unlabeled样本中positive样本特征分布与已知的positive样本分布一致!

参考文献:
[1] Marthinus Christoffel du Plessis, Niu, G. & Masashi, S. Convex Formulation for Learning from Positive and Unlabeled Data. ICML (2015).
[2] Kiryo, R. & Niu, G. Positive-Unlabeled Learning with Non-Negative Risk Estimator. NIPS 11 (2017)
[3] du Plessis, M. C., Niu, G. & Sugiyama, M. Class-prior estimation for learning from positive and unlabeled data. Mach Learn 106, 463–492 (2017).
[4] du Plessis, M. C., Niu, G. & Sugiyama, M. Class-prior estimation for learning from positive and unlabeled data. Mach Learn 106, 463–492 (2017).

欢迎关注公众号:

PU --- 无偏PU learning简介相关推荐

  1. 无偏PU learning简介

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

  2. ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略

    ML之UL:无监督学习Unsupervised Learning的概念.应用.经典案例之详细攻略 目录 无监督学习Unsupervised Learning的概念 无监督学习Unsupervised ...

  3. LocaSpaceViewer:自定义图源与无偏影像下载

    LocaSpaceViewer:自定义图源与高清无偏影像下载 LocaSpaceViewer软件简介 LRC图源文件 图源:地图的索引文件 LRC图源文件结构简述 自定义LRC图源文件 LRC图源文件 ...

  4. Deep learning简介

    [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之:CNN卷积神经网络推导和实现 [4]Deep Learning模型之:CNN的反 ...

  5. python 标准差Std() 参数决定有偏或无偏

    numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1: pandas.std() 默认是除以n-1 的,即是无偏的,如果想和 ...

  6. 暗备用的运行状态_瞧:我利用“无偏二极管”发明设计出了【宇宙“暗物质”、“暗能量”探测器】...

    <瞧:我利用"无偏二极管"发明设计出了[宇宙"暗物质"."暗能量"探测器]> 楔子: 首先,我要在此留下"2020&q ...

  7. 注意numpy与pandas里std中的有偏和无偏

    numpy 中 std默认是有偏的 pandas 中std默认是无偏的 有偏:除 n 无偏:除n-1 都取决于ddof 这个参数 ddof = 1 # 无偏 ddof = 0 # 有偏

  8. 【直播预告】流行度偏差如何利用?探索解耦域适应无偏召回模型

    3月27日,19:00-20:00,大淘宝技术与DataFun联合策划了本次活动,邀请了大淘宝技术高级算法工程师陈智鸿老师,就无偏召回模型进行深度分享与交流,欢迎大家按时收看直播~ 反欺诈体系篇 分享 ...

  9. 关于火星坐标、偏移、加偏和纠偏、无偏的理解

    刚开始玩GPS,看到不少对GPS图纸偏移问题的认识存在误区,俺根据在轮坛看帖思考理解的有关内容,整理一下,希望对在这个问题上存在疑惑的朋友有所帮助. 1.偏移的起因:天朝测绘局以国家安全为理由,用法律 ...

最新文章

  1. 语音识别(ASR)评估指标-WER(字错误率)和SER(句错误率)
  2. 只因路由器密码太弱,IP被黑客利用发虐童图片,无辜夫妇:我们甚至想自杀...
  3. 「SAP技术」SAP MM 事务代码ME17的用法
  4. C# 写入和读出文本文件
  5. 在Foreda8上安装libaio-0.3.105-2.i386.rpm
  6. LeetCode 116. 填充每个节点的下一个右侧节点指针
  7. node:爬虫爬取网页图片 1
  8. 利用SpringCloud搭建一个最简单的微服务框架
  9. 对马的幽灵是关于人的
  10. 关于对音频的合并,左右声道的分离以及播放的操作
  11. 解决:微信小程序只有调试或真机打开调试模式时可以访问网络,手机预览不能访问网络
  12. TED 不要变成自己人生的旁观者
  13. python系统命令切换目录_Windows 命令行切换目录
  14. antdesign——layout
  15. lr cc 2019 mac版激活教程
  16. win10鼎信诺为什么安装不了_2016年鼎信诺常见问题处理.docx
  17. 绿色简约校园招聘会PPT模板
  18. wpf 展示特定列表结构
  19. python学习笔记 - 设置Excel单元格样式
  20. h3c虚拟刀片服务器,H3C B16000刀片服务器

热门文章

  1. 光照 辐射度量学 - Radiant Intensity, Irradiance, Radiance 的概念
  2. Http1.0协议常识
  3. html两个th合并单元格,10、HTML表格(table 、th、tr、td、合并单元格)的简单认识...
  4. 游戏插件开发之防插件剥离的简单保护壳工具设计(利用反汇编引擎实现自动化代码保护)下
  5. 1024程序员节|代码改变世界,科技创造未来!Python进阶者联合机械工业出版社好书相赠...
  6. red5+adobe flash media live +酷播播放器实现简单的直播及回看(二)------使用media live encoder向red5服务器推流
  7. 天语w806大黄蜂原生安卓官方测试版开放下载
  8. 含分布式电源的33节点配电网matlab模型图,支持matlab2021a版及以上版本运行,分布式电源可自行修改输出功率以及调整接入配电网节点的位置
  9. python的安装方法
  10. NSIS脚本检测和安装Adobe Flash Player 插件