数据挖掘之部分监督学习

本文的笔记来源于<> Bing Liu著


监督式学习:算法通过利用每个类别中的已标注数据来生成一个分类函数,需大量已标注数据来保证学习的准确性。【需大量标注,费时费力】

部分监督学习(Partially Supervised Learning):

(1)已标注和无标注数据中进行学习(Learning from Labeled and Unlabeled Examples)  【LU学习(LU Learning)】 【每个类别的数据包含少量的已标注数据和大量的无标注数据】

(2)正例和无标注数据中学习(Learning from Positive and Unlabeled Examples)【PU学习 (PU Learning)】【假设解决的是一个二分类问题,但训练数据是由正例和无标注数据组成,其中不含有反例数据】


1. 从已标注数据和无标注数据中学习(LU Learning)

学习一个分类器的一般过程是先给数据集中的数据标上一些事先定义好的种类或类别,然后利用某种学习算法从中学习得到分类器,该分类器能被 用于未知(测试)数据赋予类别标注。【瓶颈:得到一个准确的分类器,需要大量的昂贵的已标注训练数据集】


LU学习:只有一小部分的数据需要标注。

(1)使用朴素贝叶斯分类器的EM算法

EM算法是一种在存在不完整数据情况下广泛使用的进行最大似然估计的迭代算法。

EM算法分两个步骤组成:

期望过程(Exception Step,E-step):使用现有的参数估计对数据的不完整部分进行填充。

最大化过程(Maximization Step,M-step):各个参数被重新计算。

进入下一个循环,直到模型的参数不再发生变化时,EM算法收敛到一个局部最优点。

注意:EM算法实际上并不是一个具体的算法,而是一个框架或策略。简单地把一个基本算法循环运行多次。

【利用L中已标注数据建立一个分类器f,利用f对U中的无标注数据进行分类,即计算每个无标注数据点属于每个类别 的概率】



在LU学习中使用NB分类器的EM算法

推导过程中做了两个假设:

数据是由某个混合模型生成的

在混合成员和分类之间有着一一对应的关系

满足上述两个条件的EM算法有很好的运行效果,并已得以证实。


不满足条件时,解决方案:

给无标注数据加权(Weighting the Unlabeled Data)

寻找混合分量:寻找类别的混合分量(子类别)


(2)Co-Training

该方法假设数据集中的属性(或特征)可被划分 为两个集合。其中每一个都足够学习得到目标分类函数。


基于的假设:

在不同目标函数下的数据的类别分布是相容的

在给定数据的类别标识的情况下,一个特征集合中的特征与另一个特征集合中的特征是条件独立的


思想:

在每次循环中,它首先从已标数据集L的每个特征集中学习得到一个分类器,然后利用这个分类器去分类(或标注)U中的无标注数据。将U中标为类Ci的一定数据(Ni),分类可信度高的数据加入到L中。这个过程一直进行到U成为空集(或达到一定的循环次数)。在实际中,可根据类别的分布为每个类别Ci分别设定一个数据Ni。eg:在某个数据集中类别1占三分之一,类别2占三分之二,则可设定N1 = 1和N2 = 2


(3)自学习

是一种不需要特征分割的增量式算法

算法开始时,根据少量已标注数据的全部特征训练得到某种分类器(如NB分类器),利用得到的分类器去分类无标注数据集中的数据。每个类别中那些分类可信度最高的无标注文档连同它们的预测分类标识一起被放入到已标注数据集中。接下来重新训练分类器并重复上面的过程直到所有的无标注数据都被赋予了一具类别。主要思想是利用分类器的预测结果来训练自己。

(4)直推式支持向量机

SVM是进行文本分类的一个很有效的方法,在训练SVM过程中使用无标注数据的一个方法是,为无标注数据选择类别标识使得到的分类器具有最大的间隙。以标注那些已知的测试(无标注)数据为目的的训练过程被称为直推式(Transduction)的,这便是直推式支持向量机(Transductive SVM)名字的由来。【计算复杂度】


(5)基于图的方法

可看作是最近邻有监督学习(Nearest Neighbor Learning)

同时使用已标注和无标注数据时的一种扩展。

