基于Spark内存计算大数据平台的CLR多标签数据分类方法转让专利
申请号 : CN201611120338.6
文献号 : CN106528874B
文献日 : 2019-07-19
发明人 : 胡峰 , 张其龙 , 邓维斌 , 于洪 , 张清华
申请人 : 重庆邮电大学
摘要 :
权利要求 :
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多标签数据分类方法
技术领域
背景技术
大的同时,数据的标注结构复杂程度也在增加,传统的单标签数据挖掘已经不能满足技术
发展的需要,多标签数据挖掘的重要性逐渐突显,该项技术所涉及到的应用也在不断地增
加,例如图像视频的语义标注、基因功能组、音乐情感分类以及营销指导等,这些已经成为了当今研究的一个热点。利用数据挖掘技术在海量数据中挖掘出未知的信息,给用户提供
一个合理的预测分析。大数据的分析结果更多是为决策者和普通用户提供决策支持和参
考,其对较为深奥的数据含义不会太了解。因此,提供一种对未来趋势的预测分析的思路。
这种预测分析得到了广大用户的好评。
算法搜索隐藏于其中信息的过程,利用了来自如下一些领域的思想:(1)来自统计学的抽
样、估计和假设检验,(2)人工智能、模式识别和机器学习的搜索算法、建模技术和学习理论。数据挖掘也迅速地接纳了来自其他领域的思想,这些领域包括最优化、进化计算、信息论、信号处理、可视化和信息检索。一些其他领域也起到重要的支撑作用。特别地,需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能(并行)计算的技术在处理海量
数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一
起处理时更是至关重要。
持久地存储在内存中,通过减少磁盘I/O。使后续的数据运算效率更高。Spark的这种架构设计尤其适合于机器学习、交互式数据分析等应用,这些应用都需要重复地利用计算的中间
数据。在Spark和Hadoop的性能基准测试对比中,运行基于内存的logistic regression,在迭代次数相同的情况下,Spark的性能超出Hadoop MapReduce 100倍以上。
Spark在借鉴传统分布式共享内存思想的基础上,提出了一种新的数据抽象模型RDD
(resilient distributed dataset),RDD是只读、支持容错、可分区的内存分布式数据集。
可以一部分或者全部缓存在集群内存中,以便在多次计算过程中重用。用户可以显式控制
RDD的分区、物化、缓存策略等,同时RDD提供了一套丰富的编程接口,供用户操作。RDD是Spark分布式计算的核心,Spark的所有计算模式都必须围绕RDD进行。
创建,并行操作包括转换(transform)和动作(action)两种类型。转换表示对现有的RDD创
建一个新的RDD,动作则表示在RDD上执行计算,结果返回一个普通的类型值或将RDD中的数据输出到存储系统中。RDD之间的依赖关系有两种:窄依赖(narrow dependencies)和宽依
赖(wide dependencies)。窄依赖是指父RDD分区至多被一个子RDD的每个分区所依赖;宽依赖是指子RDD的多个分区都依赖于父RDD的每个分区。
域,也是人工智能和神经计算的核心研究课题之一。现有的计算机系统和人工智能系统没
有什么学习能力,至多也只有非常有限的学习能力,因而不能满足科技和生产提出的新要
求。对机器学习的讨论和机器学习研究的进展,必将促使人工智能和整个科学技术的进一
步发展。
签成对感知器算法是RPC应用的一个实例,该方法将RPC运用于感知器来解决多标签分类问
题。
本对于其相关标签是一个正例,而对于校准标签是负例;对于其不相关标签是一个负例,而对于校准标签是一个正例。通过CLR方法处理多标签数据将会同时产生BR和RPC的结果。CLR的优点采用了投票选择的机制和考虑了BR算法的标签间非关系和RPC标签间的关系,其导
致了算法计算更加复杂,大大的增加了时间空间的复杂性,给计算和存储带来了极大的压
力。
模型耗费大量时间
发明内容
缺陷。本发明提出了一种基于Spark大数据平台的CLR多标签的数据挖掘方法,并行化处理
不仅能充分的利用有效的硬件资源,而且还能达到运算的高效。
作,这样就可以将处理的数据进行并行化操作;然后,利用数据分区之间数据的无关联性,进行预处理操作,将不能直接使用的数据进一步进行转化,将处理好的数据进行多个基分
类器的学习,在学习过程中进行调优,最后将处理好的预测数据样本进行预测,将预测分析的结果经过投票处理得预测结果。
的形式,如果是训练集,则键值对里面存储的是每个样本的值以及样本对应的标签信息,如果是预测集,则键值对里面存储的是每个样本的值。具体包括以下步骤:
取的数据,textFile根据数据集的地址读取并转化数据集)创建分布式数据集RDD;利用
Spark的RDD构建训练集特征,将训练集特征与其对应的多标签结合;并行计算将多标签及
其特征进行标签转化形成训练集组;从所有训练集组中随机取出一部分作为训练测试集,
用训练集训练基分类器,用训练测试集对经过训练的基分类器进行预测结果分析和模型参
数调整;将预测集中的每个数据样本在训练好的所有基分类器中进行预测,将预测结果转
化为对应的标签,获得预测标签;转化预测标签并同类合并,投票选取标签预测结果,统一预测集特征与选取的标签,并保存结果。
量和广播量,用SparkContext对象直接转化已读取的数据parallelize,根据数据集地址读取并转化数据集textFile函数将读取的数据转化成Spark平台的分布式数据集RDD,该分布
式数据集可以被并行操作。
测结果,如果统计数量相同,对标签预测结果采用RPC转化获得奇数个标签预测结果,再采用投票的方式选取统计数量最多的一个标签预测结果,合并特征和对应的标签预测结果,
得到预测结果。
中的每个值,再合并统计出最后的结果,得到最后的中位数或者众数,然后进行数据的归一化,归一化是对数据的线性变换,将结果值映射到[0,1]之间。);选择数据特征值,将影响大于阈值的特征值选择出来保存为特征集,并将预测集和训练集进行分离;将训练集的特征
和标签进行分离,
变量,此时可以将特征和标签(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个训练集。
等分类评估指标)或者迭代的次数达到要求,便停止迭代,输出最好的一个基分类器(例如,迭代了n,产生了m(m≤n)个达到要求的基分类器,在m个基分类器中选出评估指标最好的一
个)。
取,选取统计数量多的一种结果,如果一样,便采用RPC转化后标签对应产生的结果进行选取(CLR方法处理的多标签是BR和RPC共同转化的标签,BR是n种标签只产生n个不同标签种
类的结果,如果CLR产生的结果是偶数个结果,则RPC转化的标签为奇数个结果)。
可以大大的降低时间效率。Spark集群将数据划分成多个区,减少了宕机的风险。
附图说明
具体实施方式
是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]区间内。
评分选取排名靠在前面的特征。最后将训练集和预测集的特征按照特征排名结果进行选
取。
簇号,并输出最终的所有样本点的簇号,相同簇号的放在一起输出到文件中,最后将文件进行持久化的保存。
播变量,此时可以将特征和标签(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会产生新标签的维数。
1,(标签1,标签3)转化为新标签2,(标签2,标签3)转化为新标签3等。每个样本都会这样转化,这样就会产生多个新标签1、新标签2和新标签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。
如,模型迭代的次数,eta学习率等等)进行,每个调节参数都可以测出评估指标(精确度等)并将指标和模型保存,如果下次出现的指标比这次的好,便替换这次保存的指标和模型。每个样本产生的同一序列(前面产生的标签是按照一定的顺序产生的,(标签1,标签2)产生新标签1,(标签1,标签3)产生新标签2……)下的标签,同一个新标签i和对应的特征i构成的
一个训练集,这样新标签之间在训练的时候是相互无关的,可以进行并行训练模型。
签预测结果是0还是1,合并特征和对应预测的多标签,得到预测结果。如图7所示为训练的基分类器对预测集进行预测并通过投票方式得出结果的流程图。
化是先BR后RPC)。
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),将结果进行持久的数据保存。