您的位置:首页 > 其它

page-rank计算问题

2015-09-11 22:55 330 查看
  大家上网最常用的一个工具是谷歌搜索,比如搜索“笑话”,会返回与笑话相关的网页链接结果,供你选择。问题来了,搜索是如何进行的,机器怎么去尽力找到跟你搜索信息相关的网页的呢?

Page-Rank

  谷歌公司对网页进行重要性评估,并且基于此计算网页等级并给出搜索结果。

网页重要性评估

  Google根据链接来衡量网页重要性,并做了两个重要假设:

  1. 数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。

  2. 质量假设:指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面A,则页面A越重要。

  假设有四个网页如下,箭头表示外链:

  



  构造链接概率矩阵S=⎡⎣⎢⎢⎢⎢01/31/31/3001/21/200010100⎤⎦⎥⎥⎥⎥S=\begin{bmatrix} 0 &0 &0 &0 \\ 1/3 &0 &0 &1 \\ 1/3 &1/2 &0 &0 \\ 1/3 &1/2 &1 &0 \end{bmatrix}

  第一列分别表示网页与自身的链接概率为0,与网页2的链接概率为1/3,与网页3的链接概率为1/3,与网页4的链接概率为1/3。

Rank过程

  如何给出网络上页面的等级向量呢?

  Page-rank向量由q=S∗qq=S*q来确定。(求解特征值为1对应的特向)

  通过qnext=S∗qcurrentq^{next}=S*q^{current}迭代计算来找到qq,当两次qq结果的变化很小时,终止迭代。q0q_0取为全1或者1/N1/N。

  实际应用中,会对qq修正,因此在迭代过程中,qq更新公式为qnext=α∗S∗qcurrent+e∗1−αNq^{next}=\alpha*S*q^{current}+e*\frac{1-\alpha}{N},ee是大小为N*1的列向量。

特殊情况处理

  1. Dead End 不存在外链的节点

  



  由于web 4这个Dead End的存在,会导致最后q收敛时的rank值为0

  处理方法:去掉Dead End点及相应的边,直到没有Dead End点。计算剩余点的rank向量,由已知的点反推Dead End点的链接概率。

  去掉4及相应边后,3也变成了Dead End,也去掉3及相应边。

  先反推3:rank3=rank1∗1/3rank_3 = rank_1*1/3

  再反推4:rank4=rank1∗1/3+rank2∗1+rank3∗1rank_4 = rank_1*1/3+rank_2*1+rank_3*1

  2. Spider Traps及平滑处理

  



  对于像图中web 4的节点,只有链向自己的外链,会导致多数节点的rank值接近0。系数矩阵也会导致rank大多数接近0,而4这样的节点更是加剧了这种情况。为了避免这种情况,对计算加平滑处理,就是上面提到的对q的修正。

Topic-Sensitive Page-Rank

  一股脑地对所有网页不加区分的计算等级排序,是不符合正常的情况的,我们更希望对网上信息有个大体分类,每个类下对网页等级排序。这样搜索起来更有针对性。

  其qq迭代公式如下:

  qnext=α∗S∗qcurrent+s∗1−α|s|q^{next}=\alpha*S*q^{current}+s*\frac{1-\alpha}{|s|}

  其中ss为topic向量,属于某类则对应位置为1,不属于某类则对应位置为0。|s||s|为ss中1的个数。

  通过topic使得某类的网页在用户搜索相应类内容时,排序更靠前。

小结

  page-rank的基本过程如上所述,实际应用肯定很复杂,同时也要分布处理,这里没有涉及。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: