论文部分内容阅读
在实体识别、个性化推荐、社交网络分析和链接预测等多个领域,都会涉及到相似性度量这一问题,即需要衡量出不同对象之间的相似度。SimRank算法是一种常用的相似性度量模型,它基于图的拓扑结构信息来衡量任意两个对象间的相似程度,其基本思想是:如果两个对象被其他相似的对象所引用,那么这两个对象也相似。然而,随着互联网技术的发展,网络数据呈爆炸式增长,图数据的规模也与日俱增。传统的SimRank算法具有较高的时间和空间复杂度,不能有效解决大图数据中的相似性度量问题。BSP和MapReduce两种并行计算模型的提出为大规模数据处理带来了方便,然而如果直接将其应用于分布式SimRank计算中,仍存在一些弊端:前者每次迭代都需要发送非常多的消息,且对于已经收敛的顶点,仍然要接收消息并计算相似度;后者虽然能在一定程度上加快计算速度,但缺乏可扩展性,随着数据节点的增多,时间复杂度和通信量都会急剧增大。为此,本文分别在BSP和MapReduce框架下对分布式SimRank算法与改进策略进行了研究。本文的主要工作及贡献点如下:(1)系统地介绍了SimRank算法的国内外研究现状,简要概括了代表性的相关工作,指出其优缺点,并分析现存研究的不足之处。(2)提出了一种BSP框架下基于G2图的分布式SimRank算法,对该算法的性能进行了分析,提出了G2图的简化策略,通过简化G2图来降低计算过程中的通信量,并进一步在BSP框架下提出了基于简化G2图的Delta-SimRank算法。(3)在MapReduce框架下实现了一些简单的分布式SimRank算法并进行了分析,提出了一种MapReduce框架下两阶段的基于路径索引的分布式SimRank算法:第一阶段构建路径索引信息,提出了BSP框架下的路径索引构建算法,可有效建立路径索引信息,该索引信息包含所有小于等于k的路径及概率;第二阶段利用第一阶段生成的路径索引信息,计算节点间相似度。另外,针对该算法提出了三种优化策略:首先,通过设置过滤阈值尽可能减少生成索引的数量;其次,基于路径树每层节点的数量将路径进行分块,可以减少判断次数,提高效率:第三,将不同块之间的路径分散到不同的节点上处理,以保证负载均衡。(4)通过实验验证了本文所采用的关键技术的可行性和有效性。实验数据表明,本文提出的算法及优化策略在计算速度和可扩展性等方面均优于传统的分布式SimRank算法。