PageRank 笔记

PageRank 笔记PageRank 要说到 PageRank 算法的来源 这个要从搜索引擎的发展讲起 最早的搜索引擎采用的是分类目录的方法 即通过人工进行网页分类并整理出高质量的网站 那时 Yahoo 和国内的 hao123 就是使用这种方法 后来网页越来越多 人工分类已经不现实了 搜索引擎进入了文本检索的时代 即计算用户查询关键词与网页内容的相关程度来返回搜索结果 这种方法突破了数量的限制 但是搜索结果不是很好

PageRank

要说到 PageRank 算法的来源,这个要从搜索引擎的发展讲起。最早的搜索引擎采用的是分类目录的方法,即通过人工进行网页分类并整理出高质量的网站。那时 Yahoo 和国内的 hao123 就是使用这种方法。

后来网页越来越多,人工分类已经不现实了。搜索引擎进入了文本检索的时代,即计算用户查询关键词与网页内容的相关程度来返回搜索结果。这种方法突破了数量的限制,但是搜索结果不是很好。因为总有某些网页来回地倒腾某些关键词使自己的搜索排名靠前。

于是我们的主角登场了。谷歌的两位创始人,当时还是美国斯坦福大学研究生的佩奇和布林开始了对网页排序问题的研究。他们借鉴了学术界评判学术论文重要性的通用方法,那就是看论文的引用次数。由此想到网页的重要性也可以根据这种方法来评价。于是 PageRank 的核心思想就诞生了。

  • 如果一个网页被很多其他网页链接到的话,说明这个网页比较重要,也就是 PageRank 值会相对较高。
  • 如果一个 PageRank 值很高的网页链接到一个其他的网页,那么链接到的网页的 PageRank 值也会相应地提高。

PageRank 算法计算每一个网页的 PageRank 值,然后根据这个值的大小对网页的重要性进行排序。它的思想是模拟一个悠闲的上网者,上网者首先随机选择一个网页打开,然后在这个网页上呆了几分钟,跳转到该网页所指向的链接,这样无所事事、漫无目的地在网页上跳来跳去,PageRank 就是估计这个悠闲的上网者分布在各个网页上的概率。

PageRank 背后的两个基本假设:

  • 数量假设:更重要的网页可能被更多的网页链接到。
  • 质量假设:有更高的 PageRank 的网页将会传递更高的权重。

PageRank 模型

我们可以将 Web 作如下抽象:

  • 将每个网页抽象成一个节点;
  • 如果一个页面 A 有链接直接链向 B,则存在一条有向边从 A 到 B。

因此,整个 Web 被抽象为一张有向图。

Web抽象

  • 矩阵的每一列代表一个具体网页的出链,简单地说就是当前网页向其他网页的链接;
  • 矩阵的每一行代表一个具体网页的入链,简单地说就是其他网页向当前网页的链接。
PageRank 初始化

PageRank 值的物理意义是一个网页被访问的概率,初始时用户访问每个页面的概率均等,假设一共有 N 个网页,每个网页的初始 PR 值 = 1 / N。我们可以将这些网页的初始 PR 值保存到一个向量中。

继续沿用先前的图,初始 PR 值向量 P 0 = ( P R A , P R B , P R C , P R D ) T = ( 1 4 , 1 4 , 1 4 , 1 4 ) T P_0 = (PR_A, PR_B, PR_C, PR_D)^T = (\frac{1}{4}, \frac{1}{4}, \frac{1}{4}, \frac{1}{4})^T P0=(PRA,PRB,PRC,PRD)T=(41,41,41,41)T

PageRank 计算

继续使用先前的例子,由 A、B、C、D 四个页面组成的 Web。

Web抽象

在这里插入图片描述

终止点问题

先前所举的例子是一个理想状态:假设所有网页组成的有向图是强连通的,即从一个网页可以到达任意网页。但实际的网络链接环境没有这么理想,有一些网页不指向任何网页,或不存在指向自己的链接。

终止点问题

【终止点】:一个没有任何出链的网页,例如上图的 C 点。上网者浏览到 C 网页将终止于该网页,而无法继续浏览其他网页。

然后根据公式 P n = M ⋅ P n − 1 = M n ⋅ P 0 P_n = M \cdot P_{n-1} = M^n \cdot P_0 Pn=MPn1=MnP0 迭代计算出 PR 值向量。
P 0 = [ 1 / 4 1 / 4 1 / 4 1 / 4 ] P 1 = M ⋅ P 0 = [ 3 / 24 5 / 24 5 / 24 5 / 24 ] P 2 = M ⋅ P 1 = [ 5 / 48 7 / 48 7 / 48 7 / 48 ] ⋯ P n = M ⋅ P n − 1 = [ 0 0 0 0 ] P_0 = \begin{bmatrix} 1/4 \\ 1/4 \\ 1/4 \\ 1/4 \\ \end{bmatrix} \quad P_1 = M \cdot P_0 = \begin{bmatrix} 3/24 \\ 5/24 \\ 5/24 \\ 5/24 \\ \end{bmatrix} P_2 = M \cdot P_1 = \begin{bmatrix} 5/48 \\ 7/48 \\ 7/48 \\ 7/48 \\ \end{bmatrix} \quad \cdots \quad P_n = M \cdot P_{n-1} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ \end{bmatrix} P0=1/41/41/41/4P1=MP0=3/245/245/245/24P2=MP1=5/487/487/487/48Pn=MPn1=0000
可以看到,经过多次跳转之后,所有网页的 PR 值都是 0,这样的计算结果是无意义的。为什么会这样?因为转移矩阵 M 的第 3 列全为 0,这是导致迭代结果最终归零的“罪魁祸首”。

