一种基于Spark下并行超网络的分类算法的制作方法

文档序号:12465472阅读:137来源:国知局
一种基于Spark下并行超网络的分类算法的制作方法与工艺

本发明涉及机器学习、大数据处理技术领域,尤其一种基于Spark对演化超网络文本分类方法的并行化实现。



背景技术:

随着信息技术的发展,互联网数据及资源已实现了爆炸性的增长。由于基于内容的信息检索和数据挖掘方法能够有效地管理和利用这些海量信息,因此在近年来备受关注。在数据量不断增大的同时,数据的标注结构复杂程度也在增加,传统的机器学习方法的研究成果已经不能满足技术发展的需要。因此,对传统机器学习方法并行化处理成为了当今研究的一个热点,其在现实生活中的重要性逐渐凸显,已广泛应用于在海量文本分类、大规模图像视频的语义标注、海量基因功能组以及超规模音乐情感分类等方面。与传统的机器学习任务相比,传统机器学习的并行化难点在于如何有效处理对标签数量呈指数增长的标签空间、海量数据无法进行正确的分类处理以及提高分类效率的问题。

超网络是受到生物分子网络的启发而提出的一种概率图论模型。它是一种特殊的超图,由大量的超边组成,其中每条超边可以连接任意数量的顶点,能很好的表示数据之间和特征之间的高阶关联性。超网络模型弥补了传统机器学习算法表现形式复杂、学习结构可读性差的缺点,能有效地进行数据挖掘和知识发现,提供可读性强的学习结果,解决目前机器学习和数据挖掘领域存在的问题。超网络模型已经在疾病诊断、多模态信息检索、股票预测等方面取得很好的成绩。

Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的算法。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于Spark下并行超网络的分类算法。

本发明的目的是通过以下技术方案来实现的,一种基于Spark下并行超网络的分类算法,具体包括以下步骤:步骤S101.把文本数据部署到Spark平台上;步骤S102.在Spark平台上对文本数据进行并行化预处理;步骤S103.在Spark平台上,对超网络算法的演化学习进行并行化实现。

进一步,所述步骤S102具体为:先将原始数据通过缺失数据处理、然后进行离散化处理或计算超边阈值ζ;

超边阈值匹配为超边与样本的距离小于ζ*d′,其中d′为超边的维度,超边阈值ζ的计算公式如公式(1)所示;

其中对于样本数据x来说,Gx表示样本数据x近邻的集合,d代表训练样本维度,x’表示样本数据x的近邻样本。

进一步,步骤S103具体包括以下子步骤:

S1031.对训练集中每条文本数据生成p条超边,k条数据的超边构成N条超边库,并初始化每条超边的权值wj=1(j=1,2,…,N),形成对应的超边权重向量W={w1,w2,…,wN};

S1032.把训练集中每一条文本数据与超边进行匹配,根据匹配原则形成一个k*N的稀疏矩阵A;

S1033.利用稀疏矩阵A进行并行化随机梯度下降演化学习;

S1034.用演化学习后的超网络对文本数据进行分类。

进一步,本方法将超网络并行梯度下降演化学习转化为矩阵并行运算,并行化实现是指:进行HDFS读入文本数据以后,并行化生成超边库和匹配矩阵,并行化实现具体包括以下子步骤:

S1041读取预处理后的文本数据,生成具有p个partition的RDDa;(由于和后面的样本个数一样因此需要用不同的字母表示)

S1042对RDDa的每一个partition中的文本数据并行生成超边集合库,超边集合库放入含有相同数量partition的RRDb,并用RDDa.persist()方法缓存数据集,生成RDDc;

S1043通过RDDc.cartesion(RDDb)方法笛卡尔积生成RDDd,其中每一个键值对为(k,e),其中k为样本,e为超边;

S1044通过RDDd.reduce()方法合并匹配结果为RDDe,其中每个k-value值的组成为(ki,((e1,y1),(e2,y2),…,(eN,yN))),其中ki表示键值对的k,其值为第i条文本数据,键值对的value值存储该条文本数据对于其他全部超边的匹配结果,e1表示第1条超边,y1表示根据匹配原则的匹配结果;

S1045对RDDe中的数据进行map操作,形成匹配矩阵存储在RDDf中。

