基于Spark内存计算大数据平台的CLR多标签数据分类方法转让专利

申请号 : CN201611120338.6

文献号 : CN106528874B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡峰张其龙邓维斌于洪张清华

申请人 : 重庆邮电大学

摘要 :

本发明提供一种基于Spark大数据平台的CLR多标签分类方法,涉及数据挖掘技术。本发明通过特征与标签的关系将每个数据集划分成一个区;将训练集中的数据集随机抽取一部分当作测试集,剩余的数据集当训练集建立基分类器,再将测试集用来测试分类器并修改其基分类器的参数,从而在训练的多个基分类器中选取最好的一个基分类器作为本数据集的基分类器。利用最终的多个基分类器对预测集进行预测。本发明结合了CLR多标签学习算法和Spark基于内存的高效计算理论,充分利用了CLR算法中标签转化后的无相关性,降低了不同的基分类器之间的干扰性,再充分利用Spark的计算框架的运行速度,能有效的对数据进行挖掘。

权利要求 :

1.一种基于Spark内存计算大数据平台的CLR多标签学习分类方法,其特征在于,包括步骤:获取历史数据,转化成Spark平台的分布式数据集RDD;利用Spark的RDD构建训练集特征,将训练集特征与其对应的多标签结合;并行计算将多标签及其特征进行标签转化形成训练集组;从所有训练集组中随机取出一部分作为训练测试集,用训练集训练基分类器,用训练测试集对经过训练的基分类器进行预测结果分析和模型参数调整;将预测集中的每个数据样本在训练好的所有基分类器中进行预测,将预测结果转化为对应的标签,获得预测标签;转化预测标签并同类合并,投票选取标签预测结果,统一预测集特征与选取的标签,并保存结果。

2.根据权利要求1所述的方法,其特征在于,创建一个程序入口SparkContext对象负责连接Spark集群,创建分布式数据集RDD累积量和广播量,然后用SparkContext对象直接转化已读取的数据parallelize,根据数据集地址读取并转化数据集textFile函数将读取的数据转化成Spark平台的分布式数据集RDD,该分布式数据集可以被并行操作。

3.根据权利要求1所述的方法,其特征在于,将预测结果转化为对应的标签时,当多个预测结果对应预测集中样本的一个标签时,采用投票的方式选取统计数量最多的一个标签预测结果,如果统计数量相同,对标签预测结果采用RPC转化获得奇数个标签预测结果,再采用投票的方式选取统计数量最多的一个标签预测结果,合并特征和对应的标签预测结果,得到预测结果。

4.根据权利要求1所述的方法,其特征在于,训练基分类器具体包括:选取训练集;设定基分类器的初始参数;使用基分类器的初始参数进行模型的训练;将训练测试集进行分类器的预测并得出结果;将预测结果和真实结果进行比较得到评估指标,直到评估指标达到预定要求或达到预定迭代次数;选出评估指标最好的基分类器并保存该分类器。

5.根据权利要求2所述的方法,其特征在于,利用Spark的RDD并行操作分布式数据集RDD,将数据集RDD的数据分成多个块,并行处理数据块中的数据,将数据转化为数字型数据;选择数据特征值建立特征集,分离预测集和训练集,将训练集的特征和标签进行分离。

6.根据权利要求5所述的方法,其特征在于,所述将训练集的特征和标签进行分离具体包括:对多维数据特征进行广播变量,将标签变换保存到n*(n+1)/2个分区中,每个分区保存相同位置的标签,过滤不满足要求的标签,得到n*(n+1)/2个训练集,其中n为标签维度。

7.根据权利要求6所述的方法,其特征在于,将特征和标签(1,featuress,labels)转化为特征(1,featuress),标签(1,1,label1),(1,2,label2),(1,3,label3),……(1,n*(n+1)/

2,labeln*(n+1)/2),其中,featuress表示某个样本所有的特征,labels表示某个样本所有的标签,labeli表示某个样本的第i个标签,n表示标签的维数,i属于区间[1,n*(n+1)/2]之间的整数。

说明书 :

基于Spark内存计算大数据平台的CLR多标签数据分类方法