终止点问题示例图2.png

【解决方案】:当访问到终止点 C 而“走投无路”时,以等概率随机跳转到下一个网页,从而开启一次新的访问。

  • 改造终止点 C,使它能够等概率地游走到网络中的所有页面,即添加从 C 到包括它本身的所有页面的链接。
  • 在上例中就是将转移矩阵 M 的第三列的每一项改为 1/4。这样改造后,每一个节点都有出链,相应的 M 的每一列的列累加和都为 1。
陷阱问题

陷阱指的是只有指向自身链接的网页,见下图 C。

陷阱问题示例图.png

根据公式 P n = M ⋅ P n − 1 = M n ⋅ P 0 P_n = M \cdot P_{n-1} = M^n \cdot P_0 Pn=MPn1=MnP0,迭代计算出 PR 值向量。
[ 1 / 4 1 / 4 1 / 4 1 / 4 ] [ 3 / 24 5 / 24 11 / 24 5 / 24 ] [ 5 / 48 7 / 48 29 / 48 7 / 48 ] ⋯ [ 0 0 1 0 ] \begin{bmatrix} 1/4 \\ 1/4 \\ 1/4 \\ 1/4 \\ \end{bmatrix} \quad \begin{bmatrix} 3/24 \\ 5/24 \\ 11/24 \\ 5/24 \\ \end{bmatrix} \quad \begin{bmatrix} 5/48 \\ 7/48 \\ 29/48 \\ 7/48 \\ \end{bmatrix} \quad \cdots \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \\ \end{bmatrix} 1/41/41/41/43/245/2411/245/245/487/4829/487/480010
可以看到经过多次跳转,跳转到陷阱页面的概率值为 1,而跳转到其他正常网页的概率值为 0,这样的计算结果也是无意义的。

除了自己只链接自己这一种形式的陷阱,还存在一种多个页面相互链接的陷阱。

陷阱问题示例2

上图中 5、6、7 三个页面构成一个闭环,它们紧密链接成环而没有外出的链接,最终也会导致上网者“深陷于此”。同样的,经过多次跳转,陷阱网页的概率值之和为 1,而其他正常网页的概率值为 0。

当用户遇到终止点或者陷阱的话,他不会不知所措,也不会无休止地自己打转,他会通过浏览器的地址栏输入新的地址,以逃离这个网页。也就是说,用户以一个网页跳转至另一个网页的过程中,会以一定概率不点击当前网页的链接,而是在地址栏中输入一个新的地址。

【解决方案】:随机浏览模型。

随机浏览模型

假定一个上网者从一个随机的网页开始浏览,此时有两种选择:

  • 通过点击当前页面的其他链接开始下一次浏览;
  • 通过在浏览器的地址栏输入新的地址以开启一个新的网页。

其中,上网者通过点击链接开启新页面的概率为 d(d 也称阻尼系数,通常取 0.85)。此时,我们的 PageRank 模型变为:在每一个页面,用户都有 d 的概率通过点击链接进入下一个页面;此外,还有 1 – d 的概率随机跳转,此时跳转到其他页面的概率为 1 / N(当前页面的其他链接数)。

如何通过随机浏览模型解决陷阱问题呢?仍然以先前的实例为例。

陷阱问题示例图.png

由于存在一定的概率跳出循环,因此可以避免陷阱问题。

随机浏览模型的收敛性

PageRank 模型的前提:假设用户选择浏览的下一个网页与过去浏览过哪些网页无关,而仅依赖于当前所在的页面,则该过程可以认为是一个有限状态、离散时间的随机过程。

这种“将来”的情况与“过去”无关,而只与“当前”状态有关的性质称为马尔可夫性。具有马尔可夫性的随机过程称为马尔可夫过程。时间和状态都是离散的马尔可夫过程称为马尔可夫链—— P 0 , P 1 , P 2 , ⋯   , P n P_0, P_1, P_2, \cdots, P_n P0,P1,P2,,Pn 是一个马尔可夫链。

对于马尔可夫链 P n = A P n − 1 P_n = AP_{n-1} Pn=APn1,当概率转移矩阵 A 满足以下 3 个条件时, P n P_n Pn 最终收敛,保持在一个稳定值附近。

  • A 为随机矩阵:即所有 A[i][j] >= 0,且 A 的所有列向量的元素和为 1;
  • A 是不可约的:A 是不可约的当且仅当 A 所对应的图是强连通的。
  • A 是非周期的:对某个不等于 1 的自然数 K,如果 A k = E A^k = E Ak=E,则称 A 为周期矩阵,K 是矩阵 A 的周期。而 A 的每个元素都是正数,所以无论 A 与自身相乘多少次所得到的矩阵,其元素都不可能出现 0,自然也不可能为 E,所以 A 是非周期的。

