无偏PU learning简介

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).
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值