技术领域

[0001] 本发明涉及计算机信息处理,数据挖掘技术领域,提供了一种基于Spark大数据平台的校准标签排序算法CLR(Calibrated Label Ranking)多标签数据挖掘方法。

背景技术

[0002] 随着信息技术的发展,互联网数据及资源呈海量特征。为了有效地管理和利用这些海量信息,基于内容的信息检索和数据挖掘逐渐成为备受关注的领域。在数据量不断增
大的同时,数据的标注结构复杂程度也在增加,传统的单标签数据挖掘已经不能满足技术
发展的需要,多标签数据挖掘的重要性逐渐突显,该项技术所涉及到的应用也在不断地增
加,例如图像视频的语义标注、基因功能组、音乐情感分类以及营销指导等,这些已经成为了当今研究的一个热点。利用数据挖掘技术在海量数据中挖掘出未知的信息,给用户提供
一个合理的预测分析。大数据的分析结果更多是为决策者和普通用户提供决策支持和参
考,其对较为深奥的数据含义不会太了解。因此,提供一种对未来趋势的预测分析的思路。
这种预测分析得到了广大用户的好评。
[0003] 数据挖掘这一学科近年来发展十分迅速,不仅产生了大量不同类型的挖掘算法,而且也表现出与机器学习等学科深度融合的态势。数据挖掘一般是指从大量的数据中通过
算法搜索隐藏于其中信息的过程,利用了来自如下一些领域的思想:(1)来自统计学的抽
样、估计和假设检验,(2)人工智能、模式识别和机器学习的搜索算法、建模技术和学习理论。数据挖掘也迅速地接纳了来自其他领域的思想,这些领域包括最优化、进化计算、信息论、信号处理、可视化和信息检索。一些其他领域也起到重要的支撑作用。特别地,需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能(并行)计算的技术在处理海量
数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一
起处理时更是至关重要。
[0004] Spark是一个基于内存的分布式计算系统,是由UC Berkeley AMP Lab实验室开发的开源数据分析集群计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件纸上,形成集群。拥有MapReduce的所有优点,与MapReduce不同的是.Spark将计算的中间结果数据
持久地存储在内存中,通过减少磁盘I/O。使后续的数据运算效率更高。Spark的这种架构设计尤其适合于机器学习、交互式数据分析等应用,这些应用都需要重复地利用计算的中间
数据。在Spark和Hadoop的性能基准测试对比中,运行基于内存的logistic regression,在迭代次数相同的情况下,Spark的性能超出Hadoop MapReduce 100倍以上。
[0005] Spark不局限于MapReduce简单的编程范式,Spark是基于内存计算的大数据并行计算框架。同时在上层支持图计算、迭代式计算、流式计算、内存SQL等多种计算范式,因此相对于MapReduce更具有通用性。为了支持在多次迭代计算过程中重复利用内存数据集,
Spark在借鉴传统分布式共享内存思想的基础上,提出了一种新的数据抽象模型RDD
(resilient distributed dataset),RDD是只读、支持容错、可分区的内存分布式数据集。
可以一部分或者全部缓存在集群内存中,以便在多次计算过程中重用。用户可以显式控制
RDD的分区、物化、缓存策略等,同时RDD提供了一套丰富的编程接口,供用户操作。RDD是Spark分布式计算的核心,Spark的所有计算模式都必须围绕RDD进行。
[0006] RDD是一种分布式的内存抽象,表示只读的、分区记录的集合,它只能通过在稳定物理存储中的数据集或其它已有的RDD上执行一些确定性操作(并行操作中的转换操作)来
创建,并行操作包括转换(transform)和动作(action)两种类型。转换表示对现有的RDD创
建一个新的RDD,动作则表示在RDD上执行计算,结果返回一个普通的类型值或将RDD中的数据输出到存储系统中。RDD之间的依赖关系有两种:窄依赖(narrow dependencies)和宽依
赖(wide dependencies)。窄依赖是指父RDD分区至多被一个子RDD的每个分区所依赖;宽依赖是指子RDD的多个分区都依赖于父RDD的每个分区。
[0007] 机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。机器学习是继专家系统之后人工智能应用的又一重要研究领
域,也是人工智能和神经计算的核心研究课题之一。现有的计算机系统和人工智能系统没
有什么学习能力,至多也只有非常有限的学习能力,因而不能满足科技和生产提出的新要
求。对机器学习的讨论和机器学习研究的进展,必将促使人工智能和整个科学技术的进一
步发展。
[0008] BR(Binary Relevance)二元关系法。该方法为每一个标签λj产生一个单独的数据集,总共产生n个数据集Dλj(j=1…n),每个数据集包含训练集中的全部样本。对于任意j个数据集Dλj,包含在该数据集中的所有样本仅被标注出是否属于λj,用该数据集训练一个仅输出样本是否属于λj的二分类器,为每一个标签训练一个二分类器。对于一个未知类别样本,将全部二分类器结果组合在一起即得到了该样本最终的标签分类结果。
[0009] RPC(Ranking by Pairwise Comparison)成对比较排序法,RPC算法为每一对标签(λi,λj)(1≤i≤j≤n)产生一个数据集,该数据集中仅选取被这一对标签中的某个标签所标注的样本(不包括被这两个标签同时标注的样本),总共将产生C2n个数据集,用每一个数据集训练出一个二分类器(因为每个分类器只需要处理(﹁λi,λj)和(λi,﹁λj)两种情况)。在预测一个未知样本时,所有的二分类器被激活,通过“委员会投票机制”,根据每个标签所得票数得出所有与该样本相关标签的排序。MLPP(Multi-Label Pairwise Perceptron)多标
签成对感知器算法是RPC应用的一个实例,该方法将RPC运用于感知器来解决多标签分类问
题。
[0010] CLR(Calibrated Label Ranking)校准的标签排序算法,该算法是RPC算法的拓展,该算法在RPC的基础上加入了一个人工的校准标签,该标签作为标签集中相关标签和不相关标签集合的分割点。新增加的校准标签与其他真实标签组合的模型中,每一个训练样
本对于其相关标签是一个正例,而对于校准标签是负例;对于其不相关标签是一个负例,而对于校准标签是一个正例。通过CLR方法处理多标签数据将会同时产生BR和RPC的结果。CLR的优点采用了投票选择的机制和考虑了BR算法的标签间非关系和RPC标签间的关系,其导
致了算法计算更加复杂,大大的增加了时间空间的复杂性,给计算和存储带来了极大的压
力。
[0011] 综上所述,现有技术采用的数据分类和处理方法,从数据获取后不能及时有效的利用大量的历史数据并从中快速地挖掘出有利的信息,不能快速地进行数据的处理,建立
模型耗费大量时间

