©PaperWeekly 原创 · 作者|贲忠奇
单位|混沌大学推荐算法工程师
研究方向|推荐算法、反作弊
PageRank 是一种利用网页之间的连接数量和质量来计算网页重要性的技术。PageRank 算法基础上衍生出来很多重要的链接分析算法,TextRank 是其重要的衍生之一,在 nlp 领域用于文章摘要和关键词提取。
PageRank 也可以用于反作弊,网页的连接数量和质量可以类比成某个黑产团伙中的成员之间的连接数量和连接的质量,可以用于黑产成员重要性分析。
背景
最早的搜索引擎采用的是分类目录方法,即通过人工编辑审核进行网页分类并整理出高质量的网站,并按照人工编辑认为的重要程度去排序。由于早期的网页比较少,那时 Yahoo 和国内的 hao123 就是使用这种方法,在那一历史时期是可以行的。后来网页越来越多,人工分类已经不可能了。
搜索引擎采用文本检索的方式,即计算用户查询关键词与网页内容的相关程度来返回搜索结果,被搜索词语在网页中的出现次数来决定排序——出现次数越多的网页排在越前面。但是总有一些垃圾网站,来回地倒腾某些关键词使自己的搜索排名靠前,使得李鬼取代李逵,显然这种方式是不合理的。
1996 年初,谷歌公司的创始人, 当时还是美国斯坦福大学(Stanford University)研究生的佩奇(Larry Page)和布林(Sergey Brin)开始了对网页排序存在的问题进行研究。
PageRank 于 1997 年用于构建早期的搜索系统原型时提出的链接分析算法,用来衡量一个网站的好坏,使得更加重要或者等级越高的网站排名更加靠前,提升搜索结果的相关性和质量。 PageRank 的得分简称 PR 值,Google 把 PR 值分为 0 到 10 级,10 级为满分,PR 值越高说明网站越重要。
算法介绍
在 PageRank 提出之前,已经有研究者利用网页的入链数来表示网页的重要程度。PageRank 除了考虑入链的数量还考虑网页的质量,两者结合起来表示网页的重要性。PageRank 有两个基本假设:
数量假设:如果一个页面收到其他网页指向它的入链数越多,说明这个页面越重要。
质量假设:指向一个页面的入链质量不同,质量高的页面通过链接向其他页面传递更多的权重。
PageRank 计算公式如下:
: 网页
的 PageRank 值;
表示网页
链入合集中的某个网页;
: 网页
链入的集合;
: 表示链入网页
的 PageRank 值;
:表示网页
链出的数量。
计算过程主要分为以下两个阶段:
初始阶段:网页通过链接关系构建起 Web 图,每个链接的页面具有相同的 PageRank 值。可以将网页的 PageRank 值都初始化为 1/N,N 是网页的数量,认为每个网页的权重一样,刚开始都是可以随机访问到的。
更新 PageRank 得分:在一轮更新页面 PageRank 得分的计算中,每个页面将其当前的 PageRank 值平均分配到本页面包含的出链上,这样每个链接即获得了相应的权值;而每个页面将所有指向本页面的入链所传入的权值求和,即可得到新的 PageRank 得分。当每个页面都获得了更新后的 PageRank 值,就完成了一轮 PageRank 计算。
具体实例
如果只是上面的介绍,虽然写的很明白,但是对于初学者来说还是理解很费劲的,至少我第一次看到这些概念其实还是不太懂。所以打算举个例子,通过例子来形象的说明一下这个问题。将 网页 作如下抽象:
将每个网页抽象成一个节点
如果一个页面 A 有链接直接链向 B,则存在一条有向边从 A 到 B
因此,整个 Web 被抽象为一张有向图。
▲ 网页抽象图
3.1 PageRank初始化
PageRank 值简称 PR 值,意义是一个网页被访问的概率,初始时用户访问每个页面的概率均等,假设一共有 N 个网页,每个网页的初始 PR 值 = 1 / N。
继续沿用先前的图,初始 PR 值向量
3.2 PageRank计算
在计算之前,我们来讲一下邻接矩阵和概率转移矩阵。
上面左图是邻接矩阵,以列为源,行为目标节点,那么从 A 到 B,C,D 都能连通,那么矩阵对应的位置都为1,即 [0,1,1,1]。因为是有向图,所以 B 不能到 A,B 可以到 C、D,因此第二列是 [0 0 1 1],以此类推构建邻接矩阵。
那么 A 节点有多大的概率跳到 B 节点呢?因为 A 节点有三个出度,所以分给 B,C,D 各三分之一。B 节点有两个出度,给 C、D 各二分之一,以此类推构建概率转移矩阵,如上面右图。
概率转移矩阵*初始 PR 值向量得到迭代一次后的 PR 值。通过构造概率转移矩阵,能把出度的值分出来;矩阵的乘法正好满足了把出度上面的值给了入度节点的,并且求了加和,满足了 PageRank 的数量和质量需求。
以此类推,PR 值向量,不断左乘概率转移矩阵 M,更新 PR 值,直到 P 收敛,即 。
3.3 终止点问题
上面网络结构图是一个马尔科夫过程的实例,要满足收敛性,需要具备一个条件:
图是强连通的,即从任意网页可以到达其他任意网页。
实际中互联网上网页可能不满足强连通性,有的网页不指向任何网页。如果按照上面矩阵相乘的计算,会导致前面累计的转移概率被清零,这样下去,最终的得到的概率分布向量所有元素几乎都为 0。假设我们把上面图中 C 到 D 的链接改成 D 到 C,C 变成了一个终止点,得到下面这个图:
▲ C终止点
概率转移矩阵变成了
由于第三列全部为 0,这样在每次矩阵相乘的过程,这个分量都是 0,会被转移到所有节点,最终 PR 值向量的值都为 [0,0,0,0]。
3.4 陷阱问题
另外一个问题就是陷阱问题,即有些网页不存在指向其他网页的链接,但存在指向自己的链接。比如下面这个图:
▲ 自指性不指向其他
当从其他网页链接到 C 网页后,就像跳进了陷阱,陷入了漩涡,再也不能从 C 中出来,将最终导致概率分布值全部转移到 C 上来,这使得其他网页的概率分布值为 0,结果变为 [0,0,1,0],从而整个网页排名就失去了意义。如果按照上面图对应的转移矩阵为:
3.5 改进的PageRank公式
一个上网者,随机浏览页面有两个选择:
从当前页面跳转
在浏览器中直接输入新地址
上网者通过点击链接开启新页面的概率为 d(d 也称阻尼系数,通常取 0.85)。此时,我们的 PageRank 模型变为:在每一个页面,用户都有 d 的概率通过点击链接进入下一个页面;此外,还有 1-d 的概率随机跳转,此时跳转到其他页面的概率为 1/M(M 表示网页的总结点)。改进后的 PageRank 公式为:
:网页
的 PageRank 值;
表示 网页
链入合集中的某个网页;