PU Learning在风控中的应用(理论篇)

PU Learning在风控中的应用(理论篇)

风控业务背景

在实际分类场景中,我们经常会遇到类似这样的问题:只有已标记的正样本,以及未标记的样本。比如金融风控场景,只有部分用户被标记为欺诈用户,剩下的大量用户未被标记。虽然这其中大多数信用良好,但仍有少量可能为欺诈用户。

为了方便操作,我们可以将未标记的样本都作为负样本进行训练,但存在几个缺陷:

  1. 正负样本极度不平衡,负样本数量远远超过正样本,效果很差。
  2. 某些关键样本会干扰分类器的最优分隔面的选择,尤其是SVM。

如何辨别未标记样本中的正负样本,提升模型准确度,就成为一个值得思考的问题。PU Learning就是解决这种场景的一种学习方法。

本文尝试回答以下几个问题:

  1. How can we formalize the problem of learning from PU data?
  2. What assumptions are typically made about PU data in order to facilitate
    the design of learning algorithms?
  3. Can we estimate the class prior from PU data and why is this useful?
  4. How can we learn a model from PU data?
  5. How can we evaluate models in a PU setting?
  6. When and why does PU data arise in real-world applications?
  7. How does PU learning relate to other areas of machine learning?
目录
Part 1. PU Learning的基本概念
Part 2. PU Learning的基本假设
Part 3. PU Learning的评估指标
Part 4. 两阶段技术(Two-step PU Learning)
Part 5. 有偏学习(Biased Learning)
Part 6. 融入先验类别(Incorporation of the Class Prior)
Part 7. 先验类别的估计方法
Part 8. Active Learning与PU Learning的对比
Part 9. 总结
致谢
版权声明
参考资料

数学符号含义速查

  • x :某样例的特征向量,x \in \bm{x}
  • y :某样例的标签变量,y \in \bm{y} = \{0,1\}
  • (\bm{x},\bm{y}) : 某样本二元组
  • s :某样例是否被标注的指示变量,s \in \bm{s} = \{0,1\}
  • \alpha :先验类别(Class Prior),\alpha = Pr(y=1) ,指正类别先验比例
  • c :标签频率(Label Frequency),c = Pr(s=1|y = 1) ,指L集合占总体P集的比例
  • e : 倾向评分函数(Propensity Score),e(x)=Pr(s=1|y=1, x)
  • f(x) : 总体样本的概率密度分布函数, f(x) = Pr(x|y\in \{0,1\})
  • f_{+}(x) :正样本的概率密度分布函数, f_{+}(x) = Pr(x|y=1)
  • f_{-}(x) : 负样本的概率密度分布函数, f_{-}(x) = Pr(x|y=0)
  • f_l(x) : 有标签(labeled)样本的概率密度分布函数, f_l(x) = Pr(x|s=1) \subset f_+(x)
  • f_u(x) : 无标签(unlabeled)样本的概率密度分布函数, f_u(x) = Pr(x|s=0)
  • \hat \theta :对参数 \theta 的估计值
  • P : 正样本集,Positive,已标注的正样本
  • N : 负样本集,Negative,实际未知
  • L : 有标签样本集,Labeled,只有正样本
  • U : 无标签样本集,Unlabeled,包括未知的正负样本
  • PU : 正样本和无标签样本组成的集合
  • RN : 可靠的负样本

Part 1. PU Learning的基本概念

在传统二分类问题中,训练集中所有样本都有明确的0-1标签,即正样本(y = 1)和负样本(y = 0)。图1是一个二分类问题的数据集示例。同时,这些样本满足独立同分布,即:

\bm{x}∼ f(x) \\  \Leftrightarrow \bm{x} ∼ αf_{+}(x) + (1 − α)f_{−}(x)  \tag{1}

其中,\alpha = Pr(y=1)是正类别先验。由于我们并不知道总体分布中正样本的真实比例,\alpha 通常根据经验给出。例如,在信贷反欺诈中,如果欺诈比例按历史经验大概是0.0001 ,那么\alpha = 0.0001

图 1 - 传统二分类中有标签数据集