Link Spam 与反作弊

首先介绍两个新的概念——链接农场和黄金链。

  • 链接农场:是指由互联网中的一部分网页组成,这些网页非常密集地互相连接在一起。通过创建一个堆砌大量链接而没有实质内容的网页,这些链接彼此互链,或指向特定网站,以提高某个或者某些特定网页的 PageRank 值。
  • 黄金链:指一些高权重的网站出售首页的链接给作弊网站,以提高作弊网站的 PageRank 值。

链接作弊者眼中的 Web 组成结构:

  • 不可达网页:作弊者无法影响的网页。Web 中的大部分网页都属于这一类。
  • 可达网页:虽然不受作弊者控制,但作弊者可以影响它们。
  • 自有网页:作弊者拥有并完全控制的网页。

作弊者眼中的Web组成结构.png

假设目标网页 T 的总 PageRank 值为 y,则 y 由三部分组成:

  • 可达网页的贡献,设为 x;
  • Web 中所有网页平均分到的贡献:(1 – β)/n,这部分值很小,可以忽略。
  • 自有网页的贡献:设有 m 个自有网页,每个自有网页的 PageRank 值为 β y / m + ( 1 − β ) / n \beta y/m + (1-\beta)/n βy/m+(1β)/n

如果选择 β = 0.85,那么 1 / ( 1 − β 2 ) = 3.6 , β / ( 1 + β ) = 0.46 1 / (1-β^2) = 3.6, \beta/(1+\beta) = 0.46 1/(1β2)=3.6,β/(1+β)=0.46。也就是说,上述结构能够把可达网页的 PageRank 贡献放大到 3.6 倍,并且还可以获得自有网页数目和总网页数目比值(m/n)的 46%。

那么要如何针对这一种作弊行为呢?搜索引擎可以修改 PageRank 算法的定义来自动降低链接作弊网页的重要度。

【TrustRank】:如果一个网页的 PageRank 值远高于可信网页的值,则很可能这个网页被 Spam 了。

  • 设一个页面的 PageRank 值为 P,TrustRank(可信网页的 PageRank 值) 为 T,则定义网页的垃圾质量(Spam Mass)为:(P – T) / P。
  • Spam Mass 越大,说明此页面被 Spam 的可能性越大。那么我们就可以通过降低该网页的 PageRank 值来避免作弊行为。

PageRank 算法缺点

  • 主题漂移问题:PageRank 算法仅利用网络的链接结构,无法判断网页内容上的相似性;且算法根据向外链接平均分配权值使得主题不相关的网页获得与主题相关的网页同样的重视度,出现主题漂移。
  • 没有过滤广告链接和功能链接:例如常见的“分享到微博”,这些链接通常没有什么实际价值,前者链接到广告页面,后者常常链接到某个社交网站首页。
  • 对新网页不友好:一个新网页的入链相对较少,即便它的内容质量很高,但要成为一个高 PR 值的页面仍需要很长时间的推广。

其他:搜索引擎的发展趋势

社会化搜索

随着Facebook的流行,社交网络平台和应用占据了互联网的主流,社交网络平台强调用户之间的联系和交互,这对传统的搜索技术提出了新的挑战。

传统搜索技术强调搜索结果和用户需求的相关性,社会化搜索除了相关性外,还额外增加了一个维社交网络内其他用户发布的信息、点评或验证过的信息则更容易信赖,这是与用户度,即搜索结果的可信赖性。对某个搜索结果,传统的结果可能成千上万,但如果处于用户的心里密切相关的。社会化搜索为用户提供更准确、更值得信任的搜索结果。

实时搜索

随着微博的个人媒体平台兴起,对搜索引擎的实时性要求日益增高,我想这也是搜索时引擎未来的一个发展方向。

实时搜索最突出的特点是时效性强,越来越多的突发事件首次发布在微博上,实时搜索核心强调的就是“快”,用户发布的信息第一时间能被搜索引擎搜索到。

不过在国内,实时搜索由于各方面的原因无法普及使用,比如 Google 的实时搜索是被重置的,百度也没有明显的实时搜索入口。

多媒体搜索

目前搜索引擎的查询还是基于文字的,即使是图片和视频搜索也是基于文本方式。那么未来的多媒体搜索技术则会弥补查询这一缺失。多媒体形式除了文字,主要包括图片、音频、视频。

多媒体搜索比纯文本搜索要复杂许多,一般多媒体搜索包含 4 个主要步骤:多媒体特征提取、多媒体数据流分割、多媒体数据分类和多媒体数据搜索引擎。

思维导图

pagerank 思维导图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208838.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:39
下一篇 2026年3月19日 上午10:39


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号