矩阵/向量迭代算法:PageRank, HITS, SPEAR

来源:互联网 发布:混音软件 编辑:程序博客网 时间:2024/06/11 11:30

1. PageRank

  Google 著名的 PageRank 算法根据网页间的链接情况计算网页的重要程度。每个页面(Document)的 PageRank 值用向量 p 表示。页面间的链接关系用矩阵 H 表示,其中 Hij 表示页面 i 跳转到 j 的概率,满足

Hij=01ki(if i have no link to j)(if i have a link to j)

其中 ki 为页面 i 上所有的外链数(出度),即假设从一个页面跳转到其有链接的所有其他页面的概率是均等的。

  对于上面没有任何外链的那些页面(出度为零),为防止其成为吸积 PageRank 值的“黑洞”,可假设其对所有页面都有外链(Google 未必是这样做的)。所以矩阵 H 始终满足下面的关系:

iHij=1

  PageRank 算法假设一个页面的 PageRank 值等于所有指向它的那些页面的 PageRank 值乘以跳转到其上的概率的和,即

pi:=jHjipj

  用矩阵乘法表示就是

p:=HTp

  初始时,将向量 p 的每个分量设为相同值。将这个方程不断迭代,最终得到收敛的向量 p 就是页面的 PageRank 值。容易看出,收敛时的向量p 正是矩阵 HT 的特征向量。

2. HITS 算法

  几乎就在 Google 提出 PageRank 算法的同时,IBM 的研究者们在一个会议上发表了他们的 HITS 算法。HITS 算法在应用上不及 PageRank 算法成功,但是其理论方法跟 PageRank 比较相似,而且看起来更有道理。

  在 HITS 算法中,所有页面的属性有两个向量表示: a 表示页面的 authority, h 表示页面的 hubness。一个页面指向的高 authority 的页面越多,其 hubness 就越高;一个页面被越多的高 hubness 的页面指向,其 authority 就越高。

  所有页面的链接关系用矩阵表示为:

Aij={01(if i have no link to j)(if i have a link to j)

  这样每个页面的两个属性向量的关系可以写成

\begin{equation} 
\left\{ \begin{array} {ll} 
\mathbf{a} := \alpha \mathbf{A}^{T} \mathbf{h} \\ 
\mathbf{h} := \beta \mathbf{A} \mathbf{a} \end{array} \right. \label{eq:ample} \end{equation}

其中 α, β 为归一化系数。

  两个向量 ah 各分量初始化为 1 ,将方程 (???) 迭代计算直至收敛,就得到所有页面最终的 authoriy 和 hubness。

3. SPEAR 算法

  SPEAR 算法形式上与 HITS 极为相似,但意义不同。在用户与物品有某种行为(如对电影打标签、购买商品等)的场景中,设用户和物品的数量分别是 MN,则可以用 M 维向量 e 表每个示用户的“专家分数”,用 N 维向量 q 表示物品的“质量分数”。算法假设用户对越多的高质量物品有行为、行为越早,则用户的专家分数就越高;物品被越多的专家用户实施行为,其质量分数就越高。用户-物品的行为由 M×N 维矩阵 A 描述,该矩阵满足:

1)2)Aiα>AjαAiα=0( i j  α )( i  α )

即假设专家倾向于更早的发现高质量物品。矩阵 A 的具体取值方法、平滑方式可自行决定,只要每一列满足上面的时间序列关系即可。

  前面关于用户专家分数向量和物品质量向量的假设可以表示为

{e:=αAqq:=βATe

  其中 αβ 仍是归一化系数。按此方程迭代计算直至收敛,即得到最终的用户向量和物品向量。

4. 总结

  可见,这三个算法虽然有不同的用途,但却有相似的假设,相似的计算方式。在其他场景下,也许会发展出类似的有意思的算法。

0 0
原创粉丝点击