微博好友推荐算法-SALSA

时间:2022-02-15 08:56:06

     在微博上,你关注的人会是谁?微博网络中几亿用户,如何在里面找出你感兴趣的人推荐给你? 从系统层面上来看,这个是很有挑战性的工作,即涉及到好的推荐算法能把握用户的喜好和关注点,同时也要良好计算系统能够快速响应。这里主要谈论微博好友推荐算法部分(Twitter上的推荐算法)。

   首先看下面的用户关注之间的二部图(1),左边是用户圈,就是用户的信任圈子,右边的是用户信任圈集合用户关注的所用用户,我们所要做的是从这些节点中找到最能吸引眼球的关注者。

如何构建用户的信任圈?给定一个用户,已知该用户的关注用户群,我们可以通过类似personalized PageRank 随机游走方法,设定随机游走步数和重启概率,忽视低概率节点,采样那些大度节点。从当前节点出发,进行随机游走过程,那些到达概率高的节点中取一定数量节点作为改节点信任圈。

完成节点信任圈的构造后,可以构建出图1的网络,通过SALSA算法迭代算出右边节点(我们称作:authorities)的得分,分数高的节点用户关注的概率越高。SALSA也是类似pagerank,HITS的随机游走系列的算法,它是两方向随机游走过程,它最早是出现在网页搜索排序算法中。

 

微博好友推荐算法-SALSA

                                                       (1)

 

下面重点介绍下SALSA算法

介绍SALSA算法之前,我们必须先了解下HITS算法。

(1)HITS算法最早是用于搜索排序中的,给点一个query,搜索引擎会返回一些关键词相关网页,如何确定这些网页的重要性呢?

HITS算法是这样的:

首先把那些根据关键相关返回网页作为根集合S,再由S集合网页节点的链入和链出网页节点派生出结合C,结合C包括S,链入和链出节点集合。

C中的每个节点分配一对权重<h(s),a(s)>, 节点h(s)权重由节点链出的节点的a(s)决定,a(s)由节点的链入节点的h(s)决定。

算法的迭代过程如下:

微博好友推荐算法-SALSA

从上面可以看到I操作,即网页的a权重向量: 

  微博好友推荐算法-SALSA

O操作可以看作是:

 

h = Wa

 

其中,W是图连接矩阵。

 关于HITS算法收敛性,可以从如下变换形式来得出:

微博好友推荐算法-SALSA

当算法收敛时候,a其实就是对应矩阵A那个最大特征值对应的特征向量的归一化形式,同样,h也是H矩阵那个最大特征值对应的特征向量的归一化形式。

(2) SALSA算法

SALSA算法和HITS算法初始部分一样,构建相同的集合集C和彼此的链接关系。

SALSA一种随机游走过程,但是不同经典的随机游走。它涉及到把一个网页节点看成2种不同类型节点:hub和authority,随机游走对应着这样两种不用类型的Markov链:hub链和authority链,状态转移为网页前向和后向。算法构建方式如下:

 

 微博好友推荐算法-SALSA

首先是把构建一个无向图,原图节点分为2类,然后构建边。

这样从某个节点出发,进行两个方向的随机游走。h和a方向的状态转移矩阵:

微博好友推荐算法-SALSA

对于以上的形式可以通过如下的矩阵相乘的方式展现:

微博好友推荐算法-SALSA

 

 

有了H和A矩阵,就可以知道节点集合最终的h和a向量:和HITS一样,h和a对应H和A的最大特征值对应的归一化特征向量。其实,计算h和a可以参照HITS,进行迭代求解。

 

参考文献:

[1]WTF: The Who to Follow Service at Twitter

[2]Lempel R, Moran S. SALSA: the stochastic approach for link-structure analysis[J]. ACM Transactions on Information Systems (TOIS), 2001, 19(2): 131-160.