记录一下数据集下载网址:
SimRank 是在有向图中测量顶点对间相似性的重要措施。
SimRank 是一个评估任意两个对象之间相似性的模型,核心思想是:如果两个对象的引用是相似的,那么这两个对象也是相似的。它的定义有两种:
(1),
其中NI(u)表示结点u的所有入邻居结点,c是一个属于(0,1)的阻尼系数。
(2),
另一种定义是基于随机冲浪匹配模型的。
其中T是一条随机路径的长度;
Pft(u,v,w)表示两个随机冲浪者u和v在时刻t都到达顶点w的概率;
Iw表示顶点w的初始相似性,通常为1.
基于SimRank的相似性相关问题分为以下四种:
单一顶点对SimRank:计算给定两个顶点之间的相似性分数;
单源SimRank:给定一个顶点v,计算v和图中所有其它顶点之间的相似性分数;
全对SimRank:计算所有的顶点对之间的相似性分数;
SimRank连接:给定一个阈值,找出所有相似性分数大于阈值的顶点对。
对不同的问题有不同的处理方法,以下是针对不同问题采取不同技术所达到的时间复杂度:
具体所在论文:Efficient SimRank Computation via Linearization.
(一).An Efficient Similarity Search Framework for SimRank over Large DynamicGraphs-2015-VLDB;
1,问题定义:在一个大的动态图上进行相似性搜索
2,背景:推荐系统
比如有两个顾客买东西,一个买了鸡蛋,面粉,小苏打;另一个买了小苏打,鸡蛋,白糖;通过相似性搜索,发现她们之间有相似性,所以可能面粉是对第二个顾客的一个好的推荐。
3,运用到的知识:
Simrank:一个评估任意两个对象之间相似性的模型,核心思想是:如果两个对象的引用是相似的,那么这两个对象也是相似的。
Monter-Carle simulation:是一个模拟技术,通过随机取样来评估一个数值。
CRS:一个行压缩格式,通过三个数组val,col_lind,row_ptr来表示一个矩阵。
Log-implementation:没有实际改动单向图,而是用log来表示这些改动,logbuffer中猜测是表示单向图中更新后的现存的边,以前的单向图中的边时过时的。当buffer满了后就重构一次。
4,我们这个算法的核心思想是通过单向图为每一个顶点维持一个路径的集合。
5,单向图存在的依赖性问题,是在查询中通过重新取样Rq个路径来消除的,这个使得我们算法精确度比较高。
6,本文还介绍了一个top-k相似性搜索算法,是指找一个固定顶点的top-k个相似顶点,猜想有没有一次性求出每一对顶点的相似性,最后在从所有对中选出top-k个相似对?
(二). Scalable SimRank Join Algorithm-icde-2015;1. 什么是SimRank Join?
就是找出所有大于等于阈值的顶点对。
2. 过程?
1) 对SimRank进行线性化,求出对角改正矩阵D,(这是难点)
2) 通过GS算法求出近似SimRank矩阵
3) 在用GS算法求近似SimRank矩阵时,用到了随机阈值的方法来减少内存的使用。
4) 对已经求出的SimRank矩阵进行验证。