PU Learning的目标与传统二分类问题一致,都是为了训练一个分类器用以区分正负样本。不同点在于:此时只有少数已标注的正样本,并没有负样本。图2是一个典型的PU数据示例。

图 2 - PU Learning中正和无标签数据集

我们常将PU数据定义为三元组 (x, y, s) ,其中 x 为特征向量,y 为类别标签,s 表示是否被标注。在PU问题中,如果某个样例被选中标注(s = 1),那么 Pr(y=1|s=1) = 1 ,属于P集合;否则,该样本标签未知,属于U集合。

你可能会疑惑:我们在标注一个样例时,标签难道不是非0即1?如果Pr(y=1|s=1) = 1,那么Pr(y=0|s=1) = 0。这显然不符合常理,我们如何能保证都是1?

事实上,这是因为:即使是领域专家,在很多案例中也难以保证判断的准确率。根据反证法的思想,专家对于判定为黑(正)的往往比较有信心,因为通常有证据可循,只要命中硬规则即可。然而要判定为白(负),则需要排除所有不可能,这在事实上是难以真正做到的,因为我们收集到的信息总是有限的。

为了维护一个充分可靠的P集合,我们要求专家在进行标注时,仅把具有充分信心的样本标注为1,保证P集合的正确性。而对于专家标注的0无法完全信任,因此会选择将标为0的样本重新放入U集合中,假装没有标注过。整个标注过程如图3所示。

图 3 - PU Learning样本标注流程

因此,PU问题的基本设定就是L \Leftrightarrow P。只要一个样例被标注,那么其就是正样本。我们可以用条件概率公式来表达:

Pr(y=1|s=1)  =\frac{Pr(y=1,s=1)}{Pr(s=1)} =\frac{Pr(y=1)}{Pr(s=1)}   = 1 \tag{2}

在了解样本标注流程后,我们又会遇到一个问题:如果从U集合中完全随机选择样例进行标注,发现不是正样本就放回,那岂不是效率很低?

因此,我们需要采取某种打标机制(Labeling Mechanism)从U中选择样本。同时,最理想的情况是每次都是从U集合中的隐式的“P”集合中选择,再经专家标注验证后,加入显式的P集合中。那么,我们就可以节省很多成本,P集合也能得到快速扩充!

在信贷风控中,我们会利用信用评分卡给客户打分,按信用分排序后,就可以进行拒绝或放贷。同样地,我们也需要定义一个倾向评分模型(Propensity Score),用以预测U集合中样本被选中的可能性(倾向)。

经过定性分析后,我们思考该如何构建模型?

  1. 目标分析U = P \cup N, P \cap N = \phi 。U集合可以分解为隐式的“P”和“N”两个集合,只是我们没有标注前还不知道它们的真实标签 y ,因此 y 是隐变量。目标变量就是样本是否被选中,即 \bm{s} \in \{0, 1\}
  2. 样本特征:根据样本的特征属性 x ,是否可以构建一个类别预测模型(如逻辑回归)?
图 4 - 真实P集合(橙色) 和 已标注的P集合(黄色)

理解上述思想后,我们把倾向评分函数(模型)定义为:

e(x) = Pr(s=1|y=1, x) \tag{3}

其中,y = 1这个条件实际并不知道,是一个隐变量。

机器学习离不开样本分析。事实上,我们标注的有标签样本 f_l(x) 只是真实正样本 f_+(x) 中的很小一部分,即有偏分布,如图4所示。它们之间的关系是:

\begin{eqnarray*} && f_l(x) = Pr(x|s=1) \\ && = Pr(x|s=1,y=1) {\space} {\space} {\space}  \# {\space}PU {\space}  definition\\  && = \frac{Pr(s=1|x,y=1)Pr(x|y=1)}{Pr(s=1|y=1)}  {\space} {\space} {\space}  \# {\space} Bayes  {\space}Rule \\ && = \frac{Pr(s=1|x,y=1)}{Pr(s=1|y=1)} Pr(x|y=1)  \\ && = \frac{e(x)}{c}f_{+}(x) \\ \end{eqnarray*}  \tag{4}

