Learning Classifiers from Only Positive and Unlabeled Data

PU learning 经典论文。

本文主要考虑在SCAR假设下,证明了普通的分类器和PU分类器只相差一个常数,因此可以使用普通分类器的方法来估计p(s|x)​,进而得到p(y|x)​。同时提供了三种方法来估计这个常数,最后,还对先验p(y)​的估计提供了思路。

Learning a traditional classifier

  1. 概念定义

    • x​ 表示一个样本,y​ 表示其label(0或者1),s​表示是否被select
    • 那么,在PU问题中,当s =1时,一定有y = 1
    • P(s = 1| x,y=0) = 0 ​ 一定成立
  2. 两种采样假设

    • signle-training-set
      • 所有的样本都是从(x,y,s)这个三元组的分布中采样的
    • case-control
      • 两个数据集(正类,未标记)是从三元组中独立的抽样出来的。当采样正类时被称为case,采样未标记数据时称为contaminated controls
    • 这两种假设有很明显的区别。总的来说,第一种假设比第二种假设要严格得多,也就能提供更多的信息:
      • 两种假设都能让我们估计p(x)
      • 但只有在第一种假设下,能够让我们很容易的估计出p(s = 1),因此也更容易估计出p(y = 1),二第二种条件不可以。
  3. 基本假设

    • 我们需要训练的传统分类器是:f(x) = p(y = 1|x)​
    • 然而,对正类数据没有任何假设的前提下,我们很难得到较好的分类器
    • 因此,论文给出的假设是,正类样本数据是从正类数据中完全随机的抽取出来的。
      • 也就是说,当y = 1​时,无论x​取说明值,它们的概率都是相同的:p(s = 1| x,y=1) = p(s =1|y=1)​
      • 这个假设被称为selected completedly at random
    • 我们定义一个nontraditional classifierg(x) = p(s =1|x)​
    • 因此,我们需要一些定理来证明如何将非传统的分类器转化为传统的分类器
  4. Lemma:假设SCAR条件成立,那么p(y = 1|x) = \frac{p(s=1|x)}{c}​,其中c = p(s=1|y=1)​

    • 证明:由于我们的假设是:p(s = 1| x,y=1) = p(s =1|y=1)​,因此:

    • \begin{equation}\begin{split}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{split}\end{equation}

    • 将我们的分类器带入为:f(x) = \frac{g(x)}{p(s=1|y=1)}

    • 这里可以得到几个结论:

      1. f​g​的单调递增函数,因此,如果我们只需要对x​进行rank排序,那么直接可以用g​代替f​
      2. g \le p(s=1|y=1)​恒成立。这也是很显然的,同时,我们可以定义c = p(s=1|y=1)​为一个常数。
  5. 如何来估计c呢?一般采用交叉验证,设交叉验证集合为P

    1. 第一种方式是直接在正类数据集中进行抽样

      • P​是未标记数据集V​的一个子集,且全是正类,因此,我们可以估计c = p(s=1|y=1)​e_1​
      • e_1 = \frac{1}{n}\sum_{x\in P} g(x) = \frac{1}{n}\sum_{x\in P} p(s=1|y=1)
      • 也就是用均值来估计概率(证明很容易,见论文)
    2. 第二种方式是在两个样本集中分别进行抽样

      • e_2 =\sum_{x\in P} g(x) /\sum_{x\in V} g(x)

      • 这个估计其实和e_1基本相同,这是因为:E(\sum_{x\in V}g(x)) = p(s=1)m = E[n|m]

      • 其中mV的数量,nP的数量

    3. 第三种方式是根据g \le p(s=1|y=1)的结论,估计e_3 = \max_{x\in V}g(x)

  6. 那么,这三种估计方式哪一个更好呢?

    • 显然,如果我们的分类器能做到g(x) = p(s =1|x),那么第一种估计一定是正确的,但现实中分类器是从一个有限的训练集中进行学习的,同时,模型的选择也是近似;
    • 但比较其他两种方式,第一种估计的方式的方差更小

Weighting unlabeled

