一种基于Hadoop的并行化PLSA方法

文档序号:6366492阅读:327来源:国知局
专利名称:一种基于Hadoop的并行化PLSA方法
技术领域
本发明涉及一种并行化实现PLSA的方法,特别涉及一种基于Hadoop的并行化PLSA方法。
背景技术
PLSA,即基于概率的浅层语意分析,是一种用来分析两模或者是共生数据的统计学方法,他是在原有的LSA模型的基础之上,加入了适合的概率模型。通过引入潜在的类模型,并进行混合分解,从而获得关于数据的潜层信息。Hadoop, 一个分布式系统基础架构,由Apache基金会开发,米用MapReduce的编程 模型。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。PLSA可能会需要大量的迭代次数,从而使得整体的运行时间非常的长,因此一般情况下只是适用于较小的数据集。如果其用来处理海量数据,可能会导致内存泄露等问题。

发明内容
发明目的针对上述现有技术存在的问题和不足,本发明的目的是提供一种基于Hadoop的并行化PLSA方法,解决PLSA在处理海量数据时运行较慢的问题。技术方案为实现上述发明目的,本发明米用的技术方案为一种基于Hadoop的并行化PLSA方法,包括如下步骤(I)将数据存储到分布式数据存储环境中;(2)对需要更新计算的概率模型文件进行切分,作为每一个mapper的输入;(3)通过 mapreduce 对整体的 EM(Expectation_maximization,期望最大化)过程中的每一次迭代更新过程进行计算通过mapper端的map函数和reducer端的reduce函数以及键值对的发送,计算EM过程中的每一次迭代更新过程;(4)每次更新后的迭代结果作为下次迭代的输入;(5)迭代直到所有的结果达到收敛。所述步骤(3)中,可用map函数计算EM过程中的E过程,用reduce函数计算EM过程中的M过程。所述步骤(3)中,可在map端完成整体的EM过程,在reduce端进行泛化。有益效果本发明通过mapreduce进行的并行化,能够将PLSA应用到较大规模的数据当中,并减少整体运行的时间,提高运算效率。


图I是mapreduce的机制过程图;图2是整体的迭代过程的说明图;图3是两个方法对应机器增加所带来的加速比情况比较图。
具体实施例方式下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。本发明主要通过mapreduce实现算法的并行化,其过程如图I所示。并且,如图2所示,对于每一个概率结果,在上一次迭代所得到的结果可以被用作到下一次的迭代的输入,从而实现结果的不断更新,直到收敛。本发明的方法I在下面详细说明 方法的主要思路是将EM过程的E过程作为map,把M过程作为reduce步骤1,将需要迭代更新计算的两个概率模型文件进行初始化,将其中任意一个概率模型文件由hdfs (集群文件系统)切分,作为mapper的输入。
步骤2,在setup函数中读取整体对应关系的数据模型文件X(u, y)。步骤3,在map函数中将对应其mapper的数据文件存储。步骤4,在cleanup函数中进行EM的E过程。对根据公式I任意的一对u, y计算出对应的后验概率Q。
QHz-u,y-e) = P(z\u, y-Θ) =尸(小)
_]Y4P(y\z')P(z'\u)
z'=1( I )式中,参数向量是对概率P (z I u)和P(y|z)进行的总结,如果有η个用户和m个物品,其中P(z|u)可以被(k-l)*n个独立参数进行描述,P(y|z)也需要(m_l)*k个独立的参数。步骤5,发送出三组键值对。分别以y,标示符以及u为key,Q为value。前两组用来计算更新后的P (ZI U),后面一组用来计算更新后的P (Y IZ)。步骤6,在reducer端根据收到的key的情况,分别进行更新迭代计算。若收到目标为计算计算P (y I Z)的键值对时,对key为标示符的键值对,其value累加为整体的累加和,即公式2下面的部分。
^0*(ζ;η,γ;θ)
M 过程尸(少 I ζ) = -
YjYjQ* γ,θ)
y=1 u=l(2)根据公式3,对应每一个y,累加其对应的value,当y的值改变时,用累加和除以整体的累加和发送出去,其结果即为对应更新后计算P (Y I z)。若收到目标为计算P (z I u)的键值对时,对应每一个U,对其对应每一个z的结果进行累加,当u的值改变时,用u对应每一个z的部分和除以这个u对应每一个z的累加和,更新后的结果即为新的P(z |u)。
权利要求
1.一种基于Hadoop的并行化PLSA方法,其特征在于,包括如下步骤 (1)将数据存储到分布式数据存储环境中; (2)对需要更新计算的概率模型文件进行切分,作为每一个mapper的输入; (3)通过mapreduce对整体的EM过程中的每一次迭代更新过程进行计算 通过mapper端的map函数和reducer端的reduce函数以及键值对的发送, 计算EM过程中的每一次迭代更新过程; (4)每次更新后的迭代结果作为下次迭代的输入; (5)迭代直到所有的结果达到收敛。
2.根据权利要求I所述一种基于Hadoop的并行化PLSA方法,其特征在于所述步骤(3)中,用map函数计算EM过程中的E过程,用reduce函数计算EM过程中的M过程。
3.根据权利要求I所述一种基于Hadoop的并行化PLSA方法,其特征在于所述步骤(3)中,在map端完成整体的EM过程,在reduce端进行泛化。
全文摘要
本发明公开了一种基于Hadoop的并行化PLSA方法,包括如下步骤将数据存储到分布式数据存储环境中;对需要更新计算的概率模型文件进行切分,作为每一个mapper的输入;通过mapreduce对整体的EM过程中的每一次迭代更新过程进行计算通过mapper端的map函数和reducer端的reduce函数以及键值对的发送,计算EM过程中的每一次迭代更新过程;每次更新后的迭代结果作为下次迭代的输入;迭代直到所有的结果达到收敛。本发明通过mapreduce进行的并行化,能够将PLSA应用到较大规模的数据当中,并减少整体运行的时间,提高运算效率。
文档编号G06F9/38GK102779025SQ20121007144
公开日2012年11月14日 申请日期2012年3月19日 优先权日2012年3月19日
发明者商琳, 杨育彬, 金龑, 高阳 申请人:南京大学, 南京大学江阴信息技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1