其中, c = Pr(s=1|y = 1) 表示L集合占总体真实正样本集的比例。此时,你又会疑惑:我们并不知道总体真实正样本集,只有L集合,那如何计算占比? 这点在后面会介绍。

根据P和U集合是否来自同一个数据集,我们可以分为两种场景:

  • 场景\# s1 :同一训练集(Single Training Set),即P集合和U集合来自于同一数据集。
  • 场景\# s2 :多个数据源(Case-Control),即P集合和U集合来自于不同数据集。

一般情况下,我们都认为是场景\# s1,或是为了简化问题。

对于场景\# s1,所有样本均服从同一分布 f(x) ,可以将这种关系表示为式 (5) .

\bm{x} \sim f(x) \\  {\space}{\space} \sim \alpha f_{+}(x) + (1- \alpha) f_{-}(x) \\ {\space}{\space} \sim \alpha c f_{l}(x) + (1- \alpha c) f_{u}(x)  \tag{5}

对于场景\# s2,未选中的无标签样本服从分布  f_u(x) ,通常假设U集合样本也服从总体分布。可以将这种关系表示为式 (6) .

\begin{eqnarray*}  && \bm{x}|\bm{s} = 0 ∼ f_u(x) \\ && ∼ f(x) \\  && ∼ αf_{+}(x) + (1 − α)f_{−}(x)  \end{eqnarray*}   \tag{6}

从上文我们知道,类别先验 \alpha 与标签频率 c 紧密相关。给定一个PU数据集,只要知道其中一个,就能计算另一个。现在,我们通过推导,给出两者的转换公式。

c = Pr(s = 1|y = 1) \\  = \frac{Pr(s=1,y=1)}{ Pr(y = 1)}  = \frac{Pr(s = 1)}{Pr(y = 1)} \\  \# \space by \space PU \space definition \tag{7}