发明内容

[0012] 本发明针对现有技术存在的从数据获取后不能及时有效的利用大量的历史数据并从中快速地挖掘出有利的信息,不能快速地进行数据的处理,建立模型耗费大量时间等
缺陷。本发明提出了一种基于Spark大数据平台的CLR多标签的数据挖掘方法,并行化处理
不仅能充分的利用有效的硬件资源,而且还能达到运算的高效。
[0013] 首先,利用基于内存计算的大数据平台Spark的弹性分布式数据集RDD(Resilient Distributed Dataset)进行数据的读取,将数据进行分区,每个区都会进行同样规则的操
作,这样就可以将处理的数据进行并行化操作;然后,利用数据分区之间数据的无关联性,进行预处理操作,将不能直接使用的数据进一步进行转化,将处理好的数据进行多个基分
类器的学习,在学习过程中进行调优,最后将处理好的预测数据样本进行预测,将预测分析的结果经过投票处理得预测结果。
[0014] 本发明解决上述技术问题的技术方案是,提出一种基于Spark大数据平台的CLR多标签数据挖掘方法,从分布式文件系统HDFS上读取需要处理的数据,转化成Spark平台的分布式数据集RDD。将当前RDD中的样本转化为键值对(key,(value1,value2,value3,……))
的形式,如果是训练集,则键值对里面存储的是每个样本的值以及样本对应的标签信息,如果是预测集,则键值对里面存储的是每个样本的值。具体包括以下步骤:
[0015] 从分布式文件系统获取历史数据,转化成Spark平台的分布式数据集RDD;创建一个程序入口SparkContext(Spark的上下文,程序运行初始环境)对象,然后用它的数据集转换RDD函数parallelize(DataSet)或者textFile(DataSetURL)(parallelize直接转化已读
取的数据,textFile根据数据集的地址读取并转化数据集)创建分布式数据集RDD;利用
Spark的RDD构建训练集特征,将训练集特征与其对应的多标签结合;并行计算将多标签及
其特征进行标签转化形成训练集组;从所有训练集组中随机取出一部分作为训练测试集,
用训练集训练基分类器,用训练测试集对经过训练的基分类器进行预测结果分析和模型参
数调整;将预测集中的每个数据样本在训练好的所有基分类器中进行预测,将预测结果转
化为对应的标签,获得预测标签;转化预测标签并同类合并,投票选取标签预测结果,统一预测集特征与选取的标签,并保存结果。
[0016] 本发明的其中一个优选实施例包括,转化成Spark平台的分布式数据集RDD具体为,创建一个程序入口SparkContext对象负责连接Spark集群,创建分布式数据集RDD累积
量和广播量,用SparkContext对象直接转化已读取的数据parallelize,根据数据集地址读取并转化数据集textFile函数将读取的数据转化成Spark平台的分布式数据集RDD,该分布
式数据集可以被并行操作。
[0017] 本发明的其中一个优选实施例包括,将预测结果转化为对应的标签时,当多个预测结果对应预测集中样本的一个标签时,采用投票的方式选取统计数量最多的一个标签预
测结果,如果统计数量相同,对标签预测结果采用RPC转化获得奇数个标签预测结果,再采用投票的方式选取统计数量最多的一个标签预测结果,合并特征和对应的标签预测结果,
得到预测结果。
[0018] 本发明的其中一个优选实施例包括,利用Spark的RDD并行操作分布式数据集RDD,将数据集RDD的数据分成多个块,并行处理数据块中的数据,将数据转化为数字型数据;选择数据特征值建立特征集,分离预测集和训练集,将训练集的特征和标签进行分离。
[0019] 本发明的其中一个优选实施例包括,所述将训练集的特征和标签进行分离具体包括:对多维数据特征进行广播变量,将标签变换保存到n*(n+1)/2个分区中,每个分区保存相同位置的标签,过滤不满足要求的标签,得到n*(n+1)/2个训练集,其中n为标签维度。
[0020] 在数据预处理阶段,对RDD的数据进行分区,将非标称的数据转化为标称数据;针对有缺失的数据进行补值操作(一般可采用中位数或者众数的方式,先各自统计自己分区
中的每个值,再合并统计出最后的结果,得到最后的中位数或者众数,然后进行数据的归一化,归一化是对数据的线性变换,将结果值映射到[0,1]之间。);选择数据特征值,将影响大于阈值的特征值选择出来保存为特征集,并将预测集和训练集进行分离;将训练集的特征
和标签进行分离,
[0021] 最简单直接的方式可以将(1,features,labels)转化为(1,features,label1),(1,featuress,label2),(1,featuress,label3),……(1,featuress,labeln*(n+1)/2),但这种情况就会消耗大量的内存来存储特征和标签。此处采用广播变量的形式,对特征进行广播
变量,此时可以将特征和标签(1,featuress,labels)转化为特征(1,featuress),标签(1,
1,label1),(1,2,label2),(1,3,label3),……(1,n*(n+1)/2,labeln*(n+1)/2),将存储的标签保存到n*(n+1)/2个区分中,每个分区保存相同位置的标签,过滤不满足CLR多标签学习算
法要求的标签,分区可以便于后面的并行化的训练基分类器。如果有n维多标签,则将会存在n*(n+1)/2个训练集。
[0022] 采用并行化的方式进行基分类器的训练,迭代的形式进行参数的调节,当训练的基分类器的指标达到需求(如包括,精度、ROC:Receiver Operating Characteristic曲线
等分类评估指标)或者迭代的次数达到要求,便停止迭代,输出最好的一个基分类器(例如,迭代了n,产生了m(m≤n)个达到要求的基分类器,在m个基分类器中选出评估指标最好的一
个)。
[0023] CLR多标签算法在训练基分类器将会达到n*(n+1)/2个分类器。将前面处理好的预测集进行预测,通过基分类器的预测将会产生n*(n+1)/2个结果,再将这些结果转化对应的标签。预测集的每个样本的每一个标签可能对应很多结果,这时将采用投票的方式进行选
取,选取统计数量多的一种结果,如果一样,便采用RPC转化后标签对应产生的结果进行选取(CLR方法处理的多标签是BR和RPC共同转化的标签,BR是n种标签只产生n个不同标签种
类的结果,如果CLR产生的结果是偶数个结果,则RPC转化的标签为奇数个结果)。
[0024] 训练基分类器是一个特别耗时,特别还要进行多次迭代训练,这产生的时间是难以估计的,其次在存储的时候浪费了大量的存储空间,随着标签的维数增加,其存储空间呈阶乘增加,在数据样本数量过大的时候,将会出现宕机的现象。本发明采用spark基于内存的大数据平台可以将数据的特征以广播的形式,只保存经过预处理的特征,不会重复保存,这样减少了存储空间。在训练基分类器和进行特征处理的时候将采取并行方式进行,这样
可以大大的降低时间效率。Spark集群将数据划分成多个区,减少了宕机的风险。

