PageRank算法


一 PageRank算法概述

PageRank, 是谷歌创始人拉里 ⋅ \cdot 佩奇和谢尔盖 ⋅ \cdot 布林于1997年构建早期的搜索系统原型时提出的链接分析算法。
PageRank是Google用于标识网页的等级/重要性的一种方法,是Google用来衡量一个网站的好坏的唯一标准。在揉合了诸如Title标识和Keywords标识等所有其它因素之后,Google通过PageRank来调整结果,使那些更具“等级/重要性”的网页在搜索结果中另网站排名获得提升,从而提高搜索结果的相关性和质量。其级别从0到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)。一般PR值达到4,就算是一个不错的网站了,而PR值为7到10则表明这个网站非常受欢迎(或者说极其重要)。Google把自己的网站的PR值定到10。


二 PageRank的两个基本假设

PageRank除了考虑到入链数量的影响,还参考了网页质量因素。

对于某个互联网网页A来说,该网页PageRank的计算基于以下两个基本假设:
数 量 假 设 \color{blue}{数量假设} :在Web图模型中,如果一个页面节点接收到的其它网页指向的入链数量越多,那么这个页面越重要。
质 量 假 设 \color{blue}{质量假设} :指向页面A的入链网页的质量不同,质量高的页面会通过链接向其它页面传递更多的权重。


三 PageRank算法原理

3.1 算法步骤

1)初始阶段:网页通过链接关系构建起Web图,每个页面设置相同的PageRank值。
2)迭代阶段:在一轮更新页面PageRank分数的计算中,每个页面将当前的PageRank值平均分配到本页面包含的链上,这样每一个链获得了新的权值。每个页面将所有指向本页面的入链所传入的权值求和,即可得新的PageRank得分。

3.2 基本思路

如果网页T存在一个指向网页A的连接,则表明T的所有者认为A比较重要,从而把T的一部分重要性得分赋予A。这个重要性得分值为:PR(T) / L(T)
其中PR(T)为T的PageRank值,L(T)为T的出链数
则A的PageRank值为一系列类似于T的页面重要性得分值的累加。
即一个页面的得票数由所有链向它的页面的重要性来决定,到一个页面的超链接相当于对该页投一票。一个页面的PageRank是由所有链向它的页面(链入页面)的重要性经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反如果一个页面没有任何链入页面,那么它没有等级。

得到: P R ( A ) = P R ( B ) L ( B ) + P R ( C ) L ( C ) + . . . PR(A) = \frac{PR(B)}{L(B)} + \frac{PR(C)}{L(C)} + ... PR(A)=L(B)PR(B)+L(C)PR(C)+...

由于有悬挂网页的存在,即那些没有指向其它网页的网页。得到修正的计算公式: P R ( A ) = α ⋅ ( P R ( B ) L ( B ) + P R ( C ) L ( C ) + . . . ) + ( 1 − α ) PR(A) = \alpha\cdot(\frac{PR(B)}{L(B)} + \frac{PR(C)}{L(C)} + ...)+ (1-\alpha) PR(A)=αL(B)PR(B)+L(C)PR(C)+...+(1α)

α \alpha α 为阻尼系数,一般取值为0.85。

3.3 公式形成思路

3.3.1
网 页 排 序 思 路 \color{blue}{网页排序思路} :研究网页间的相互链接来确定排序。具体而言(两个基本假设),一个网页被其它网页链接得越多,它的排序就应该越靠前。另外,一个网页越是被靠前的网页所链接,它的排序就应该越靠前。

想要知道一个网页 W i W_i Wi的排序,不仅要知道多少网页链接了它,而且还得知道那些网页各自的排名。陷入了“先有鸡还是先有蛋”的循环。
为了打破这个循环,分析一个虚拟用户(互联网意义上全体用户的一种平均意义上的代表)在互联网的漫游过程。如果网页 W i W_i Wi N i N_i Ni个对外链接,则虚拟用户在访问了 W i W_i Wi之后,下一步点击那些链接当中的任何一个的几率均为 1 N i \frac{1}{N_i} Ni1