其中, Pr(s = 1) = \frac{\# L}{\# L + \# U} ,即有标签样本的占比。而 Pr(y = 1) 与类别先验 \alpha紧密相关,我们结合两个场景来分析。

  • 在场景\# s1中,Pr(y = 1) = \alpha
  • 在场景\# s2中, α = Pr(y = 1|s = 0) 。我们来推导 Pr(y = 1) 的表达式:

\begin{eqnarray*}  && Pr(y = 1) = Pr(y = 1|s = 0) Pr(s = 0) + Pr(y = 1|s = 1) Pr(s = 1) \\   && = α * Pr(s = 0) + 1* Pr(s = 1) \\  && = α  Pr(s = 0) + Pr(s = 1) \\  && = α  (1 - Pr(s = 1)) + Pr(s = 1)  \end{eqnarray*}  \tag{8}

其中,第一个等号是全概率公式;第二个是PU Learning的基本设定,即 Pr(y = 1|s = 1) = 1.

结合公式 (7)(8) ,我们可以得出类别先验 \alpha 与标签频率 c的关系为:

 \left\{ \begin{aligned}  c = \frac{Pr(s = 1)}{α} \space \space \# s1 \\  c = \frac{Pr(s = 1)}{α(1 − Pr(s = 1)) + Pr(s = 1)} \space \space \# s2 \\  α = \frac{1 − c}{c} \frac{Pr(s = 1)}{1−Pr(s=1)} \space \space \# s2  \end{aligned} \right. \tag{9}

Part 2. PU Learning的基本假设

至此,你已经理解PU Learning的问题设定:一个是P集合,另一个是U集合。有标签和正标签是等价的。我们发现,只有两种可能性可以解释一个样例为什么没有标签:

  1. 是负样本。按PU Learning的定义,我们对于专家标注的0无法完全信任,因此会选择将标为0的样本重新放入U集合中,假装没有标注过。
  2. 是正样本。只是没有被打标机制所选中,所以无法观察到其表现。

因此,为了从PU数据中学习模型,我们从以下2个维度去设定一些假设:

打标机制(Label Mechanism)
类别分布(Class Distributions)

2.1 打标机制(Label Mechanism)

本节主要介绍构建选择模型时的一些假设。

1. 完全随机选择(Selected Completely At Random,SCAR):
2. 随机选择(Selected At Random,SAR):
3. 概率差距(Probabilistic Gap):

假设1:完全随机选择(Selected Completely At Random,SCAR)

Labeled examples are selected completely at random, independent from their attributes, from the positive distribution.
有标签样本完全是从正样本分布中随机选择的,且与本身的特征属性无关

如图5所示,从x和y两个维度观察,x轴和y轴都是无偏均匀采样。

图 5 - 完全随机选择(SCAR)-PU数据

此时,倾向评分函数是常数,也就是说在所有样本上一视同仁,失去了排序性。我们可以定义为:

e(x) = Pr(s = 1|x, y = 1) = Pr(s = 1|y = 1) = c \tag{10}

有标签样本相当于全部从正样本分布中随机获取,且独立同分布。也就是:

f_l(x) = f_{+}(x) \tag{11}

根据式 (10) 我们可以得到:

Pr(s = 1|y = 1) = c \\ \Rightarrow \frac{Pr(s = 1|x)}{Pr(y = 1|x)} = c \\ \Rightarrow Pr(s = 1|x) = c Pr(y = 1|x) \tag{12}

为什么要做式 (12)这步转换呢?接下来,我们展示这一公式的魅力。

如果我们定义:

  • 传统分类器:即 Pr(y = 1|x) ,以“是否有正负 y \in \{0, 1\} ”作为目标变量。此时所有训练样本都必须有明确的0-1标签。这在PU问题中无法直接构建。
  • 非传统分类器:即 Pr(s = 1|x) ,以“是否被标注 s \in \{0, 1\} ”作为目标变量。实际上,这是把无标签样本U当作是负样本。这在PU问题中可以直接构建。

我们发现:这个公式通过 c 搭建起了传统分类器与非传统分类器之间的桥梁。

因此,该非传统分类器便具有了以下特点:

  1. 与传统分类器具有相同的排序性(Ranking Order):

Pr(y = 1|x_1) > Pr(y = 1|x_2) \\ \Leftrightarrow Pr(s = 1|x_1) > Pr(s = 1|x_2) \tag{13}

2. 让传统分类器达到某个目标的召回率,等价于非传统分类器达到这个目标。

3. 给定类别先验 \alpha (或标签频率 c )的条件下,非传统分类器能转化为传统分类器,也就是:

Pr(y = 1|x) = \frac{Pr(s = 1|x)}{c} \tag{14}

假设2:随机选择(Selected At Random,SAR)

The probability for selecting positive examples to be labeled depends on its attribute values.
有标签样本是从正样本分布中随机选择的,但与本身的特征属性有关

如图6和图7所示,我们从x和y两个维度观察,虽然y轴上是均匀采样,但x轴上并不是,说明是有偏采样。造成这个现象的主要原因是——我们根据样本属性进行筛选

图 6 - 随机选择(SAR) 和概率差距(PG)-PU数据
图 7 - 随机选择(SAR) -PU数据

此时,倾向评分函数可定义为:

e(x) = Pr(s = 1|x,y = 1)  \tag{15}

假设3:概率差距(Probabilistic Gap,PG)

Labeled examples are a biased sample from the positive distribution, where examples with a smaller probabilistic gap ∆Pr(x) are less likely to be labeled.
正负预测概率差距越大,被选中打标的概率也就越大。

最直接的想法,我们构建一个传统分类器,预测样本为正的概率 Pr(y = 1|x) 和负的概率 Pr(y = 0|x) 。两者越接近,代表模型对正负的区分界限越模糊。因此,我们定义概率差距 \Delta Pr(x) 如下所示:

\Delta Pr(x) = Pr(y = 1|x) − Pr(y = 0|x) \tag{16}

如果 \Delta Pr(x) 越高,其被选中的可能性也应该越小。因此,倾向评分函数是概率差距 \Delta Pr(x) 的非负、递减函数,可定义为:

e(x) = f (\Delta Pr(x)) = f (Pr(y = 1|x) − Pr(y = 0|x)), \frac{df(t)}{dt} < 0 \tag{17}

但在PU问题中,我们无法直接构建一个传统分类器,只能得到一个非传统分类器。因此,我们只能利用非传统分类器来估计 \Delta Pr(x)

\Delta  \hat Pr(x) = Pr(s = 1|x) − Pr(s = 0|x) \tag{18}

同时,估计值  \Delta \hat Pr(x) 和真实值 \Delta Pr(x) 满足式 (19),前者是后者的充分条件。

 \left\{ \begin{aligned}   \Delta \hat Pr(x) < 0 ⇒ \Delta Pr(x) < 0 \\  \Delta \hat Pr(x_1) > \Delta \hat Pr(x_2) ⇒ \Delta Pr(x_1) > \Delta Pr(x_2) \end{aligned} \right.  \tag{19}

2.2 数据假设(Data Assumptions)

本节主要对样本属性、标签等方面提出假设。

4. 负向性(Negativity):假设所有无标签样本都属于负类。
5. 分隔性(Separability):假设正负样本自然存在间隔。
6. 平滑性(Smoothness):假设相似的样本具有相同的标签。

假设4:负向性(Negativity)

The unlabeled examples all belong to the negative class.
假设U集合所有样本都属于负类。

尽管该假设不符合常理,但在实践中经常采用。主要原因在于:

  1. 我们已有P集合,只需要再有N集合,我们就可以直接归于成熟的二分类问题来解决。
  2. 作为EM算法中初始化的第一步,把U集合等同于N集合,然后不断迭代修正,最终收敛到一个稳态。

假设5:可分性(Separability)

The two classes of interest are naturally separated
始终存在一个分类器,能把正负两类然完全分开。

该假设主要是为了保证正负样本可分。在假设空间中,存在一个分界阈值,高于阈值预测为正样本,反之为负样本。

 \left\{ \begin{aligned}  f(x_i) \geq \tau, y_i =1 \\  f(x_i)< \tau, y_i = 0 \\ \end{aligned} \right.   \tag{20}

图 8 - 正负样本完美分隔

假设6:平滑性(Smoothness)

If two instances x1 and x2 are similar, then the probabilities Pr(y = 1|x1) and Pr(y = 1|x2) will also be similar.
如果两个样本相似,那么预测概率评分也是基本一致的,不会存在跃变的情况。

该假设能保证可靠负样本是那些远离P集合中的所有样本。为此,很多人针对相似度(也就是距离)的衡量开展了各种研究。

Part 3. PU Learning的评估指标

传统二分类问题具有明确的0-1标签,很自然能计算准确率、召回率、F1值等标准评估指标。但在PU Learning问题中,该如何计算呢?

F_1(\hat y)= \frac{2pr}{p + r}  \tag{21}

  • 准确率 p = Pr(y = 1|\hat y = 1) 表示预测为1的样本 Pr(\hat y = 1|x) 中,实际标签为1的样本 Pr(y = 1|x) 的占比。
  • 召回率 r = Pr(\hat y = 1|y = 1) 表示实际标签为1的样本 Pr(y = 1|x) 里,预测为1的样本 Pr(\hat y = 1|x) 的占比。

在SCAR假设下,我们可以计算出召回率 r = Pr(\hat y = 1|s = 1) 。但由于缺少负样本的可靠标签,无法计算准确率,从而导致F1值无法计算。

我们注意到,在准确率和召回率都高的情况下,F1值也会相应高。因此,定义以下指标:

\frac{pr}{Pr(y = 1)} = \frac{pr^2}{rPr(y = 1)} \\ = \frac{Pr(y = 1|\hat y = 1)r^2} {Pr(\hat y = 1, y = 1)}  \\ = \frac{r^2}{Pr(\hat y = 1)} \\ = \frac{[Pr(\hat y = 1|s = 1)]^2}{Pr(\hat y = 1)}  \tag{22}

此时,我们就可以根据该指标评估PU问题的模型效果。

接下来,我们正式开始介绍PU Learning的基础方法(框架),通常可分为三类:

第一类是两阶段技术(Two-step PU Learning):先在未标记数据U中识别出一些可靠的负样本,然后在正样本P和这些可靠的负样本上进行监督学习。这是最常用的一种✅

第二类是有偏学习(Biased PU Learning):简单地把未标记样本U作为噪声很大的负样本来处理。

第三类是融入先验类别(Incorporation of the Class Prior):尝试给正样本P和未标记样本U赋予权重,并给出样本属于正标签的条件概率估计。

Part 4. 两阶段技术(Two-step PU Learning)

all the positive examples are similar to the labeled examples and that the negative examples are very different from them.
基于可分性和平滑性假设,所有正样本都与有标签样本相似,而与负样本不同。

为了绕过缺乏负标注的问题,two-stage策略首先挖掘出一些可靠的负例,再将问题转化为一个传统的监督和半监督学习问题。

整体流程一般可分解为以下3个步骤:

  • step 1: 从U集合中识别出可靠负样本(Reliable Negative,RN)。
  • step 2: 利用P集合和RN集合组成训练集,训练一个传统的二分类模型
  • step 3: 根据某种策略,从迭代生成的多个模型中选择最优的模型。

在这个框架下,每一步又可以灵活选择各种方法。接下来,我们来详细解释每一步的细节。首先,可靠负样本的定义是什么?

基于平滑性假设,样本属性相似时,其标签也基本相同。换言之,可靠负样本就是那些与正样本相似度很低的样本。那么,问题的关键就是定义相似度,或者说距离(distance)。

4.1 识别可靠负样本

1)间谍技术(The Spy Technique)
2)1-DNF技术

1)间谍技术(The Spy Technique)

  • step 1:从P中随机选择一些正样本S,放入U中作为间谍样本(spy)。此时样本集变为P-S和U+S。其中,从P中划分子集S的数量比例一般为15%。
  • step 2:使用P-S作为正样本,U+S作为负样本,利用迭代的EM算法进行分类。初始化时,我们把所有无标签样本当作负类( y = 0 ),训练一个分类器,对所有样本预测概率 Pr(y=1)
  • step 3:以spy样本分布的最小值作为阈值,U中所有低于这个阈值的样本认为是RN。

注意:spy样本需要有足够量,否则结果可信度低。

图 9 - 可靠负样本的选择算法

2)1-DNF技术

  • step 1:获取PU数据中的所有特征,构成特征集合F。
  • step 2:对于每个特征,如果其在P集合中的出现频次大于N集合,记该特征为正特征(Positive Feature,PF),所有满足该条件的特征组成一个PF集合。
  • step 3:对U中的每个样本,如果其不包含PF集合中的任意一个特征,则将该样本加入RN。