思想:把已标数据和无标注数据都当成一张图中的顶点,并使用某种相似度函数来定义各个 顶点之间边的权重。在图中,越相似顶点之间的边权重越大。对于两个被高权重的边相连的顶点来说它们的类别标识很可能是一致的,正是基于这种想法我们在图中来给那些无标的数据进行类别标注。


三种基于较长的LU学习方法:

最小割(Mincut)

高斯场

谱图直推器(Spectral Graph Transducer)


2. 从正例和无标注数据中学习(PU Learning)

 在某些应用中,需从一个混合文档中辨认出属于类P的文档,在这个混合文档集中不但含有P类文档还有其他许多类别的文档。将感兴趣的类别对应的文档称为正例文档,或者简单的称为正文档,余下的其他类别的文档被称为反例文档负文档。【可将问题看成是一个把数据分成正例和反倒的二分类问题,在训练过程中是没有反例标注数据的】


(1)问题描述

给定一个正例文档集合P和一个无标注文档集U(混合文档集),在无标注文档集中同时含有正例文档和反例文档。通过使用P和U建立一个分类器能够辨别U或测试集中的正例文档 【即想要精确分类U或测试集中的正例文档和反例文档】


应用:

从多个无标注集中学习

从不可靠的反例数据中学习

发现测试集中的突发文档

发现异常值 


(2)理论基础

问题最终被转换成一个有限制的最优化问题(Constrained Optimization Problem),即算法试图在使得正例数据中的错误率低于1-r的情况下最小化无标注数据中正例数据的数目。


基于限制最优化问题,可采用两种方法来建立PU分类器:

两步方法(Two-step Approach)

直接方法(Direct Approach)


(3)建立分类器:两步方法

两个步骤组成:

A.从无标注数据集U中发现一些可靠的反例文档集合(Reliable Negative Documents)(RN)

B.利用P、RN和U-RN(Q=U-RN,Q也被称为可能正比例集)来建立分类器,根据RN集合中数据的质量和数量的不同,在该步骤中可能会使用某个现有的学习算法一次或循环使用多次。


A中所采用的技术:

间谍技术(Spy Technique):该技术从正例标注集P中选取一些“间谍”文档发送到无标注数据集U中去,

a.随机地从P中选取一个正例文档集合S,并把S加入到U中

b.通过把P-S当成是正例集合,Us当成是反例集合,在这两个集合上运行朴素贝叶斯算法,得到NB分类器 被用于给Us中的每个文档d进行分类,即为每个文档赋予一个概率类别标识Pr(1|d),其中1代表正例类别

c.利用间谍文档的概率标识来决定哪些文档最有可能是反例。使用一个阈值t来确定,U中那些概率Pr(1|d)小 于t的文档被认为是最有可能的反例文档,用RN表示。


1DNF技术:首先建立一个正例特征集合PF,其中包括那些在正例集合P中出现次数大于在无标注数据U中出现次数的单词,得到U与P中出现的所有单词并得到一个词汇表V,从U中发现可靠反例文档,U中的某个文档如果不含有PF中任何特征的话被认为是一个可靠的反例文档。


NB(朴素贝叶斯)技术:用NB分类器从无标注数据集U中发现一组可靠反例集合RN。


Rocchio技术:与NB技术类似,只需有Rocchio分类器代替NB分类器。




B中所采用的技术:

在P和RN上运行一个学习算法(如NB或SVM),集合U-RN中的文档不在考虑范围内;迭代地运行某个学习算法直到它收敛或达到某个停止条件。


使用NB分类器的EM算法

迭代SVM(Iterative SVM):该方法中,SVM通过使用P,RN和Q(U-RN)不断地循环运行。

选择分类器


(4)建立分类器:直接方法

偏置SVM(Biased-SVM):通过驿SVM公式的修改使得它适用于PU学习。

无噪间情况:在正例集合中不存在错误,错误仅仅只出现在无标注数据集合中。

有噪音情况:实际情况中,正例数据集合中也可能含有一些错误。若容许噪音(错误)出现在正例集合中,将得到软间隙版本的偏置SVM,其中使用了两个参数C+和C-给正例错误和反例错误赋予不同的权重。
































你可能感兴趣的:(数据挖掘)