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

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

第一类方法
也称为两步法:从unlabeled 数据识别出有效的负样本,然后利用正负样本训练分类器。
第二类方法
全部将未标注的样本作为负样本训练,同时将负样本的赋予一个较小的权重值。
然而,第一类方法在识别有效负样本时比较依赖于经验,需要对相关的业务背景有良好的理解;第二类方法则依赖于未标注样本权重的设置,并且如果loss函数不合适,将存在biased误差。在第二类方法中,为了改进目前学习存在偏差的问题,无偏 PU learning被引入。

uPU learning
我们有一个正的数据集χ \chiχ,一个未标注数据集χ ′ \chi'χ 

 ,即
χ : = { x i } i = 1 n   = p ( x ∣ y = 1 ) χ ′ : = { x j ′ } j = 1 n ′   = 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)
χ:={x 
i
​    
 } 
i=1
n
​    
  =p(x∣y=1)
χ 

 :={x 
j

​    
 } 
j=1


 
​    
  =p(x)
p(x):=πp(x∣y=1)+(1−π)p(x∣y=−1)

其中π \piπ是unlabel样本中正样本的比例,为超参数。
对于普通的分类
R ^ p n ( g ) = π p R ^ p + + π n R ^ 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)

风险函数
R u − ( g ) = 1 n − ∑ x = 1 n − l ( g ( x i ) , − 1 ) = ∑ x p ( x ) l ( g ( x i ) , − 1 ) = ∑ x p ( y = 1 ) p ( x ∣ y = 1 ) l ( g ( x i ) , − 1 ) + ∑ x p ( y = − 1 ) p ( x ∣ y = − 1 ) l ( g ( x i ) , − 1 ) = π p ∑ x p ( x ∣ y = 1 ) l ( g ( x i ) , − 1 ) + ( 1 − π p ) ∑ x p ( x ∣ y = − 1 ) l ( g ( x i ) , − 1 ) = π p ∑ x p p ( x ) l ( g ( x ( x i ) , − 1 ) ) + ( 1 − π p ) ∑ x n p ( x ) l ( g ( x i ) , − 1 ) = π p R p − + ( 1 − π p ) R n − 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^{-}

u

​    
 (g)= 


 
1
​    
  
x=1



 
​    
 l(g(x 
i
​    
 ),−1)

x

​    
 p(x)l(g(x 
i
​    
 ),−1)

x

​    
 p(y=1)p(x∣y=1)l(g(x 
i
​    
 ),−1)+ 
x

​    
 p(y=−1)p(x∣y=−1)l(g(x 
i
​    
 ),−1)
=π 
p
​    
  
x

​    
 p(x∣y=1)l(g(x 
i
​    
 ),−1)+(1−π 
p
​    
 ) 
x

​    
 p(x∣y=−1)l(g(x 
i
​    
 ),−1)
=π 
p
​    
  

p
​    
 

​    
 p(x)l(g(x(x 
i
​    
 ),−1))+(1−π 
p
​    
 ) 

n
​    
 

​    
 p(x)l(g(x 
i
​    
 ),−1)
=π 
p
​    
 R 
p

​    
 +(1−π 
p
​    
 )R 
n

因此对于PU learning 其风险函数为
R ^ p u ( g ) = π p R ^ p + ( g ) − π p R ^ 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 / n p ) ∑ i = 1 n p ℓ ( g ( x i p ) , + 1 ) \hat R_p^{+} (g) = (1/{n_p})\sum \limits_{i = 1}^{{n_p}} \ell (g(x_i^p), + 1) 
R
^
  
p
+
​    
 (g)=(1/n 
p
​    
 ) 
i=1


p
​    
 
​    
 ℓ(g(x 
i
p
​    
 ),+1) , R ^ u − ( g ) = ( 1 / n u ) ∑ i = 1 n u ℓ ( g ( x i u ) , − 1 ) \hat R_u^ - (g) = (1/{n_u})\sum \limits_{i = 1}^{{n_u}} \ell (g(x_i^u), - 1) 
R
^
  
u

​    
 (g)=(1/n 
u
​    
 ) 
i=1


u
​    
 
​    
 ℓ(g(x 
i
u
​    
 ),−1),R ^ p − ( g ) = ( 1 / n p ) ∑ i = 1 n p ℓ ( g ( x i p ) , − 1 ) \hat R_p^{-} (g) = (1/{n_p})\sum \limits_{i = 1}^{{n_p}} \ell (g(x_i^p), -1) 
R
^
  
p

​    
 (g)=(1/n 
p
​    
 ) 
i=1


p
​    
 
​    
 ℓ(g(x 
i
p
​    
 ),−1)