4.2 训练分类器

在识别出可靠负样本RN后,我们来训练一个分类器,操作步骤描述如下:

# 样本准备:P 和 RN 组成训练集X_train; P给定标签1,RN给定标签0,组成训练集标签y_train
# 用 X_train 和 y_train 训练逻辑回归模型 model
model.fit(X_train, y_train) 

# 用 model 对 Q 进行预测(分类)得到结果 prob
Q = U - RN          # 无标签样本集U中剔除RN
prob = model.predict(Q) 

# 找出 Q 中被判定为负的数据组成集合 W
predict_label = np.where(prob < 0.5, 0, 1).T[0]
negative_index = np.where(predict_label == 0)
W = Q[negative_index]

# 将 W 和 RN 合并作为新的 RN,同时将 W 从 Q 中排除
RN = np.concatenate((RN, W))    # RN = RN + W
Q = np.delete(Q, negative_index, axis=0)  # Q = Q - W 

# 用新的 RN 和 P 组成新的 X_train,对应生成新的 y_train
# 继续训练模型,扩充 RN,直至 W 为空集,循环结束。
# 其中每次循环都会得到一个分类器 model ,加入模型集 model_list 中

4.3 最优模型选择

从每次循环生成的分类器中,制定选择策略,选出一个最佳分类器。

