一种基于Spark的半监督随机森林分类方法

文档序号:10687605阅读:769来源:国知局
一种基于Spark的半监督随机森林分类方法
【专利摘要】本发明公开了一种基于Spark的半监督随机森林分类方法,利用随机森林算法在训练数据集合上采用有放回抽样,列属性上也采用有放回抽样,因此在行方向和列方向都加入了随机性,既保证了决策树的多样性,又不需要进行树剪枝,而且采用投票法决定类别,准确率大大提高。因此,本发明提供的随机森林算法在处理高维数据样本时不需要进行降维。不管是对于稀疏向量和稠密向量随机森林算法都具有很好的效果。经过多组实验验证,本发明提供的半监督学习算法降低了分类模型错误率均值;提升了计算性能。
【专利说明】
一种基于Spark的半监督随机森林分类方法
技术领域
[0001] 本发明涉及机器学习分类算法技术领域,特别是一种spark通用并行框架、Tri-Training 半监督分类和分布式随机森林分类算法。
【背景技术】
[0002] 分类问题是机器学习领域的范畴,是一种常用的数据分析技术,主要用来确定某 目标对象属于哪个预定义的目标类。在许多领域具有广泛的应用,包括数据挖掘、统计学 习、神经网络等。机器学习领域,常用的研究方法分为两种,一类是监督学习,另一类是无监 督学习。传统的分类模型需要在带标签样本集合的基础上训练得到,属于监督学习。实际应 用中,对于数据的标签化工作受到各方面因素的限制,有时甚至需要付出昂贵的代价。而相 对于带标签样本,无标签样本数据的获取工作则相对简单,利用无标签样本进行学习的过 程,成为无监督学习。而半监督学习(Semi-supervised Learning)则是介于监督学习和无 监督学习之间的方法。它是在实际应用的驱动下而产生的一种学习方法,主要研究训练数 据中的部分信息缺失的背景下,如何获得具有理想性能和推广能力的学习模型。而半监督 分类(Semi-supervised Classifi cat ion)方法中,从监督学习的角度为出发点,考虑在带 标签样本不足的情况下,如何利用无标签样本的信息辅助分类模型的训练,从而提高模型 的泛化能力。
[0003] 目前,半监督学习在不同领域具有广泛应用,从事机器学习领域的学者提出了许 多半监督学习方法,主要分为:基于生成式模型、基于直推式学习、基于图模型、协同训练 等。对于产生式模型,主要是在模型的优化过程中进行参数的估计,由于一部分参数的估计 不需要样本标签信息,因此在参数估计过程中引入无标签数据。基于直推式学习中,研究较 多的是直推式支持向量机(Transductive Support Vector Machines),它的核心思想是优 化问题,通常只考虑某个特定的数据集,试图最小化分类模型在该数据集上的误差率。基于 图模型的方法,是将样本集合看作一个数据邻接图,利用无数据标签信息的需要对该图进 行分割。典型方法包括图的最小分割(Graph MinCut),离散马尔可夫随机过程等。协同训练 方法是一般化的学习框架,它要求训练数据集包含两个独立且冗余的数据视图,并能够独 立训练分类器,并给对方提供本身预测的置信度高的样本进行分类器的重新训练。其中基 于协同训练的有Self-Training、Co-Training、Tri-Training、Co-Forest等。然而目前的半 监督分类算法都只能以单机模式处理小批量的数据,无法处理大量数据,也无法直接拿到 分布式平台(如spark ,hadoop)上实现并运行。需要对算法进行改变,以适应大规模分布式 集群计算。

【发明内容】

[0004] 有鉴于此,本发明的目的是在面对少量有标签数据和大量无标签数据时,利用分 布式内存计算平台spark实现一个基于Tri-Training的半监督随机森林算法。以解决人工 标记样本成本过高、样本数据过大单机无法快速执行、训练样本过少无法得到具有较高分 类准确率的分类模型和无法利用大量廉价无标签数据等问题。
[0005] 本发明的目的是通过以下技术方案来实现的:
[0006] 本发明提供的一种基于Spark的半监督随机森林分类方法,包括以下步骤:
[0007] SI:将标签训练样本切分为第一二标签训练样本并用第一训练样本训练第一随机 森林模型~、第二随机森林模型 <和第三随机森林模型K ;
[0008] S2:针对第一随机森林纪,根据第二随机森林C和第三随机森林冗,对第二标签训 练样本进行分类,如果第二随机森林< 和第三随机森林< 的分类结果相同且都不等于标签 值,则错误数加一;计算标记错误率4 ;
[0009] S3:根据第二随机森林/《,和第三随机森林 < 对无标签数据集U进行分类,如果分类 结果相同则进行类别标注,如果不同则删除,得到带标签数据集
[0010] S4:判断错误率是否满足条件:e丨Cep1,如果是,则进行步骤S6;如果否,则将第一 随机森林hi改为第一随机森林/^1的上一轮的值;
[0011] S5:设置带标签数据集/T1的初始值:
[0012] S6:判断带标签数据集是否满足公式:4,如果是,则进行步骤S8;如果否,则 对第一随机森林Iu不做更新;
[0013] S7:判断是否满足公式 如果是,则进行步骤S9;如果不满足