进一步,在并行梯度下降演化学习过程中,由于存在部分超边未能与文本数据匹配,超网络模型认为这部分超边对当前的分类不产生影响,因而其权重不发生改变,仅仅对样本匹配的超边的权重进行更新,根据更新公式(2)进行并行化调优,具体步骤为:

S1051把初始化权重根据broadcast()方法,广播给匹配的矩阵。

S1052根据compute()方法计算RDDf中每个partition梯度,并通过reduce()方法合并梯度值;

S1053根据update()方法更新超边权重的权重向量W的权重值;

S1054根据iterator()方法进行重复步骤S1051-S1053,进行迭代更新权重值;其中,梯度计算方法为:

其中,

Wj表示超边j的权重值,η表示学习速率,J(w)表示目标函数,Si表示预测概率值,yi表示真实标签值,mi表示i样本对于超网络的中间预测结果,cij表示匹配矩阵中第i行第j列的值,E表示超边条数。wj表示第j个标签对应的权重值。

进一步,用演化学习后的超网络对文本数据进行分类是指对每一个测试文本数据按照公式(3)与公式(4)计算Si的值,并按照公式(5)进行预测标签yt*

其中,C为匹配矩阵,

目标函数J(w)是指:

其中,yi为真实标签值,si为预测概率值;

m表示超网络的中间预测向量,w表示超边权重,n表示训练集的样本个数,Sn表示超网络对第n条样本的预测概率值,,St表示向量s的第t个值。

由于采用以上技术方案,本发明具有以下优点:

本发明旨在解决在大规模数据量的情况下,超网络算法的并行处理问题,通过并行化数据存储阶段,数据预处理阶段,并且通过改变超边结构以及超网络演化计算方式,修改目标函数,完成对超网络算法的并行化处理,提高传统超网络的分类算法性能和效率,解决在海量数据中,传统的超网络模型已经难以满足时间和空间的限制。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:

图1为本发明实施例一提供在Spark下超网络分类算法生成超边的流程图;

图2为本发明实施例一提供在Spark下超网络分类算法并行化随机梯度下降流程图;

图3为本发明实施例一提供基于Spark下对超网络分类算法的并行化实现算法。

具体实施方式

下面将结合附图,对本发明的优选实施例进行详细的描述。

参考图3,图3为本发明实施例提供的一种基于Spark超网络文本数据分类算法的并行化实现具体包括:

文本数据集具有高维大样本、高噪声、高冗余以及样本分布不均衡等特点,由于互联网的高速发展,无时无刻不产生大量的文本数据,这些海量的文本数据对传统的机器学习带来了极大的挑战。因此,本实施例中,主要采用文本数据来展开讨论。参考图1,图1为在Spark下超网络分类算法生成超边的流程图。

由于考虑到Spark平台擅长迭代计算,并且适合并行处理矩阵运算,因此,本方法将文本数据形成的超边与文本数据匹配结果放到一个矩阵中,对超边权重进行并行化梯度下降演化学习,由于Spark擅长迭代计算,并且擅长采用并行处理方式用于矩阵运算,可以体现Spark对于解决海量数据在超网络分类上的优势。

步骤一:把文本数据部署到Spark平台上:将原始实验样本按行存储于HDFS(Hadoop分布式文件系统)分布式存储系统。

步骤二:在Spark平台上对文本数据进行并行化预处理:由于受到超网络模型结构的制约,含有连续性特征的文本数据并不适合传统的超网络模型,因而,先将文本数据通过缺失数据预处理、然后进行离散化处理或对超边匹配阈值ζ的计算。

(1)缺失文本数据处理:用连续性文本特征值的均值(或中位数)来填补缺失值。

(2)离散化处理:离散化可以分为无监督和有监督离散化,无监督包含等频度、等宽度等方法,有监督离散化方法包含基于卡方和信息熵等方法。

(3)超边阈值的匹配计算:为超边与样本的距离小于ζ*d′,其中d′为超边的维度,阈值ζ的计算公式如公式(1)所示。

其中Gx表示对于文本数据x来说,Gx表示样本数据x近邻的集合,d代表训练样本维度。

步骤三:在Spark平台上,对超网络算法的演化学习进行并行化实现,包括:

(1)在文本数据集合中对每条文本数据并行化生成p条超边,k条数据的超边构成N(其中N=k*n)条超边库,并初始化每条超边的权值wj=1(j=1,2,…,N),形成对应的超边权重向量W={w1,w2,…,wN},参考图1所示;

读取预处理后的文本数据,生成具有p个partition的RDDa,这里p等于10,表示HDFS(Hadoop分布式文件系统)读入文本文件以后,用10个partition来存放所有的文本数据。

对RDDa的每一个partition中的文本数据并行生成超边集合库,超边集合库中放入和RDDa中含有相同数量partition的RRDb,并用RDDa.persist()方法缓存数据集,生成RDDc,用于下一步的使用;

通过RDDc.cartesion(RDDb)方法笛卡尔积生成RDDd,其中每每一个键值对为(k,e)其中k为文本数据,e为每一条文本数据生成的超边;

通过RDDd.reduce()方法合并匹配结果为RDDe,其中每个k-value值的组成为(ki,((e1,y1),(e2,y2),…,(eN,yN))),其中ki表示键值对的k,其值为第i条文本数据,键值对的value值存储该条文本数据对于全部超边的匹配结果,e1表示第1条超边,y1表示根据匹配原则的匹配结果;

匹配矩阵是指:根据第i条样本数据删除与第j条超边对应的标签来设定稀疏矩阵A的值:

如果第i条样本数据与第j条超边匹配且超边标签为-1,则对应的稀疏矩阵A中的aij取值为-1;

如果第i条样本数据与第j条超边匹配且超边标签为+1,则对应的稀疏矩阵A中的aij取值为+1;

如果第i条样本数据与第j条超边不匹配,则对应的稀疏矩阵A中的aij取值为0;

样本与超边的匹配为:a.若为标称型数据则完全匹配;b.若为连续型数据则距离小于ζ,则说明样本与超边匹配。

(2)把文本数据集合中每个文本数据与超边库中的超边进行匹配,根据匹配原则形成一个k*N的稀疏矩阵A,参考图1所示;

对RDDe中的数据进行map操作,形成稀疏矩阵A存储在RDDf中;

(3)利用稀疏矩阵A进行并行化随机梯度下降演化学习,不断地动态调整超边的权重,调整超边库的结构,使得权值不同的超边对文本数据分类结果的影响产生不同的效果,使得超网络分类方法更加符合实际的应用情况。

在随机生成超边的过程中,并不能保证所有的超边都具有很高的适应值,为了保证留下适应值高的超边以提高超边库的整体适应性,本发明对以下两种情况的超边进行删除:

a.在稀疏矩阵A中,删除匹配最差的超边,例如第i条超边的匹配值全部为0的超边,即api=0(p=1,2,…,k)进行删除;

b.在稀疏矩阵A中,删除适应值大于σ的超边,即进行删除,其中σ代表适应值的阈值;

并行化梯度下降演化学习是指:为了最大限度地降低对样本错分概率,即减小目标函数的值。在权值更新的过程中,由于存在部分超边未能与样本匹配,超网络模型认为这部分超边对当前的分类不产生影响,因而其权重不发生改变,仅仅对样本匹配的超边的权重进行更新,根据更新公式(2)根据进行并行化调优,具体步骤为:

1、把初始化权重根据broadcast()方法,广播给匹配的矩阵。

2、根据compute()方法计算RDDf中每个partition梯度,并通过reduce()方法合并梯度值。

3、根据update()方法更新权重向量W的权重值。

4、根据iterator()方法进行重复步骤(1)-(3),进行迭代更新权重值。

所述梯度计算方法为:

其中,

(4)在测试阶段,对每一个测试的文本数据按照公式(3)与公式(4)计算Si的值,并按照公式(5)进行预测标签yt*

其中,C为匹配矩阵,W为代表每条超边权重的权重向量。

所述目标函数J(w)是指:

其中,yi为文本数据的真实标签,si为预测值。

本发明通过并行化数据存储阶段,数据预处理阶段,并且通过改变超边结构以及超网络演化计算方式,修改目标函数,完成对超网络算法的并行化处理,提高传统超网络的分类算法性能和效率,解决在海量数据中,传统的超网络模型已经难以满足时间和空间的限制。

最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1