1)预测误差提升差\Delta E

我们训练的目标肯定是让模型的预测误差最小,因此,当 \Delta E < 0 时,说明当前一轮 i 比前一轮 i-1模型的误差开始升高。我们就选择 i-1轮训练的模型。

图 10 - 模型迭代和选择过程

\Delta E = Pr(\hat {y_i} \ne y) − Pr(\hat {y_{i-1}} \ne y) \tag{23}

2)F1值提升比\Delta F

\Delta F > 1 ,说明模型性能在提升。因此,我们选择最后一次提升的模型。

\Delta F = \frac{F_i}{ F_{i−1}} \tag{24}

3)投票(Vote)

对每轮迭代生成的模型model,进行加权组合成最终模型。

4)最后(Last)

直接选用最后一次迭代生成的分类器。

5) 假阴率(FNR > 5 %)

当超过已标注正样本的5%被错误预测为负类时,迭代停止。

我们用Python伪代码组织上述流程:

# 直接选用最后一次循环得到的分类器:
final_model = model_list[-1]

# 利用规则选出一个最佳分类器:
# 用最后一次循环得到的分类器 S-last 对 P 进行分类。
# 若分类结果中有超过8%条数据被判定为负,则选用第一次循环的分类器S-1。
# 否则继续选用 S-last 作为最终分类器
neg_predict = model_list[-1].predict(P)
neg_predict = np.where(neg_predict < 0.5, 0, 1).T[0]
if list(neg_predict).count(0) / neg_predict.shape[0] > 0.08:
    final_model = model_list[0]
