PU Learning-two stage approach(两阶段法)-S-EM

最近遇到了一个问题,一堆数据集,但是只有正例标签(Positive),没有负例标签(Negative),这样的话,如果想要直接训练学习是很难的,因为这相当于训练集各个class分布极不均匀,根本无法训练,这时就需要用到机器学习中的PU learning了,也就是positive-unlabeled learning。
PU learning有1种常见的解决思路——two stage approch
两阶段法
第一步,先识别出一些可靠的负例;
第二步,利用第一步的负例和原有的正例,去训练一个分类器,便可以实现分类了。
两阶段法有多种实现手段,这里介绍的S-EM算法,也就是spy-EM算法。
S-EM
step1:
在这里插入图片描述
step1的思路是利用间谍样本对Unlabled中的正例有一个大致的了解,然后去取一个阈值下界,进而将Negetive的样本得到。
step1的目标是得到P(正例样本),N(负例样本),U(未标记样本)

step2:
在这里插入图片描述
step2的思路就是利用第一步的P,U,N三个样本使用EM算法来得到一个分类器,利用最终得到的这个分类器来将样本进行分类。

以上就是所有的S-EM算法了,只看这个算法还是有点迷糊的,因为其中的I-EM和EM算法没有进行很好地讲解,目前我还未完全搞懂这个,容我再看看论文,再来补充把
——————————————————————————————————
下面就来补充一下I-EM和EM算法
EM
EM算法是一个通过不断迭代来求解出隐变量的算法。

  • E步:(Z为隐变量集,X是特征变量集)
    以当前参数mt推断隐变量分布P(Z|X,mt),并计算对数似然LL(mt|x,z)关于Z的期望(加粗意为向量)
    Q(m|mt)=E (z|x , mt) = LL(m|x,z)
  • M步:
    寻找参数最大化似然,即
    mt+1 = arg max Q(m | mt)
    通过这两部不断地迭代,收敛后就可以得到对应地隐变量集了

I-EM
在这里插入图片描述
I-EM算法中地第5步也就是利用EM算法迭代出一个新地贝叶斯分类器,具体如下:
在这里插入图片描述
————————————————————————————————————

上面就是S-EM的理论部分了,本次我遇到的实际问题如下,有一些车辆已经知道是C1类型的车辆了(P),还有更多的车辆我不知道是什么类型的车辆(U),现在希望通过两个feature:x1,x2来识别出U中的C1车辆。

Algorithm

note:这个S-EM已经是我修改后的,和上面的S-EM并不完全一样,一方面是为了简化,更容易编程实现,另一方面也是因为该问题和上述的论文中遇到的例子并不完全一样。此算法主要是适用于离散型的数据的,也就是属性是离散的,因为离散型的数据训练朴素贝叶斯会有类别不均衡的问题,而连续型的一般用高斯朴素贝叶斯,受类别不均衡影响较小(详见我的另一篇博文:https://blog.csdn.net/qq_39805362/article/details/91129684
),所以不需要使用再缩放,其他的话应该都是一样的

stage1

  1. N=U=None;
  2. S = sample(P,s%) , s = 15%;
  3. MS = M U S;
  4. P = P - S;
  5. 将P中的样本的标签都标记为‘1’;
  6. 将MS中的样本的标签都标记为’0’;
  7. LOOP IF 样本标签有所改变 or 迭代次数达到上限m(m = 10):
    利用P和MS来训练朴素贝叶斯分类器(若正负例数量差异大,则需进行欠/过采样或再缩放的策略,并对MS中的样本进行分类。
    END LOOP
  8. 利用最终得到的贝叶斯分类器对所有MS中的样本归属于1的概率Pri进行计算;
  9. 将所有的spy样本的Pri从小到大进行排序,取阈值t为10%的pri;
  10. 将Pr < t的样本标记为‘0’,形成N集合;
  11. 除了P,N外的样本组合成了U集合,U集合中的样本没有给予标记;

stage2

  1. 将SPY样本放回到P中,形成新的P , N , U ;
  2. 置P中的样本的标签为1,N中的样本的标签为0,训练朴素贝叶斯分类器;
  3. 对所有的样本进行分类,P样本的标签不改变,U,N样本的标签根据训练结果进行修改;
  4. LOOP IF 样本的标签改变 or 达到最大的循环次数m , m=10:
    利用正负例训练朴素贝叶斯分类器,并对样本进行分类;
    END LOOP
  5. 最后收敛时的贝叶斯分类器就是最佳贝叶斯分类器,利用该分类器对样本进行分类。

——————————————————————————————————————————
我的这个问题属性都是连续的,因此我使用的高斯贝叶斯来做分类器,与上面的算法略有不同,我没有使用类别不均衡学习,最后得到的结果还算可以,一方面较符合实际,另一方面,得到的错误率即将原本标签为正例识别为负例的比率为5.58%。

参考文献
Bing Liu et.al Partially Supervised Classification of Text Documents
Bing Liu et.al Building Text Classifiers Using Positive and Unlabeled Examples
周志华.西瓜书

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值