上式子的empirical risk estimators函数是无偏的。当损失函数满足一个对称条件时【Analysis of learning from positive and unlabeled data】:
l ( t , + 1 ) + l ( t , − 1 ) = 1 l(t,+1)+l(t,-1)=1
l(t,+1)+l(t,−1)=1

我们会得到
R ^ p u ( g ) = 2 ∗ π p R ^ 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 ^ p u \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 ) − π p R ^ 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 ^ p u ( g ) = π p R ^ p + ( g ) + m a x { 0 , R ^ u − ( g ) − π p R ^ 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)


 (x;θ)=θp(x∣y=1)+(1−θ)p(x∣y=−1)

进而求解,利用分布的相似度量f-散度,有
θ : = arg ⁡   min ⁡ 0 ≤ θ ≤ 1 ∫ f ( q ′ ( x ; θ ) p ( x ) ) p ( x ) d x \theta :=\arg \,\min_{0\le\theta \le 1}\int f(\frac{q'(x;\theta)}{p(x)})p(x)dx
θ:=arg 
0≤θ≤1
min
​    
 ∫f( 
p(x)


 (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 ) d x \theta :=\arg \,\min_{0\le\theta \le 1}\int f(\frac{q(x;\theta)}{p(x)})p(x)dx
θ:=arg 
0≤θ≤1
min
​    
 ∫f( 
p(x)
q(x;θ)
​    
 )p(x)dx

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

同时证明了L 1 − d i s t a n c e L_1-distanceL 
​    
 −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_num
    t2 = K.sum(-u, axis=-1)/u_num - self.pi *K.sum(-p, axis=-1)/p_num
    t3 = tf.where(t2 > 0.0, t2, 0.0)
    loss = t + t2
    return -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 learning简介相关推荐

  1. PU --- 无偏PU learning简介

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

  2. PU learning简介(附python代码)

    一.引言 在现实生活中,有许多只有正样本和大量未标记样本的例子.这是因为负类样本的一些特点使得获取负样本较为困难.比如: 负类数据不易获取. 负类数据太过多样化. 负类数据动态变化. 举一个形象点的例 ...

  3. PU learning学习笔记

    一.背景介绍 现实生活许多例子只有正样本和大量未标记样本,这是因为获取负类样本较为困难.负类数据太过多样化且动态变化.比如在推荐系统,用户点击为正样本,却不能因为用户没有点击就认为它是负样本,因为可能 ...

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

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

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

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

  6. PU learning

    PU learning postive learning ,仅有正样本情况下的学习.其应用范围: Retrieval(检索) Inlier-based outlier detection. One-v ...

  7. Deep learning简介

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

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

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

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

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

最新文章

  1. 生成批量缩率图_Windows系统实战之:批量生成某类型文件
  2. springboot整合shiro-关于登出时,redis中缓存没有清理干净的问题
  3. oracle索引中丢失in或out参数,oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1...
  4. swappiness
  5. 源码安装libjpeg-turbo1.2.1,无root权限
  6. freemark循环map_java与freemarker遍历map
  7. SQL Server 不同数据库导入指定数据解决方案
  8. 2021.08.25学习内容torch.clamp(input, min, max, out=None) → Tensor,torch.mm(matrix multiply)
  9. js如何在字符串里加变量
  10. Android 应用快捷方式 ShortcutManager 简单说明
  11. 如何成为一个AI产品经理?
  12. c#语言输出字符串长度,C#获取字符串长度(string.Length)
  13. ICP网站备案查询系统php版 v1.0+(源码)
  14. 我的理想计算机作文800字,我的理想作文800字(精选五篇)
  15. Android美团评分组件及消息提示框自我定制(14)
  16. win10导入iphone手机中的照片和视频出错:发生了一些问题,文件可能未导入
  17. 《历史的温度1》 读书笔记
  18. RD client、远程桌面、smb等远程相关的使用与注意
  19. 机试题:寻找大富翁(选择排序)
  20. USB 3G上网卡讲解之一

热门文章

  1. E - Ignatius and the Princess IV
  2. Mybatis的全局配置文件中的标签
  3. 笔记本电脑打开后不显示桌面_宝骏630打开空调开关后压缩机不工作 - 汽车空调...
  4. ajax给data赋值,vue 2.0 methods 里ajax生成的数据,怎么赋值给data
  5. java 反射 找不到方法_Java获取反射的三种方法
  6. 详解FTP服务完成Linux和WIN10之间的信息传输(实验详解)
  7. java mysql乱码_41、java与mysql乱码的问题
  8. tcpdump 识别成dns_1.6.3 使用tcpdump观察DNS通信过程
  9. c语言第一个mfc程序,c语言之MFC的进程和线程
  10. gddr6速率_GDDR6 显存两年后问世:比 GDDR5X 更快,速率可达 16Gbps