‘壹’ 【算法篇|32】PageRank(上):搞懂Google的PageRank算法
互联网发展至今,搜索引擎的体验显着提升,能够快速准确地找到用户所需内容。然而,在1998年之前,搜索引擎的问题主要体现在以下两点:
为了改善这些问题,谷歌的创始人拉里·佩奇提出了PageRank算法,旨在识别优质网页,确保搜索引擎不仅能够找到用户所需信息,还能通过筛选高权重网页提升排序结果的质量。
PageRank算法的灵感源于论文引用次数与影响力之间的关系,即引用次数越多,论文影响力越大。这一思想解决了早期网页检索质量低下的问题。
PageRank简化模型的介绍
让我们先理解PageRank的基本计算流程。假设存在4个网页A、B、C、D,它们之间的链接关系如下图所示。
首先,需要了解两个概念:出链是指网页链接出去的连接,入链则是指向该网页的连接。例如,A有2个入链和3个出链。
简单来说,网页的影响力可通过其所有入链集合的页面的加权影响力之和来计算。公式表示如下:
其中,u为待评估的网页,Bu为页面u的入链集合。对入链集合中的任意页面v,其能给u带来的影响力是v页面的影响力PR(v)除以v页面的出链数量,即将影响力PR(v)平均分配给它的出链。统计所有能给u带来链接的页面v,即可得到网页u的影响力,即为PR(u)。
出链给被链接的页面赋予影响力,用户访问网页时,其跳转到其他页面的概率即为该网页的跳转概率。以A为例,其有三个出链分别链接到B、C、D,因此跳转到B、C或D的概率均为1/3。
B有两个出链,链接到A和D,跳转概率为1/2。
通过计算,我们得到A、B、C、D四个网页的转移矩阵M:
假设A、B、C、D四个页面的初始影响力相同,即:
经过第一次转移后,各页面的影响力w1变为:
然后,使用转移矩阵乘以w1得到w2,直至第n次迭代后,当wn影响力不再变化时,收敛到(0.3333,0.2222,0.2222,0.2222),即为A、B、C、D四个页面最终平衡状态下的影响力。
计算结果表明,A页面权重较高,PR值更高,而B、C、D页面的PR值相等。
在简化模型中,存在两个问题需要解决:等级泄露和等级沉没。等级泄露是指无出链页面吸收其他页面影响力而不释放,导致其他页面PR值为0。等级沉没是指只有出链没有入链的页面,计算过程迭代后PR值为0。
PageRank的随机浏览模型解决方法
为了克服简化模型中的问题,拉里·佩奇提出了PageRank的随机浏览模型。该模型假设用户不仅通过链接进行网络浏览,还可能直接输入网址访问其他页面。他引入了阻尼因子d,d代表按照跳转链接浏览网页的概率,通常取0.85,而1-d=0.15表示通过直接输入网址访问页面的概率。
通过加入阻尼因子d,模型能够解决等级泄露和等级沉没问题,实现收敛,得到稳定的PR值。
PageRank在社交影响力评估的应用
网页之间的链接构成了互联网,论文之间的引用关系形成了知识网络,这些都属于复杂网络的范畴。PageRank算法适用于任何存在链接的网络结构。
将PageRank应用到社交影响力评估中,如微博或脉脉,通过链接关系评估个人或公司的影响力。在微博中,关注者的质量而非数量是决定影响力的关键,与知名人士的连接能够显着提升影响力。在职场场景中,与行业领袖和猎头的链接关系对个人影响力至关重要。公司与行业巨头的合作关系也是衡量其市场地位的重要指标。
PageRank的启示与应用
PageRank不仅在搜索引擎中发挥了重要作用,其思想也对诸多领域产生了深远影响。在社交网络中,链接的质量是评估影响力的关键因素。通过PageRank算法,我们可以识别出高影响力节点以及链接农场等现象。
通过理解PageRank算法原理并应用到现实世界中,我们能够更好地评估个人、公司和平台的影响力,同时也能够识别潜在的链接农场,避免无效链接对网络结构的影响。
‘贰’ 图算法--PageRank分析
PageRank算法是一个长期随机游走算法,通过不断迭代最终达到稳定状态。
以一个包含四个节点的有向图为例,它代表了网页之间的链接关系。假设每个节点的出链概率平均分配,例如节点A有3条出链,则传播权重为1/3。那么,该图下的转移关系矩阵应该如下所示:
假设上网者浏览每个网页的概率相等,即1/n,这里有四个网址,所以n=4,这同时也表示了节点的初始PR值。在第一次迭代后,浏览传播后,各节点的PR值发生变化。
接下来的第二次、第三次、第n次传播迭代与第一次类似,转移矩阵M保持不变,Pn=MV1V2*..Vn-1,直到达到稳态,即前后两次迭代后的PR值之差Pn-Pn-1。
PageRank算法主要存在两个问题:一是转移矩阵M可能导致节点的PR总和Sum(PR)不等于1,一直衰减,最终所有节点的PR值都为0;二是SpiderTrap问题,即零outlink,只入不出但有关系指向自己,这会导致PR值都集中到特定节点上。
解决方法是在每个节点设置随机概率α的出链,以模拟用户随机输入网址的概率。阻尼系数α(按照谷歌的实践,默认值为0.85)表示用户在任何一个界面上通过随机(1-alpha)输入网址到达此节点n的贡献的PR值。
PR值的计算原理包括:PR值来自于三种方式:PR=alphawPR+aplhadangling分配+(1-alpha)平均分配。其中,w*PR是根据入链权重按路径分配,dangling是强制分配给零OutLink节点,平均分配则防止SpiderTrap问题。
PageRank主要有三种实现:pagerank函数、pagerank_numpy函数和pagerank_scipy函数。这三个函数的原理效果相似,但pagerank函数可以初始化初始节点PR值。
本文详细讲解了PageRank的PR值计算模式、算法存在的问题及其解决方法,并从源码角度分析了PageRank的代码计算模式及解决问题的代码体现。在未来的文章中,将继续补充算法在基于Neo4j图的PageRank传导实战应用例子。
‘叁’ PR算法介绍
PageRank算法是一种基本的网页重要性评估方法,其核心思想是通过网页间的链接关系传递重要性得分。如果网页T链接到网页A,那么A会获得T的一部分重要性,具体为A的PageRank值PR(A)的计算如下:
PR(A) = (1-d) + d * (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))
其中,d(阻尼指数,一般取0.85)用来限制信息的扩散,防止完全依赖于链接数量。T1到Tn是链接到A的页面,而C(T)代表页面的出链数。PageRank需要通过迭代计算来逐步接近准确值。
优点是PageRank算法是静态的,可以在离线计算时为所有网页分配PR值,降低在线查询时的计算量,提高了查询响应速度。然而,它存在局限性,如忽视查询的主题特征,可能导致结果的相关性和主题性下降,并且对新网页的评价较低。
为解决这些问题,Topic-Sensitive PageRank(主题敏感的PageRank)提出,通过计算与不同主题相关的PageRank向量集合,根据用户查询的主题返回更精确的结果。然而,该方法并未完全利用主题相关性来提高链接得分的准确性。
另一种是Hilltop算法,它仅考虑专家页面的链接,注重结果的相关性和准确性。但专家页面的质量和数量对其准确性至关重要,且可能忽视大量非专家页面的贡献,适用于对查询结果进行深度排序的情况。然而,当专家页面不足时,Hilltop可能返回空结果。
永久居留的英文是PermanentResidence,所以通常也称为PR。永久居留是一种权利,这种权利让获得永久居留权的人可以在该国永远居住下去,并在许多方面与该国公民享受同等待遇。