论文中对于h(x,y)函数进行估计,得到结论:对于在正类中每个样本的权重是1,而在未标记中,正类的权重是w,负类的权重是1-w​

  1. 我们已经可以估计c了,那么希望将尽可能多的概率转为我们已知的估计:
    • p(y=1|x,s=0) = \frac{1-c}{c} \frac{p(s=1|x)}{1-p(s=1|x)}​
    • 很显然,p(y=1|x,s=1)=1恒成立
  2. 因此,对于任意函数E[h]的估计为:
    • \frac{1}{m} (\sum\limits_{x,s=1}h(x,1) + \sum\limits_{x,s=0}w(x)h(x,1) + (1-w(x))h(x,0))
    • 其中权重w = p(y=1|x,s=0)
    • 观察该式我们可以发现,在h的估计中,在正类中的每个样本权重为1,而在未标记中,正类的权重是w,负类的权重是1-w
  3. 因此,我们可以改写h使得变为一个learning algorithm,有两种思路,一种是直接对h进行估计,然后再用以上的式子取平均;第二种方式是在估计时就根据以上的式子对不同的样本取不同的权重
  4. 考虑一种特殊的情况:h(x,y) = y​,也就是对p(y)​ 进行估计,那么很显然:
    • E[y] = p(y =1) = \frac{1}{m}(n + \sum\limits_{x,s=0} w(x))
  5. 另外一种估计p(y) =1​的方法是直接用我们之前的公式:
    • c = \frac{p(s=1 \wedge y=1)}{p(y=1)}, \hat{c} = \frac{1}{n}\sum_{x\in P} g(x), p(s=1 \wedge y=1) = \frac{n}{m}​
    • 因此可以得到估计值为:\frac{n^2}{m \sum_{x\in P}g(x)}

Experiment

作者自己收集了SwissProt数据集,符合case-control的假设

  • U:是未标记数据集
    • Q:未标记数据集中的正类
    • N:未标记数据集中的负类
  • P:是正类数据集

论文中做了如下的对比实验:

  1. 标准的分类问题(P+Q vs N),分类阈值为0.5
    • 使用libSVM进行训练
  2. 在PU问题中先学习分类器,然后再重新调整权重(P vs U),分类阈值为0.5c
    • 使用Platt scaling得到概率输出p(s=1|x)​,根据分类阈值进行分类(需要对c进行估计)
  3. 先对未标记数据调整权重,再学习分类器(P vs U),分类阈值为0.5
    • 首先用Platt scaling得到概率估计,并转为权重:
      • w = p(y=1|x,s=0) = \frac{1-c}{c} \frac{p(s=1|x)}{1-p(s=1|x)}​
    • 再对每个样本赋予不同的权重(需要对c进行估计),重新使用libSVM进行训练
  4. 使用biased SVM进行学习,分类阈值为0
    • 对不同的样本设置不同的权重,重复训练多次,每次用70%作为训练,20%作为验证,得到最好的参数后再对90%的所有训练数据进行训练(10%是test data)
image-20190330162247730

Related work

主要有两种方法处理PU问题

  1. 首先用某些启发式方法看未标记中的数据哪些是负类,然后再用常见的分类方法进行学习
  2. 对未标记数据的每个样本设置不同的权重(表示是负类的可能性大小),然后将未标记数据看作是加权的负样本数据,再进行训练
  3. 第三种方法与论文中的方法类似
    • 首先将未标记数据看成是正类样本和负类样本的加权
    • 提供一种计算权重的方式,同时,对于不同的样本,权重也不一样

其中第一种方法可以看成是第二种方法的特例,因为权重可以取1或者0

Biased SVM

优化目标函数:

\min \frac{1}{2} ||w||^2 + C_P\sum_{i\in P} z_i + C_U\sum_{i\in U} z_i

s.t. \quad y_i(wx+b) \ge 1-z_i

同时,C_P一般来说惩罚要比C_U

Summary

这篇文章最重要的地方是证明了p(y = 1|x) = \frac{p(s=1|x)}{c}。在PU问题中,我们很容易使用常见的分类器得到输出概率p(s|x),这样通过估计常数c(直接取概率的均值),我们就能得到普通的二分类器。

另外一种方法是,得到输出概率p(s|x)后,再根据公式w = p(y=1|x,s=0) = \frac{1-c}{c} \frac{p(s=1|x)}{1-p(s=1|x)}转换为权重,对每个样本分配不同的权重再进行训练。

Reference

  1. Learning Classifiers from Only Positive and Unlabeled Data
  2. SwissProt records dataset
  3. Platt scaling
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容