思 路 建 模 \color{red}{思路建模}
分析数学化:用 p i ( n ) p_i(n) pi(n)表示虚拟用户进行第 n n n次浏览时访问网页 W i W_i Wi的几率。
p i ( n + 1 ) = ∑ j p j ( n ) p j → i N j p_i(n+1) = \frac{\sum_j p_j(n)p_{j\rightarrow i}}{N_j} pi(n+1)=Njjpj(n)pji
其中, p j → i p_{j\rightarrow i} pji是指示函数,定义为:如果网页 W j W_j Wj有链接指向网页 W i W_i Wi,则取值为1,反之为0。
求和式表明了所有链接向网页 W i W_i Wi的网页 W j W_j Wj都对 W i W_i Wi的排名有贡献,另外 p j p_j pj越大,网页 W j W_j Wj的贡献越大。
将上述公式转换成矩阵形式:
P n + 1 = H p n P_{n+1} = Hp_n Pn+1=Hpn
H i j = p j → i N j H_{ij} = \frac{p_{j\rightarrow i}}{N_j} Hij=Njpji

上述公式描述的是一种马尔科夫过程, H H H是转移矩阵。可以改写为:
P n = H n p 0 P_n = H^n p_0 Pn=Hnp0
其中 p 0 p_0 p0为虚拟用户初次浏览各网页的概率分布。

3.3.2
虚拟用户在经过很长时间的漫游之后得到访问各网页的概率分布,即 lim ⁡ n → ∞ P n \lim_{n\rightarrow \infty}{P_n} limnPn,随之来确定网页排序。这个定义要想成立,三个问题要解决:
1)极限 lim ⁡ n → ∞ P n \lim_{n\rightarrow \infty}{P_n} limnPn 是否存在?
2)如果极限存在,是否与 p 0 p_0 p0的选取无关?
3)如果极限存在,且与 p 0 p_0 p0的选取无关,作为网页排序的依据是否合理?
(事实上,这三个假设在现实中都不成立。)


为了使第三个假设成立,需要把“悬挂网页”的情况解决。
当他们访问到“悬挂网页”时,假设用户会在整个互联网随机选取一个网页进行访问。

随 机 性 修 正 \color{red}{随机性修正}
分析数学化:将 H H H中的列向量中的零向量换为 e N \frac{e}{N} Ne e e e是所有分量都为1的列向量, N N N为互联网的网页总数。引入一个描述“悬挂网页”的指示向量 a a a,它的第 i i i个向量的取值取决于 W i W_i Wi是否为“悬挂网页”,取值为1,表明为“悬挂网页”。用 S S S表示修正之后的矩阵:
S = H + e a T N S = H + \frac{ea^T}{N} S=H+NeaT
S S S矩阵中的每一列的和都为1,是随机矩阵。

3.3.3
为了解决前两个问题,假定虚拟用户不仅局限于访问当前网页中给出的链接。
素 性 修 正 \color{red}{素性修正}
数学化分析:虚拟用户在每一步都有小于1的概率 α \alpha α来访问当前网页提供的链接,随机访问互联网上的任何一个网站的概率是 1 − α 1-\alpha 1α
这样上述的 S S S矩阵变为新的矩阵 G G G:
G = α S + ( 1 − α ) e e T N G = \alpha S + (1-\alpha)\frac{ee^T}{N} G=αS+(1α)NeeT
矩阵 G G G不仅是一个随机矩阵,也是一个素矩阵(所有矩阵元都为正)。

3.3.4
经过两次修正之后,网页排序的计算方法变为了
P n = G n P 0 P_n = G^n P_0 Pn=GnP0
公式表述为
S ( V i ) = α ∑ j ∈ I n ( V i ) 1 ∣ O u t ( V j ) ∣ S ( V j ) + ( 1 − α ) S(V_i) = \alpha \sum_{j\in In(V_i)} \frac{1}{|Out(V_j)|}S(V_j) + (1-\alpha) S(Vi)=αjIn(Vi)Out(Vj)1S(Vj)+(1α)

其中 α \alpha α应该来自于对真实用户平均行为的分析,但是矩阵(十分巨大)的收敛速度也影响了其取值。 α \alpha α取值越小, G n P 0 G^nP_0 GnP0收敛速度越快。太小的话,网页间的彼此链接的排序思路就会被弱化。
最终选取的数值为 α = 0.85 \alpha=0.85 α=0.85


四 参考网页

https://blog.csdn.net/hguisu/article/details/7996185
http://www.changhai.org/articles/technology/misc/google_math.php

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值