当前位置:   article > 正文

PU学习相关知识

pu学习

一、 UCI上的12个数据集(如何预处理)

(1)首先需要将多类别转化为两类别,positive和negative,论文"Positive and Unlabeled Learning with Label Disambiguation"中的多类别转两类别是将其中几个类别样本看作是positive(在本文中是先分开,之后处理完之后再训练模型之前加百分之p的正样本作为unlabeled samples),剩余的类别样本看作是negative。似乎是相似的类别转化为同一个类别!
(2)需要对数据进行预处理,即归一化,xi=x1/(x_max-x_min)即可。
(3)再从positive样本中取出部分与negative一起构成unlabeled data即可成功转化为positive 和negative样本。

breast数据集699instance,但是有16instance数据缺失,故只用了683instance,9attribute+1个class,类别只有两类,2表示良性,4表示恶性,在实验中,将恶性病视为是阳性样本,可以轻易获得,但是良性样本为无标记样本,有一定实际意义,其余数据均是如此操作。

二、对比实验

1. CL

2. uPU

三、评估目标函数的模型(liblinear)

注意,liblinear就是个线性分类器,得到的W就是每一个维度的权重,predict预测得到的就是预测的值跟真实值的区别。(这里predict用在衡量模型在positive数据上的正确度)

 W = model.w;    %dateUN数据中每一个维度的权重。
%注意维度问题:W是1*N(N为population中每个粒子的维度,即unlabeled数目)
%dataUN是N*M(N表示每个样本的维度,M是样本个个数),最后就得到了M个样本的得分。
%W不就是线性拟合得出的权重吗!!!
evaluation1(i,:) = W*dataUN;% the scores of every unlabeled datas.
  • 1
  • 2
  • 3
  • 4
  • 5

上述的MATLAB代码是计算population中第i个个体的P_UAR值的第一步,需要评价出第i个体中每一维度也就是unlabeled每个个体的得分。第二步:让unlabeled个体按分数值排序,计算出分数值大的负样本后面的正样本总数(这个值越小越好,因为分数值越大越有可能为正样本)

2.线性分类器

注意与线性回归、逻辑回归区分开,在这里是直接通过模型可以预测样本类别,二分类以及多分类等等。

下面为一个三分类的栗子(PS:这里的W不好,预测结果灰常的不准确。)
W*x+b--->f
(1)这里的W是权重,对于二分类器而言只需要一个输出即可,可以设置阈值直接判断属于哪个类,但是对于多分类器而言,有N个分类器最后就要输出一个1*N的向量,对应的最大值的那个类别就是最终预测出的类别。而W中每一个列向量就是一个分类器,对应第i个分类的分类器。

(2)对于样本数很多,需要预测的数据也很多时,线性分类器要比KNN好很多,KNN每预测
一个就需要计算全部训练样本里评价样本最近的K个样本,计算量很大,但是对于线性回归算法则不需要,经过训练得出分类器之后就可以不再管训练样本了,之后只要输入待测样本,进行向量计算即可。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

四、两个新的策略

1、基于PU相似度的初始化策略

是基于Similarity-Based Approach for Positive and Unlabelled Learning论文中的基于全局相似度的权重方法推出的,只不过在那篇论文中计算距离使用的余玄相似度cosine similarity,而本篇论文是也是计算PU相似性,但是只计算了跟正样本的相似性,这里的相似性也是权重。在initiate population中,先随机生成第i个样本中1的维度的最大个数m(选择允许存在重复!!!),然后for循环m次,每次从中选出两个维度,PU相似度大的那个维度值设置为1即可。

五、最后的对比实验

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/434288
推荐阅读
相关标签
  

闽ICP备14008679号