else:
    final_model = model_list[-1]

# 对测试数据集进行分类
result = final_model.predict(X_test)

Part 5. 有偏学习(Biased PU Learning)

有偏PU Learning的思想是,把无标签样本当作带有噪声的负样本。那么,该如何把噪声考虑进PU问题模型学习过程?可以采取以下方式:

  • 噪声引起误分类,因此对错误分类的正样本置于更高的惩罚。
  • 基于适合PU问题的评估指标来调整模型参数。

Part 6. 融入类别先验(Incorporation of the Class Prior)

在完全随机选择(SCAR)假设下,我们有以下几种方案:

Postprocessing:训练一个非传统分类器,再考虑修正输出概率。
Preprocessing:基于类先验来改变数据集,再训练模型。

在前文中,我们知道类别先验 \alpha 与标签频率 c 的关系为:

c = \frac{Pr(s = 1)}{α} \tag{25}

6.1 后处理(Postprocessing)

思想:训练一个非传统分类器,再考虑修正输出概率。

在完全随机选择(SCAR)假设中,我们有一个非常重要的公式:

Pr(s = 1|x) = c Pr(y = 1|x) \\ \Rightarrow Pr(y = 1|x) = \frac{1}{c} Pr(s = 1|x)   \tag{26}

上式中,Pr(s = 1|x) 表示非传统分类器。 Pr(y = 1|x) 表示传统分类器。它们具有相同的排序性,因此:如果传统分类器的决策阈值为 \tau ,非传统分类器的阈值 \tau ^ {PU} = c \tau 。通常 \tau = 0.5 ,所以 Pr(s = 1) > 0.5c .

6.2 预处理(Preprocessing)

思想:从PU数据中,基于类先验创造一个传统二分类模型学习的训练集。

1)Rebalancing Methods
2) Incorporation of the Label Probabilities

1)Rebalancing Methods

