无偏PU learning简介

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'χ′,即
\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样本中正样本的比例,为超参数。
对于普通的分类
\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)=\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 其风险函数为
\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)
其中:\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) , \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),\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)=1
我们会得到
\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得到分类器。并且,满足上述对称条件的\hat R_{pu}R^pu​一定是关于g非凸的。这样,不仅计算度增加,而且保证得到最优解。另外,满足上式子的损失函数有0-1损失函数,sigmoid函数等等。如果换成其他损失函数,最终的目标函数将比(3)式子多一误差项【1】,最终的求解出现偏差,该类方法中应用比较多的是biased SVM。

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

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

虽然终于找到一种即无偏差,又可得到最优解的方法,但决策函数的要求大大限制了该方法的应用。另外,如果使用这种方法,需要设计一些特别的损失函数,如下:
在这里插入图片描述
而对于一般的复杂的决策函数,尤其将深度学习应用其中,凸优化与无偏估计几乎不可兼得,而两者中,无偏估计更容易获取,只要我们从上式(2)中出发。
但是,我们发现,式(2)中有减号,这就有了一种可能,即\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)稍作改进:
\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数据集中,利用多层神经网络结果如下:
在这里插入图片描述

最后,注意到,还有一个超参数 \pi_pπp​的选择,实验证明其选择的值比实际值高时,要优于比实际值低,即高估该值的效果更好;具体估计该值的方法,可参考【3】,具体如下:
如果知道未标注样本中正样本比例为\thetaθ,那么有
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-散度,有\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;\theta)=\theta p(x|y=1)q(x;θ)=θp(x∣y=1)
然后求
\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的分布信息,部分拟合将过高估计正例样本的比例。该文通过利用惩罚散度来避免负样本缺失造成的误差,对于各个散度的惩罚形式如下:
在这里插入图片描述
同时证明了L_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_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).

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值