PU learning(Positive-unlabeled learning)是当样本集中只有部分标注好的正样本和其余未标注的样本时,如何学习一个二分类器。

这篇笔记记录一下论文《Learning Classifiers from Only Positive and Unlabeled Data》中提出的一种PU learning方法。

xxx是一个样本,而y∈{0,1}y \in \{0, 1\}y{0,1}是二元标签。如果样本xxx被标注,记为s=1s=1s=1; 如果样本xxx未标注,记为s=0s=0s=0

因为只有正样本被标注,所以当s=1s=1s=1时肯定有y=1y=1y=1,但是当s=0s=0s=0时,那么y=1y=1y=1y=0y=0y=0都有可能。只有正样本被标注的事实可以用如下公式表示:
p(s=1∣x,y=0)=0(1) p(s=1|x, y=0) = 0 \qquad (1) p(s=1∣x,y=0)=0(1)
论文作的基本假设:标注好的正样本是随机的从所有正样本中挑选出来的。在论文中被称为"selected completely at random"假设,用公式表示为如下式:
p(s=1∣x,y=1)=p(s=1∣y=1)(2) p(s=1|x, y=1)= p(s=1|y=1) \qquad (2) p(s=1∣x,y=1)=p(s=1∣y=1)(2)
如果有一个训练集包含了服从满足式(1)和式(2)的分布p(x,y,s)p(x,y,s)p(x,y,s)的随机样本。也就是说这个样本集包含两个子集:”已标注“(s=1s=1s=1)、“未标注”(s=0s=0s=0)。如果把这两个子集作为标准训练算法的输入,这个算法会得到一个函数g(x)g(x)g(x)g(x)=p(s=1∣x)g(x)=p(s=1|x)g(x)=p(s=1∣x),称g(x)g(x)g(x)为nontraditional classifier,论文的主要作用是根据下面的引理1展示如何从g(x)g(x)g(x)获得一个traditional classifier f(x)f(x)f(x)p(y=1∣x)p(y=1|x)p(y=1∣x)

引理1:如果"selected completely at random"假设成立,那么有p(y=1∣x)=p(s=1∣x)/cp(y=1|x)=p(s=1|x)/cp(y=1∣x)=p(s=1∣x)/c,式中的c=p(s=1∣y=1)c=p(s=1|y=1)c=p(s=1∣y=1)

引理1的证明:我们有式(2)的假设:p(s=1∣x,y=1)=p(s=1∣y=1)p(s=1|x, y=1)= p(s=1|y=1)p(s=1∣x,y=1)=p(s=1∣y=1)。 对于p(s=1∣x)p(s=1|x)p(s=1∣x)有:
p(s=1∣x)=p(y=1∧s=1∣x)=p(y=1∣x)p(s=1∣y=1,x)=p(y=1∣x)p(s=1∣y=1) \begin{aligned} p(s=1|x) & = p(y=1 \wedge s=1|x) \\ &= p(y=1|x)p(s=1|y=1,x) \\ &= p(y=1|x)p(s=1|y=1) \end{aligned} p(s=1∣x)=p(y=1s=1∣x)=p(y=1∣x)p(s=1∣y=1,x)=p(y=1∣x)p(s=1∣y=1)当我们将上式的两边都除以p(s=1∣y=1)p(s=1|y=1)p(s=1∣y=1)就得到了p(y=1∣x)p(y=1|x)p(y=1∣x)

从引理1可以得到几个结论:

  1. 分类器f是分类器g的增函数(increasing function)。也就意味着如果分类器f只是根据样本x属于类别y=1y=1y=1的概率来对样本排序,那么可以直接使用分类器g而不是分类器f。
  2. f=g/p(s=1∣y=1)f=g/p(s=1|y=1)f=g/p(s=1∣y=1)只有当g≤p(s=1∣y=1)g \le p(s=1|y=1)gp(s=1∣y=1)是一个有效定义的概率f≤1f \le 1f1。也就是说g>p(s=1∣y=1)g > p(s=1|y=1)g>p(s=1∣y=1) 是不可能的。

那如何估计c=p(s=1∣y=1)c=p(s=1|y=1)c=p(s=1∣y=1)呢?设有一个跟训练集同分布的验证集VVV,设PPPVVV中有标注的子集(全是正样本),那么我们有三种方法来估计c=p(s=1∣y=1)c=p(s=1|y=1)c=p(s=1∣y=1)

  1. 使用g(x)g(x)g(x)在子集P的预测均值:1n∑x∈Pg(x)\frac{1}{n} \sum_{x \in P} g(x)n1xPg(x), n是P的大小。

  2. 使用g(x)g(x)g(x)在子集P的预测值之和与在验证集V的预测值之和的比值:∑x∈Pg(x)/∑x∈Vg(x)\sum_{x \in P} g(x)/\sum_{x\in V} g(x)xPg(x)/xVg(x)

  3. 使用g(x)g(x)g(x)在验证集的预测最大值:maxx∈Vg(x)max_{x \in V} g(x)maxxVg(x)
    实际使用时,一般使用第一种方法。

所以可按照如下步骤来对一个样本kkk进行分类:

  1. 使用标注数据和未标注数据训练分类器g(x)g(x)g(x)p(s=1∣x)p(s=1|x)p(s=1∣x)
  2. 计算c=p(s=1∣y=1)c=p(s=1|y=1)c=p(s=1∣y=1),使用g(x)g(x)g(x)在验证集V的正样本子集P上的预测均值来得到c:c=1n∑x∈Pg(x)c=\frac{1}{n} \sum_{x \in P} g(x)c=n1xPg(x)
  3. 使用分类器g(x)g(x)g(x)预测样本 k被标注的概率p(s=1∣k)p(s=1|k)p(s=1∣k)
  4. 计算样本k为正样本的概率:p(y=1∣k)=p(s=1∣k)/p(s=1∣y=1)p(y=1|k) = p(s=1|k)/p(s=1|y=1)p(y=1∣k)=p(s=1∣k)/p(s=1∣y=1)

参考资料

  1. Elkan, Charles, and Keith Noto. 2008. “Learning Classifiers from Only Positive and Unlabeled Data.” In Proceedings of the 14th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. doi:10.1145/1401890.1401920.

  2. https://github.com/pulearn/pulearn

  3. https://github.com/phuijse/bagging_pu

  4. https://dtai.cs.kuleuven.be/tutorials/pulearning/

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