210 likes | 753 Views
Asyn-SimRank: 一种异步执行的大规模 SimRank 算法. 王春磊 张岩 峰 赵长宽 于戈 Lixin Gao. 东北大学计算机软件研究所 University of Massachusetts Amherst 东北大学计算中心. SimRank 算法. SimRank 算法的应用 社交网络、引用关系网络、链接预测等诸多主要领域 中 如:好友推荐系统、产品推荐系统 SimRank 值的计算公式 基本原理:如果两个对象依赖于相同或相似的对象,那么它们是相似的 好友网络举例. Page 2. SimRank 算法.
E N D
Asyn-SimRank:一种异步执行的大规模SimRank算法 王春磊张岩峰赵长宽于戈 Lixin Gao 东北大学计算机软件研究所 University of Massachusetts Amherst 东北大学计算中心
SimRank算法 • SimRank算法的应用 • 社交网络、引用关系网络、链接预测等诸多主要领域中 • 如:好友推荐系统、产品推荐系统 • SimRank值的计算公式 • 基本原理:如果两个对象依赖于相同或相似的对象,那么它们是相似的 • 好友网络举例 Page 2
SimRank算法 • SimRank值的计算公式 • 基本原理:如果两个对象依赖于相同或相似的对象,那么它们是相似的 • 计算公式:如果将对象a与对象b之间的相似度记为S(a,b),SimRank算法的迭代计算公式为: • 其中其中I(a)和I(b)分别为顶点a和顶点b的指入顶点集合,系数C是一个阻尼系数,0<C<1, 0S(a,b) Page 3
SimRank算法 • SimRank算法的优点 • 通用性强,应用广泛 • SimRank算法存在问题 • 计算复杂度高,难以适应大数据, • 分布式环境下,通信量大,网络负担过重, • 分布式环境下,存储复杂度高,每个集群节点为 • 需同步计算 • 与实际需要的差距 • 购物网络、社交网络数据量庞大 • 需要较快的计算速度 Page 4
相关工作 • 框架的改进 • 提高迭代计算的效率,Spark,Haloop • 应用硬件 • 多核CPU,GPU • 代替算法 • SimFusion • 改进SimRank算法的计算形式 • Delta_SimRank • 在MapReduce编程模型下对SimRank算法的改进 • 避免收敛点参加计算,减小计算量、通信量 • 但不能实现异步,增加存储复杂度 Page 5
Asyn_SimRank算法 • 改进方法 • 累积—迭代——实现异步计算 • 关键点优先——加快收敛速度 • 避免收敛顶点参加计算——减少计算量,通信量 • 累积-迭代 • 将传统的迭代分为两步(1)迭代:迭代的计算两次迭代的差值(2)累积:将计算出的差值累积起来 • 关键点优先 • 对于算法整体收敛速度贡献较大的关键点分配更多的计算资源 • 避免收敛顶点参加计算 • 已经收敛的点相似度值恒定不变,迭代差值为零,不再参加计算 Page 6
Asyn_SimRank算法 令: = - = = 两边同时乘以则得到下式: Page 7
Asyn_SimRank算法 令: 将带入到公式(2)就有: 综上,可得公式(Asyn_SimRank的同步形式): Page 8
Asyn_SimRank算法 如果 那么假设一种简单的情况,在某一时刻{}首先到达,而{,}随后到达,其中,此时令: 那么就有,在到达而未到达时就开始累积-迭代操作,那么就可以得到如下计算过程: Page 9
Asyn_SimRank算法 当到达的时候: = + = == 然而这只是最简单的一种情况,实际情况要复杂的多,那么在实际的计算中任意的改变累积差值的粒度算法是否能够收敛呢? Page 10
Asyn_SimRank算法 Asyn_SimRank算法的异步计算形式: 其中,,,……是一个时间序列。-与-,可以不相等。每个顶点对所对应的时间序列均不同,这个时间序列完全可以由顶点对的累积-迭代操作何时结束来决定 Page 11
Asyn_SimRank算法的分布式实现 • 算法2 分布式Asyn-SimRank算法 • 输入:图 • 输出:顶点对相似度值 • WHILE(check()) DO: // chech()用于判断是否收敛或满足一定条件 • FOR L= 0 TO size //size为数据分片中的记录行数 • IF(ΔV==0|| checkpri()) //checkpri()检测记录的优先级 • CONTINUE; • 累积操作开始: • 接受其他节点法来的数据累积到ΔV • V=V+C*ΔV/|I(a)||I(b)| • 累积操作结束 • 迭代操作开始: • 对每个 //假设当前顶点是(a,b) • sent=C*ΔV/|I(a)||I(b)| • 将sent发送给(c,d) • ΔV=0 • 迭代操作结束 • END FOR • END WHILE Page 12
异步处理框架Maiter Asyn_SimRank算法在Maiter上的处理过程 分布式异步计算框架Maiter支持累积-迭代计算方式,改进了Maiter的API可以方便的实现Asyn_SimRank算法,因此在实验中也是用Maiter框架来实现的Asyn-SimRnak算法。 Page 13
实验 • 实验环境和数据集 集群节点软硬件配置 实验数据集相关信息 Page 14
实验 • 运行时间对比 Asyn-SimRank算法加速比 Page 15
实验 • 收敛速度对比 ca-AstroPh数据集上收敛速度对比 P2P数据集上收敛速度对比 Page 16
实验 • 算法与分布式环境规模的关系 随着分布式环境规模的增长,Asyn-SimRank算法处理相同数据所用的时间越来越短,说明Asyn-SimRank算法在分布式环境规模方面具有良好的扩展性,可以部署在大规模的分布式环境上处理大规模的数据 Page 17
实验 • 通信量的对比 Asyn-SimRank算法和SimRank算法的最大差距可达到103倍,和Delta-SimRank算法的差距最大可达15倍 Page 18
总结 支持异步计算:Asyn-SimRank算法运行时每个顶点对的累积-迭代操作可以完全异步的进行,使得Asyn-SimRank算法可以在异步式分布式框架上实现,进而利用异步式分布式框架的速度优势,快速的计算相似度。 支持优先级迭代:在图上计算相似度值时,总是大部分顶点先收敛,少部分顶点后收敛。如果可以优先的计算这那些较晚收敛的点,就可以得到较快的整体收敛速度。实验表明,优先的计算迭代差值大的顶点,可以得到较快的整体收敛速度。这样就可以结合优先级迭代进一步提高计算速度。 计算量相对较小:Asyn-SimRank采用的是累积-迭代的方式进行计算,收敛的点迭代差值一定为零,这样就可以不去计算这些顶点。进而节省已收敛顶点的计算开销。假设当前没有收敛的点的个数为m,那么部分顶点快速收敛后,Asyn-SimRank算法的时间复杂度会降为O(p2m),其中p为顶点的平均邻接点数。由于图中两顶点的相似度总是由部分少数临近的顶点决定的,而不是由所有顶点决定的,所以m相对于还是比较小的。 通信量相对较小:由于节省了已收敛顶点的计算,那么已收敛顶点自然也不会再有通信,所以当部分顶点快速收敛之后,通信量也会降为O()。 Page 19
谢谢! 2013.12.07 东北大学计算机软件与理论研究所 东北大学计算机中心
SimRank算法 • SimRank值的计算过程 • (a)为图G(V,E),(b)图为如果顶点且,则顶点对。如果边且,则边 Page 21