数据挖掘之部分监督学习

本文的笔记来源于<<Web 数据挖掘>> 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-给正例错误和反例错误赋予不同的权重。
































  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据挖掘与数据分析 数据挖掘与数据分析 ⼀、数据挖掘和数据分析概述 数据挖掘和数据分析都是从数据中提取⼀些有价值的信息,⼆者有很多联系,但是⼆者的侧重点和实现⼿法有所区分。 数据挖掘和数据分析的不同之处: 1、在应⽤⼯具上,数据挖掘⼀般要通过⾃⼰的编程来实现需要掌握编程语⾔;⽽数据分析更多的是借助现有的分析⼯具进⾏。 2、在⾏业知识⽅⾯,数据分析要求对所从事的⾏业有⽐较深的了解和理解,并且能够将数据与⾃⾝的业务紧密结合起来;⽽数据挖掘不需 要有太多的⾏业的专业知识。 3、交叉学科⽅⾯,数据分析需要结合统计学、营销学、⼼理学以及⾦融、政治等⽅⾯进⾏综合分析;数据挖掘更多的是注重技术层⾯的结 合以及数学和计算机的集合 数据挖掘和数据分析的相似之处: 1、数据挖掘和数据分析都是对数据进⾏分析、处理等操作进⽽得到有价值的知识。 2、都需要懂统计学,懂数据处理⼀些常⽤的⽅法,对数据的敏感度⽐较好。 3、数据挖掘和数据分析的联系越来越紧密,很多数据分析⼈员开始使⽤编程⼯具进⾏数据分析,如SAS、R、SPSS等。⽽数据挖掘⼈员 在结果表达及分析⽅⾯也会借助数据分析的⼿段。⼆者的关系的界限变得越来越模糊。 ⼆、数据挖掘 1 数学预备知识 概率论:⽀撑整个数据挖掘算法和机器学习算法的数学基础,要熟悉常见的⼀些概率分布。 矩阵论:线性代数中对数据挖掘最有⽤的部分,还有⼀些线性空间相关知识也很重要。 信息论:将信息和数学紧密连接在⼀起并完美的表达的桥梁,需要掌握信息熵、信息增益等相关知识。 统计学:数据分析最早的依赖基础,通常和概率论⼀起应⽤,现在的机器学习和数据挖掘很多都是基于统计的,常见的均值、⽅差、协⽅差 等都要熟练掌握。 2 编程基础 数据挖掘需要⼀定的编程基础,因为要实现模型以及数据的处理很多⼯作都是需要程序来进⾏的,数据挖掘常⽤的编程语⾔如下: SQL:数据库的熟练使⽤是任何数据挖掘⼈员必不可少的技能。 C++ :有很多的标准模板库以及机器学习模型库进⾏调⽤可以⽅便编程实现。 Python:对字符串处理有极⼤的优势,是解释型语⾔,实现简单,⽽且有很多开源的机器学习模型库的⽀持,可处理⼤规模数据。 Matlab:拥有强⼤的矩阵运算,也是解释型语⾔,有很多发展较成熟库可以直接调⽤,⽀持数据结果的可视化表⽰,但是处理数据量有 限。 R:近年兴起的数据分析编程语⾔,数据可视化做的⽐较好,语法简单,学习成本很低,很多⾮程序设计⼈员都可以数量掌握。 Java:使⽤范围最⼴的编程语⾔,有很多社区进⾏交流,进⾏编程实现具有灵活⾼效的特点,不⾜之处就是实现功能的代码量较⼤(相对于 其他数据挖掘编程语⾔)。 Scala: ⼀种具有⾯向对象风格、函数式风格、更⾼层的并发模型的编程语⾔。同时Scala是⼤数据处理平台Spark的实现语⾔。 3 数据挖掘的模型知识 机器学习和数据挖掘是紧密相关的,要进⾏数据挖掘需要掌握⼀些机器学习所⽤的⽅法和模型知识,通过模型的训练可以得到处理数据的最 优的模型。数据挖掘常⽤的模型如下: 3.1 监督学习模型 就是⼈们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到⼀个最优模型(这个模型属于某个函数的集合,最 优则表⽰在某个评价准则下是最佳的),再利⽤这个模型将所有的输⼊映射为相应的输出,对输出进⾏简单的判断从⽽实现分类的⽬的,也 就具有了对未知数据进⾏分类的能⼒。 3.1.1决策树: 决策树是⽤于分类和预测的主要技术之⼀,决策树学习是以实例为基础的归纳学习算法,它着眼于从⼀组⽆次序、⽆规则的实例中推理出以 决策树表⽰的分类规则。构造决策树的⽬的是找出属性和类别间的关系,⽤它来预测将来未知类别的记录的类别。它采⽤⾃顶向下的递归⽅ 式,在决策树的内部节点进⾏属性的⽐较,并根据不同属性值判断从该节点向下的分⽀,在决策树的叶节点得到结论。 主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采⽤的技术、⽣成的决策树的 结构、剪枝的⽅法以及时刻,能否处理⼤数据集等⽅⾯都有各⾃的不同之处。 3.1.2 贝叶斯⽅法: 贝叶斯(Bayes)分类算法是⼀类利⽤概率统计知识进⾏分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利⽤Bayes定理 来预测⼀个未知类别的样本属于各个类别的可能性,选择其中可能性最⼤的⼀个类别作为该样本的最终类别。由于贝叶斯定理的成⽴本⾝需 要⼀个很强的条件独⽴性假设前提,⽽此假设在实际情况中经常是不成⽴的,因⽽其分类准确性就会下降。为此就出现了许多降低独⽴性假 设的贝叶斯分类算法,如TAN(Tree Augmented Native Bayes)算法,它是在贝叶斯⽹络结构的基础上增加属性对之间的关联来实现 的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值