但满足 则进行步骤SlO,如果都不满足则第一随机森林Iu不做 更新;
[0014] S8:根据公式十算并重新训练第一随机森林h1;
[0015] S9:从带标签数据集4中无放回抽样,抽出数量满足公: ,抽出的 样本子集作为端,然后同步骤S9重新训练第一随机森林hl;
[0016] S10:当第一随机森林模型¥、第二随机森林模型私和第三随机森林模型<都不进 行更新的时候结束半监督学习分类模型训练,否则回到步骤S2继续重复训练;
[0017] Sll:利用第一随机森林模型纪、第二随机森林模型私和第三随机森林模型<对测 试样本进行分类。
[0018] 进一步,所述步骤Sl中按照以下方式将标签训练样本切分为第一标签训练样本和 第二标签训练样本:
[0019] 所述第一标签训练样本为标签训练样本的70-90%,第二标签训练样本为标签训 练样本的30-10%,并用第一标签训练样本反复训练第一随机森林模型允第二随机森林模 型私和第三随机森林模型K。
[0020] 播1 一来· WjItRifea磨S5中按照以下公式来计算带标签数据集if1'的初始值:
[0021]
[0022] 其中,< 表示初始化的新标记无标签数据集,为防止第一次迭代计算时如果I?大 小为〇无法满足条件4|4|< 4吟|进而无法进行后续计算,利用上述公式初始化I?大小;因为 每一轮计算过程中都要判断< <|/^|需要上一轮的ef和片1,而第〇次迭代不存在所 以给予人工初始化满足判断条件。
[0023] £丨表示;第t轮迭代,利用第t-Ι轮训练出的随机森林Λ丨广和/(m# i辛η)从无标签 数据集U中选择高置信度的数据构成然后用训练新的随机森林¥。
[0024] e广表示Zt3和<-2对1的标记错误率;
[0025] 4表示随机森林C1和/C1(H^Wn)从无标签数据集U中选择高置信度的数据构成 数据集<,< 为/C1和C1对4的标记错误率。
[0026] 进一步,所述标记错误率e丨的取值范围为〇<? <0.5。
[0027] 由于采用了上述技术方案,本发明具有如下的优点:
[0028] 本发明提供的随机森林算法在训练数据集合上采用有放回抽样,列属性上也采用 有放回抽样,因此在行方向和列方向都加入了随机性,既保证了决策树的多样性,又不需要 进行树剪枝,而且采用投票法决定类别,准确率大大提高。因此,本发明提供的随机森林算 法在处理高维数据样本时不需要进行降维。不管是对于稀疏向量和稠密向量随机森林算法 都具有很好的效果。经过多组实验验证,本发明提供的半监督学习算法降低了分类模型错 误率均值;提升了计算性能。
[0029] 本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并 且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可 以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和 获得。
【附图说明】
[0030] 本发明的【附图说明】如下。
[0031] 图1为本发明的基于Spark的半监督随机森林分类算法流程示意图。
[0032] 图2为本发明的随机森林训练流程示意图。
[0033] 图3为本发明的分类标签流程示意图。
[0034] 图4为本发明的随机森林更新迭代流程示意图。
【具体实施方式】
[0035]下面结合附图和实施例对本发明作进一步说明。
[0036] 实施例1
[0037]本发明提供的基于Spark的半监督随机森林分类方法具体原理如下所述:
[0038]根据Angluin和Laird的论文噪音学习,如果训练集大小为m,噪音为n,错误率为ε, c是个常暈。则满足关系:
[0039] (1)
[0040] 为了简化计算,有必要计算常量c与错误率平方的商。
[0041] ⑵
[0042]用U表示无标签数据集,L表示有标签数据集。hi,h2,h3表示三个随机森林模型。 [0043] 对于hi在第t次tri-training训练循环中,先用h2,h3对U无标签数据集标记,选择 标记相同的样本并标记,记为Lt,其标记错误率为然后用LU Lt表示新训练集,新训练集 大小为mt,也可以用I LU Lt I表示。同理第t-Ι轮分别表示为Lt-I1,L U Lt-I,mt-l,I LU L*-11。
[0044] 用η表示原始有标签数据集L的噪音,用Ilt表示ILULt I的噪音。则针对hi的第t次训
[0050] 因为公式(2)# = ^ c为常量,所以如果满足则Ρ<εΜ,错误率下降。所以L , 练。
[0045]
[0046]
[0047]
[0048]
[0049] 得到公式:
[0051]
[0052] 因为η比较小,而弱分类器错误率至少低于〇. 5,即〇 < ei,tf1 < 0.5。所以要满足公 式(6)需和IOlLt-1U因为需要每次训练都比上一次训练效果好,新加入 的样本标记错误率<应小于f p所以
[0053]
(7)
[0054] 可能出现I Lt I特别大,大出I广11很多,而ei也小于<1。但出5
所 以当I Lt I过大是需要对h2,h3新标记的样本进行抽样得到Lt,大小设为S。
[0055] C8>
[0056] 公式(8)的前提条件是ΙΛ1满足公式(9),只有满足公式(9)的情况下,Lt在抽样之 后的大小仍然大于Lt 1。
[0057] (9)
[0058]上述是理论依据。其中有一个假设。h2,h3对无标签样本U标记,并选择标记相同的 样本,^是此标记错误率,但此标记错误率是无法评估的。不过有标签样本和无标签样本是 独立同分布的。可以用h2,h3对L有标签样本中的部分样本分类,并计算分类错误率,来模拟 4。此处选择有标签样本L的子集的方法有两种,一种是选择h2,h3上次构建时抽样没有选 择到的部分L样本。这种细微化的操作在分布式环境下很难做到或者空间时间消耗过大。另 外一种是,在第一次训练之前就取一小部分带标签数据(如L的20%),单独用于计算不用 来做分类模型训练。
[0059]本实施例提供的基于Spark的半监督随机森林算法的具体步骤如下:
[0060] (1)将有标签训练样本切分为两份一份80%,一份20%,并用80%的训练样本反复 训练三个随机森林模型,这80%的训练样本即为理论支撑中的L。每次训练是无需对有标签 样本进行有放回抽样,因为随机森林的训练已经在行抽样和列属性抽样上加入了随机性。 随机森林的训练是基于分布式环境下的改进优化算法。主要实现了三个优化策略:切分点 抽样统计、特征装箱、逐层训练。本实施例提供的spark的随机森林算法实现了这三个优化 策略,spark随机森林算法为本半监督算法中的一部分,即spark开源的随机森林算法。
[0061 ] (2)使用另一份20%的有标签训练样本。针对每一个随机森林#,用另外两个随机 森林^,对带标签样本点point分类,如果<,€的分类结果相同且都不等于真实标签 值,则错误数加一。计算标记错误率<。
[0062] (3)使用无标签数据集U。针对每个随机森林纪,用另外两个随机森林<和< 对无 标签数据点分类,如果分类结果相同则进行类别标注,不同则筛选掉,得到带标签的数据集
[0063] 本实施例的带标签的数据集L:采用如下方法:若<和/<对无标签数据点p的分类 都为类c,则将带标签数据<c,P>添加到带标签数据集右
[0064] (5)针对随机森林<,如果< <<则进行第(6)步,否则,随机森林Iu改为上一轮的 随机森林&Γ1。
[0065] (6)针对随机森林¥,如果IT1的大小为〇(也就是初始化的时候把|4|都设为〇,把4 都设为0.5),则i
。其中,为了避免第一轮迭代计算时I右I数值太大,无法满 足即(8)中公式需要计算带标签数据集Zf1的初始值;
[0066] 其中,< 表示初始化的新标记无标签数据集,为防止第一次迭代计算时如果#大 小为〇无法满足条件¥|4|<<吟|进而无法进行后续计算,利用上述公式初始化Z?大小;因为 每一轮计算过程中都要判断私I <<?4_?需要上一轮的 < 和#,而第〇次迭代不存在所 以给予人工初始化满足判断条件。
[0067] 在表示;第t轮迭代,利用第t-Ι轮训练出的随机森林和/ifU辛i辛η)从无标签 数据集U中选择高置信度的数据构成私,然后用LuL:训练新的随机森林/^。
[0068] C1表示/C2和^对P的标记错误率;
[0069] <表示随机森林t和/^从无标签数据集U中选择高置信度的数据构成 数据集篇,4为C1和Λ,"对右的标记错误率。
[0070] (7)针对随机森林圮,如果#< g则进行第⑶步,否则此次随机森林Ill不做更新。
[0071] (8)针对随机森林¥,如·
W进行第(9)步,如果不满足
?则进行第(10)步,如果都不满足则此次随机森林Iu不做 更新。
[0072] (9)利用重新训练随机森林hi。
[0073] (10)从数据集与中无放回抽样,抽出数量满足公式(8),抽出的样本子集作为写, 然后同第(9)步重新训练随机森林lu。
[0074] (11)当一轮迭代三个随机森林都不进行更新的时候结束半监督学习分类模型训 练。否则回到第(2)步继续训练。
[0075]分类预测:
[0076]使用训练好的三个随机森林模型对测试样本进行分类投票,票数高的分类类标作 为分类结果。
[0077]本实施例提供的算法可抽象为无限循环的三个大步骤:选无标签数据、三个森林 投票分类、选得票高的当做有标签的数据加上以前的训练数据再次训练更新hi。
[0078] 4是本轮选数据时选出的高得票的。由于在选4的时候为了限制4训练集的大小, 如果过大就不满足I < 了,后面用过大的C更新hi就得不到更优的模型,所以本 实施例采用无放回的抽取。
[0079] 数据选好之后随机森林hi是用训练集丨重新训练更新。使用标准的随机森林 算法,随机森林是由多棵决策树构成,每棵决策树在ZuL丨上有放回抽样选取数据点作为训 练集(每个决策树的训练集不一样),属于行随机性。每个数据点可能有几个到几十个的属 性。随机有放回抽取一部分属性做决策树训练(每个决策树有放回抽取的属性集不一样), 属于列随机性;因此行随机性和列随机性是随机森林算法的特性,两个随机性保证了决策 树的多样,进而保证了这个森林的多样。
[0080] 下面结合模型训练流程更详细地说明本发明提供的基于spark的半监督随机森林 算法,所述模型训练流程图分三个大步,如图2-4所示,其中图中每个方框代表一个spark RDD,具体流程图如下:
[00811图2中,L表示有标签的数据集,对L进行切分,LA是L的80%,LB是L的20%。利用LA 和s p a r k M11 i b机器学习库中的随机森林算法,重复三次训练,训练出随机森林 RandomForestA(RFA)、RandomForestB(RFB)、RandomForest(RFC);
[0082] 图3中,方框都表示spark RDD,point表示数据点,labelA、labelB、labelC分别代 表随机森林RFA、RFB、RFC对point分类预测得到的分类标签。Label代表有标签数据集LB中 数据点的真实分类标签。首先利用RFA、RFB、RFC分别对所有LB中的point分类得到labelA, labelB,labelC。之后利用spark RDD的操作,RDD转换过滤得到三个分类错误率。
[0083]图4中,U表示无标签数据集,先利用RFA、RFB、RFC分别对所有U中的Po int分类得到 IabelA,labelB, labelC。然后经过RDD转换过滤分别得到高置信度的数据集,最后根据前述 步骤中的条件更新随机森林1^^、1^8、1^(:,如果无随机森林得到更新则训练结束,如果有随 机森林进行了更新则回到图3所述步骤利用新的随机森林继续迭代计算。
[0084]模型构建完成之后分类预测部分使用三个随机森林模型对待分类样本进行投票 分类。
[0085]本实施例提供的算法主要体现在以下五个方面:
[0086]将tri-training半监督分类算法与spark随机森林算法结合实现半监督分类。 [0087] 使用分布式环境下基于RDD内存计算的方式实现tri-training半监督学习,并在 算法步骤有做了一些改进。分布式:(2)(3) (9)(10)多线程:(5)(6)(7) (8)(8)(10)并行计 算:⑵⑶(9)(10)〇
[0088] 分布式环境下基于spark的RDD并行化处理。分别表现为:基于多线程并行初始化 三个随机森林(线程内部基于RDD分布式计算);基于RDD并行计算< ;基于RDD并行计算;; 基于多线程(线程内部根据理论分析条件和RDD操作)并行更新随机森林模型。
[0089]
[0090]当< 广时,说明最新的训练模型<相比前一次的训练模型A广没有减少反而增 加了误差,所以Iu保存为上一轮的训练模型P。
[0091] 本实施例采用MINIST数据库。此数据库是Google实验室的Corinna Cortes和纽约 大学柯郎研究所的YannLeCun建立的一个手写数字数据库。含有8100000条带标签数据。类 别有10类,特征有784个。数据采用Iibsvm数据格式。
[0092] 实验一:使用1600条有标签数据作为训练集LA,400条有标签数据作为训练集LB, 98000条无标签数据作为U,100000条带标签数据作为测试集。进行本发明算法的半监督分 类学习和训练。并与基于spark的随机森林算法实验进行对比。经过多组实验验证,本发明 的半监督学习算法得到的分类模型错误率均值为19.168%。而基于spark的监督随机森林 模型的分类错误率为22.86%。本次实验说明本算法性能提升超过百分之三。
[0093] 实验二:使用1600条有标签数据作为训练集LA,400条有标签数据作为训练集LB, 298000条无标签数据作为U,700000条带标签数据作为测试集。经过多次实验本发明的半监 督分类模型错误率均值为19.276%。而基于spark的监督随机森林模型错误率为25.24%。 性能提升在6%左右。本次实验中,通过不断增加无标签训练集U的大小,观察本发明半监督 分类模型的分类错误率变化。实验结果如下表1所示:
[0094] 表 1
[0096]实验结果证明了随着训练样本的增加,训练模型分类错误率不断下降。表明本发 明的分布式环境下的半监督学习算法能起到预想的效果。
[0097]最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较 佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技 术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明 的权利要求范围当中。
【主权项】
1. 一种基于Spark的半监督随机森林分类方法,其特征在于:包括以下步骤: S1:将标签训练样本切分为第一二标签训练样本并用第一训练样本训练第一随机森林 模型Λ,'、第二随机森林模型尺和第三随机森林模型} S2:针对第一随机森林以,根据第二随机森林<和第三随机森林<,对第二标签训练样 本进行分类,如果第二随机森林 <,和第三随机森林紀的分类结果相同且都不等于标签值, 则错误数加一;计算标记错误率4; S3:根据第二随机森林g和第三随机森林欠对无标签数据集U进行分类,如果分类结果 相同则进行类别标注,如果不同则删除,得到带标签数据集骂. S4:判断错误率是否满足条件:4 ,如果是,则进行步骤S6;如果否,则将第一随机 森林hi改为第一随机森林/f1的上一轮的值; S5:设置带标签数据集/T1的初始值: S6:判断带标签数据集是否满足公式:ir < 4,如果是,则进行步骤S8;如果否,则对第 一随机森林hi不做更新; S7:判断是否满足公式:如果是,则进行步骤S9;如果不满足 片?但满足则进行步骤S10,如果都不满足则第一随机森林lu不做 更新; S8:根据公式计算并重新训练第一随机森林比; S9:从带标签数据集局中无放回抽样,抽出数量满足公式抽出的样本 子集作为4,然后同步骤S9重新训练第一随机森林h1;S10:当第一随机森林模型#、第二随机森林模型私和第三随机森林模型欠:都不进行更 新的时候结束半监督学习分类模型训练,否则回到步骤S2继续重复训练; S11:利用第一随机森林模型 <、第二随机森林模型 <和第三随机森林模型/<对测试样 本进行分类。2. 如权利要求1所述的基于Spark的半监督随机森林分类方法,其特征在于:所述步骤 S1中按照以下方式将标签训练样本切分为第一标签训练样本和第二标签训练样本: 所述第一标签训练样本为标签训练样本的70-90%,第二标签训练样本为标签训练样 本的30-10%,并用第一标签训练样本反复训练第一随机森林模型瑢、第二随机森林模型疋 和第三随机森林模型圮。3. 如权利要求1所述的基于Spark的半监督随机森林分类方法,其特征在于:所述步骤 S5中按照以下公式来计算带标签数据集iT的初始值:其中,表示初始化的新标记无标签数据集; 4表示;第t轮迭代,利用第t-Ι轮训练出的随机森林/^1和乒i乒η)从无标签数据 集U中选择高置信度的数据构成右,然后用1^//(训练新的随机森林 表示C2和C 2对Ζ: 1的标记错误率; 劣表示随机森林私;1和/CHm乒i乒η)从无标签数据集U中选择高置信度的数据构成数据 集4, 4为/t1和/C1对片的标记错误率。4.如权利要求1所述的基于Spark的半监督随机森林分类方法,其特征在于:所述标记 错误率e;的取值范围为0 < 4(1 < 0 5。
【文档编号】G06K9/62GK106056134SQ201610340166
【公开日】2016年10月26日
【申请日】2016年5月20日
【发明人】李学明, 马超
【申请人】重庆大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1