附图说明

[0025] 图1采用Spark进行CLR多标签学习算法的流程图;
[0026] 图2RDD数据分块流程图;
[0027] 图3RDD数据合并流程图;
[0028] 图4采用Spark进行并行化处理数据的流程图;
[0029] 图5并行化处理数据标签的流程图;
[0030] 图6采用并行训练模型进行参数训练流程图;
[0031] 图7训练的基分类器对预测集进行预测并通过投票方式得出结果的流程图。

具体实施方式

[0032] 图1为本发明采用Spark进行CLR多标签学习算法流程图,包括如下步骤;
[0033] (1)数据预处理阶段
[0034] 包括步骤:数据获取、非标称数据的转化、数据的缺失值补值和归一化。
[0035] 获取数据具体包括:创建一个SparkContext对象(SparkContext是Spark的对外接口,负责向调用提供Spark的各种功能。它的作用是一个容器),SparkContext是Spark的入口,负责连接Spark集群;然后用Spark的textFile(URL)(将RDD序列化存储到分布式文件系统的函数)读取数据集,这里的URL可以是本地数据文件的地址(例如:C:/dataset.txt)或
是hdfs(Hadoop Distributed File System:Hadoop分布式文件系统)上面的地址(例如:
hdfs://n1:8090/user/hdfs/dataset.txt),将获取的数据转化为Spark大数据平台的分布
式数据集RDD,转化完以后该分布式数据集可以被并行化。把分布式数据集RDD中的每一个
样本都通过map键值对函数转化为对应的键值对(key关键值,value值)的形式。检测所述分布式数据集是否为标称的数据集,如果数据集中的某些特征不是标称的数据集,便需要进
行标称化的处理,针对不同的非标称数据进行自定义规则的操作,例如,存在城市的名称这样的非标称数据,将这样的数据转化为城市对应的一个实际具体坐标位置;存在品牌这样
的非标称数据信息,将这样的数据进行统计,然后选出其中数量排在前面的品牌,将没有选出的品牌设置为其他,最后进行One-Hot-coding(独热编码,其方法是使用N位状态寄存器
来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效)处理等等。接下来对数据进行缺失值处理,没有缺失值就不用处理。例如1)有些信息无法获取;2)有些信息被遗漏的;3)有些对象的某个或某些属性不是可用的;4)有些信息
(被认为)不是重要的;5)获取这些信息的代价太大;6)系统实时性能要求较高,即要求得到这些信息前迅速做出判断或决策等等原因造成数据的缺失。对于缺失值有很多的方法,通
常采用比较多的是中位值和众数。先统计每个分区的数据,然后在合并所有的分区,得出最后的结果。最后检测过滤掉不满足要求的数据。将所有的标称数据进行归一化处理,将特征数据转化到[0,1]区间内。
[0036] 图2所示为RDD数据分块流程图。数据利用spark内部的partition函数进行划分为多个区,每个区内的数据可以同时执行数据的处理,不断的将数据划分直到不能再划分。通过Partition进行分区的,再在分区中再进行分区,直到满足每个分区的要求。
[0037] 图3所示为RDD数据的合并流程图。将划分的数据集进行合并。其中Partition指分区,将数据分成很多的区,每个Partition调用MapPartition函数,通过Box函数自定义需要处理的类,将数据进处理。
[0038] (2)特征处理阶段
[0039] 将没有标签的数据样本和有标签的数据样本进行划分,没有标签的数据样本标记为预测集,有标签的数据样本标记为训练集。标记为训练集的数据集利用分类器模型(例如随机森林)进行特征数据评估,采用迭代预定N次产生N次特征评分的结果,统计N个特征的
评分选取排名靠在前面的特征。最后将训练集和预测集的特征按照特征排名结果进行选
取。
[0040] 如图4所示为采用Spark进行并行化处理数据流程图。根据RDD1的1号分区的前边界样本和广播变量的0号元素的后边界点计算map,map的方向由后指向前,向前合并簇号,把合并的簇号加入到map中。每个分区所有样本点都根据键值对形式数据储存结构Map合并
簇号,并输出最终的所有样本点的簇号,相同簇号的放在一起输出到文件中,最后将文件进行持久化的保存。
[0041] (3)训练集处理阶段
[0042] 将训练集和预测集拆分开,并且将训练集的数据集和标签拆分开,并将训练集的特征数据进行广播变量(广播的目的为了节省内存空间和并行化操作)。然后标签转化。
[0043] 最简单直接的方式可以将(1,features,labels)转化为(1,features,label1),(1,featuress,label2),(1,featuress,label3),……(1,featuress,labeln*(n+1)/2),但这种情况就会消耗大量的内存来存储特征和标签。本发明采用广播变量的形式,对特征进行广
播变量,此时可以将特征和标签(1,featuress,labels)转化为特征(1,featuress),标签(1,1,label1),(1,2,label2),(1,3,label3),……(1,n*(n+1)/2,labeln*(n+1)/2),每条数据都要进行这样重复的操作,把样本进行并行操作,每条样本都会产生n*(n+1)/2个
(features,label)的数据,把同一类型的label组合起来形成数据集,将最后得到的数据集用filter(condition==True)进行过滤,得到的就是n*(n+1)/2个训练集。此方式比第一
种节省了大量的内存空间。将存储的标签保存到n*(n+1)/2个区分中,过滤不满足要求的标签,每个分区保存相同位置的标签,分区可以便于后面的并行化的训练基分类器。如果有n维多标签,则将会存在n*(n+1)/2个训练集。其中,features:某个样本所有的特征,labels:
某个样本所有的标签,labeli:某个样本的第i个标签,n表示标签的维数,即CLR会产生新标签的维数。
[0044] 图5为并行化处理数据标签的流程图。利用以下的转化方式,标签之间的转化是没有关联的,可以将其转化进行并行处理。在转化RPC标签的时候,如果两个原始的标签是一样的,在后面需要进行过滤。根据标签的位置进行转化,例如(标签1,标签2)转化为新标签
1,(标签1,标签3)转化为新标签2,(标签2,标签3)转化为新标签3等。每个样本都会这样转化,这样就会产生多个新标签1、新标签2和新标签3,这样就可以构建出新的标签集。
[0045] 例如:
[0046] 表1一个多标签数据集
[0047]
[0048] 表2多标签数据集的转化
[0049]
[0050] 表3多标签数据集BR转化
[0051]
[0052]
[0053]
[0054]
[0055] 表4多标签数据集RPC转化
[0056]
[0057]
[0058]
[0059] 最后得到的特征为:(1,features1),(2.features2),(3,features3),(4,features4);得到的BR的标签为:(1,1,1),(2,1,1),(3,1,0),(4,1,1),(1,2,0),(2,2,1),(3,2,1),(4,2,1),(1,3,0),(2,3,0),(3,3,1),(4,3,1);得到的RPC的标签为:(1,4,1),(3,
4,0),(1,5,1),(2,5,1),(3,5,0),(2,6,1)。其中(index,features)代表为第index的特征为features,(n,m,label)代表特征编号为n,标签编号为m的标签label。
[0060] 最后得到的CLR的标签为BR和RPC的总和。采用随机的方式选取一些特征索引(一般选取30%),将标签中的特征编号选出来,组成训练测试集,剩余的为训练集。最后将标签标号相同的合并为同一组,包括训练集和训练测试集。
[0061] (4)训练基分类器阶段
[0062] 将生成的训练集进行基分类器的训练,对应将训练好的基分类器进行性能评估,方法如下:
[0063] Step 1:选取训练集
[0064] Step 2:设定基分类器的初始参数;
[0065] Step 3:使用基分类器的初始参数进行模型的训练,得到训练好的基分类器;
[0066] Step 4:将训练测试集进行分类器的预测并得出结果;
[0067] Step 5:通过预测结果和真实的结果进行比较得到评估指标,若预测的评估指标达到要求或者迭代次数达到要求,则进行下一步。否则,调整参数再执行Step 2;
[0068] Step 6:选出最好评估指标的基分类器并保存训练好的分类器。
[0069] Step 7:是否训练完所有的基分类器,若是,则结束训练基分类器,否则执行Step 1。
[0070] 图6所示为采用并行训练模型进行参数训练流程图。将分成多个数据的标签集并行的进行模型的训练,在设置基础模型的参数的时候,可以设定一些需要调节的参数(例
如,模型迭代的次数,eta学习率等等)进行,每个调节参数都可以测出评估指标(精确度等)并将指标和模型保存,如果下次出现的指标比这次的好,便替换这次保存的指标和模型。每个样本产生的同一序列(前面产生的标签是按照一定的顺序产生的,(标签1,标签2)产生新标签1,(标签1,标签3)产生新标签2……)下的标签,同一个新标签i和对应的特征i构成的
一个训练集,这样新标签之间在训练的时候是相互无关的,可以进行并行训练模型。
[0071] (5)预测分类阶段
[0072] 将预测集在训练好的基分类器中进行预测,每个数据样本都要经过所有的基分类器进行预测,获得预测标签。
[0073] 转化预测结果,将同一个特征预测产生的结果合并,将所有生成的预测标签都进行转化,按照标签的标号进行合并,并将相同编号的标签中0和1数量进行统计,若0的个数大于1的个数,其标签预测结果为0;若1的个数大于0的个数,其标签预测结果为1;若0的个数和1的个数存在相同,则采用RPC转化后标签对应的产生结果进行数量统计,并判断其标
签预测结果是0还是1,合并特征和对应预测的多标签,得到预测结果。如图7所示为训练的基分类器对预测集进行预测并通过投票方式得出结果的流程图。
[0074] 例如上面的多标签,原始数据中存在着3个标签,则将会产生6(n*(n+1)/2)个基分类器,这样在每个数据样本就会产生出6个预测结果,将结果进行CLR多标签方法的逆转化,便会产生3种不同的标签,即(label1,label2,label3),每种标签都存在着很多的子标签,如label1(1,0,1,1,0,1),label2(0,1,0,0,1,0),label3(0,1,1,0,1,0),其中,前3个标签是BR标签转化产生的预测标签,其他的是RPC标签转化产生的预测标签(根据前面的标签转
化是先BR后RPC)。
[0075] 统计每种标签相同的数量,然后进行投票选出每种标签中数量最多的标签,如label1:sum(0)=2,sum(1)=4,label1最后的投票结果是1;label2:sum(0)=4,sum(1)=
2,label2最后的投票结果是:0;label3:sum(0)=3,sum(1)=3,结果是sum(0)=sum(1),不能进行判断,则需要进行RPC转化的所产生的结果进行投票,RPC产生的结果为:sum(0)=0,sum(1)=1,label3最后投票的结果是0。最后CLR所预测的标签结果是(1,0,0),将结果进行持久的数据保存。