由式 (12)可知,如果一个传统分类器的阈值为 \tau ,那么非传统分类器的阈值\tau ^{PU} = c \tau。为此,样本数据需要调整权重:

 \left\{ \begin{aligned}  w^+ =\tau (1−\tau ^ {PU}) = \tau (1 − c\tau) = (1 − c\tau) \\ w^− =(1−\tau)\tau ^ {PU} = (1 − \tau )c\tau = (1 − \tau)c \\ \end{aligned} \right.  \tag{27}

其中,w^+   w^-分别代表正负样本的权重。\tau 为传统分类器的决策阈值。当 \tau = 0.5 时,上式简化为:

 \left\{ \begin{aligned}  w^+ = 1- c/2 \\ w^− =c/2 \\ \end{aligned} \right.  \tag{28}

2) Incorporation of the Label Probabilities

以下是具体操作步骤:

  • step 1:训练一个非传统分类器 Pr(s=1|x)
  • step 2: 给样本赋予不同的权重,如下:

\left\{ \begin{aligned}   Pr(y=1|s=1,x) = 1 \\  Pr(y=1|s=0,x)= \frac{1− c}{c} \frac{Pr(s=1|x)}{1−Pr(s=1|x)}  \end{aligned} \right.   \tag{29}

Part 7. 类别先验的估计方法

从上述过程中,我们发现如果知道类别先验 \alpha ,那就能大大简化PU Learning问题。在文章开头,我们提到一般通过经验确定。那么,有没有合理的估计方法呢?

在正负样本可分的假设下,理论上一个非传统分类器 g(x) = Pr(s=1|x) 能把所有负样本预测概率为0,而把所有正样本预测为 Pr(s=1|y=1) = c

基于这种思想,我们采取以下步骤:

  • step 1:利用部分PU样本训练一个非传统分类器 g(x) ,并保留剩余样本作为验证集。
  • step 2: g(x) 对验证集中有标签样本进行预测 Pr(s = 1|x,y= 1) ,并通过下式来估计: c = avg(Pr(s = 1|x,y= 1)) .
  • step 3: 利用类别先验 \alpha 和类别频率 c 之间的关系,计算 \alpha .

Part 8. Active Learning与PU Learning的对比

在《主动学习在风控中的应用(理论篇)》中,我们认识了Active Learning。很多人会疑惑,Active Learning与PU Learning之间有什么差异和相似点?

笔者认为,两者都是为了解决:针对有标签样本很少的情况,如何去训练一个二分类模型?

在Active Learning中,专家会多次标注,逐渐扩充L(Labeled)集合,active learner则会在多次学习L集合(包含正负样本)时不停提升自己的性能,我们称之为LU setting。在打标过程中,其有以下特点:

  1. 选择策略:在从U集合中选择样本时,选择策略与模型密切相关。例如,不确定性策略是选择模型最不确定的样本进行标注。
  2. L集合产物:在模型迭代过程中,积累的L集合包括P(Positive)和N(Negative),但其没有考虑到负样本的标注实际并不可靠这一问题。
  3. 人机交互:对人的依赖严重,需要人和模型之间交互频繁。

在PU Learning中,同样需要借助人工打标,Learner则在每次迭代的时候,基于PU数据进行学习,我们称之为PU setting。但差异点在于:

  1. 选择策略:在从U集合中选择样本时,选择策略与模型相关性低,主要依赖于样本自身之间的差异。例如,1-DNF技术致力于寻找正负样本显著差异的强特征集合。
  2. L集合产物积累的L集合只包括P(Positive)。在Two-step PU Learning中,可靠负样本RN只是在模型迭代过程中的一个虚拟产物,我们总是认为负样本的标签是不可靠的。
  3. 人机交互:依赖相对较少。作为半监督学习的一种,在初始化后,可以依赖EM算法自动迭代。

因此,如何将两者结合起来,服务于实际业务场景是一个有趣的命题。

Part 9. 总结

本文系统介绍了PU Learning的相关理论,包括基本概念、操作流程、基础假设,以及与主动学习之间的对比。

下一篇中,将会介绍一些PU Learning的应用案例。

致谢

感谢参考资料的作者带给我的启发。本文尚有理解不当之处,在此抛砖引玉。

版权声明

欢迎转载分享请在文章中注明作者和原文链接,感谢您对知识的尊重和对本文的肯定。

原文作者:求是汪在路上(知乎ID)
原文链接:https://zhuanlan.zhihu.com/p/98887617

⚠️著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处,侵权转载将追究相关责任

参考资料

Learning From Positive and Unlabeled Data: A Surveywww.researchgate.net图标A Survey on Postive and Unlabelled Learningxueshu.baidu.com
Learning from Positive and Unlabeled Exampleswww.cs.uic.edu
基于 PU-Learning 的分类方法blog.xiaoduoai.com
pu-learning 方式实现半监督分类hxhen.com

关于作者

在某互联网金融公司从事风控建模、反欺诈、数据挖掘等方面工作,目前致力于将实践经验固化分享,量化成长轨迹。欢迎交流

编辑于 03-07

文章被以下专栏收录