十大经典数据挖掘算法【PageRank篇】

时间:2024-03-22 20:26:58

PageRank可以较为直观的理解为是对网页重要性排序的一种算法。

 

Googel 能在全球互联网搜索引擎中处于较高地位,该算法功不可没。

 

导 读

 

早期的搜索引擎通过计算用户查询关键词与网页内容的相关程度来返回搜索结果,即键词匹配算法

 

但该种搜索引擎会极容易遭受Term Spam攻击,导致用户体验满意度大打折扣。

 

例如,在页面上添加一个像“电影”这样的术语,并做数千次,搜索引擎就会认为这是一个非常重要的电影页面。当用户搜索“电影”时,搜索引擎将首先列出该页面。

 

Web页面数量非常巨大,所以一个检索的结果条目数量也非常多,用户不可能从如此众多的结果中一一查找对自己有用的信息,所以,一个好的搜索引擎必须想办法将“质量”较高的页面排在前面。

 

在实际使用搜索引擎时,我们并不太关心页面返回的个数,而在乎前一两页是否能找到我们所需要的。

 

因此,对搜索结果按重要性合理的排序就成为搜索引擎的最大核心。

 

在上述背景下,谷歌的创始人提出了PageRank算法,该算法借鉴学术界论文重要性的评估方法:谁被引用的次数多,谁就越重要

 

 

PageRank算法的核心细想

 

1、数量指标,如果越多的网页指向A,即A的入链数量越多,则该网页越重要;

 

2、质量指标,如果指向A的网页质量越高,则A越重要,即权重因素不同。

 

PageRank将数量指标和质量指标有效结合,形成一个有效的评估值,该值越大,代表页面越重要即页面搜索结果返回时越靠前。

 

 

PageRank值的计算过程

 

假设有四个页面,抽象结构如下:

十大经典数据挖掘算法【PageRank篇】

  • 初始时每个页面的PR值为1/N,这里就是1/4。

 

  • 每个页面跳转到页面上每个被链页面的概率是相同的。例如A页面链向B、C、D,所以一个用户从A跳转到B、C、D的概率各为1/3。

 

  • 每个页面的PR值由所有指向它的页面的PR值共同确定。

 

(一)数学表达式计算:

 

计算网页B的PR值:

 

B的入链有A和D ,意味着A和D分别引用了B,并且A跳转到B的概率为1/3,D跳转到B的概率为1/2,因此:

 

PR(B) = PR(A) + PR(D) = 1/4 * 1/3 + 1/4 * 1/2= 5/24

 

同理,

 

PR(A) = PR(B) + PR(D) = 1/4*1/2 + 1/4*1/2 = 1/4

PR(C) = PR(A) + PR(B) = 1/4*1/3 + 1/4 *1/2 = 5/24

PR(D) = PR(A) + PR(C) = 1/4*1/3 + 1/4 = 1/3

 

所有网页PR值一直迭代计算,终止条件:

 

1) 每个网页的PR值前后误差小于自定义误差阈值;

 

2) 迭代次数超过了自定义的迭代次数阈值。

 

(二)矩阵计算:

 

构建4*4链接概率转移矩阵,其中i行j列的值表示从页面j跳转到页面i的概率,对照上图构建矩阵如下:

十大经典数据挖掘算法【PageRank篇】

按A-D顺序将页面PR值置成向量v:

十大经典数据挖掘算法【PageRank篇】

矩阵M第一行分别是A、B、C和D转移到页面A的概率,而v的第一列分别是A、B、C和D当前的PR值,因此用M的第一行乘以v的第一列,所得结果就是页面A最新PR值的合理估计。

 

同理,Mv的结果就分别代表A、B、C、D新PR值:

十大经典数据挖掘算法【PageRank篇】

然后用M再乘以这个新的PR向量,又会产生一个更新的PR向量。

 

迭代这个过程,可以证明v最终会收敛,即v约等于Mv,此时计算停止。

 

最终的v就是各个页面的PageRank值。

 

例如上面的向量经过几步迭代后,大约收敛在(1/4, 1/4, 1/5, 1/4),这就是A、B、C、D最后的PageRank。

 

 

终止点问题和陷阱问题

 

上面的计算的是强连通图,然而现实中并不总会有如此理想的图,事实上会出现各种问题,帮助我们强化算法。

 

终止点问题:某些网页不指向任何网页。

 

陷阱问题:是指有些网页不存在指向其他网页的链接,但存在指向自己的链接。

 

导致怎样的后果呢?

 

若按照上面公式迭代计算下去,导致前面累计得到的转移概率被清零,最终得到的概率分布向量所有元素几乎都为0。

 

如何解决上述问题呢?

 

加入阻尼系数α:假设跳转到当前页面(包括当前页面上的链接)的概率为α,那么跳转到其他页面概率为(1−α)。通常 α 取值为0.85

 

则最终的数学表达式计算公式和矩阵计算公式分别为: 

十大经典数据挖掘算法【PageRank篇】

其中,p1,p2,...,pN是被研究的页面,M(pi)是pi链入页面的数量,L(pj)是pi链出页面的数量,N是网页总数。

十大经典数据挖掘算法【PageRank篇】

其中:e是网页数目的倒数。

 

 

其他领域的应用

 

互联网中存在数以亿计的网页,哪些网页比较重要、值得投放医疗广告呢?

 

学术论文在引用和被引用的过程中实现了知识的传递,那么哪些论文是学科发展的关键节点呢?

 

一个由人构成的社会网络中,哪些是“大人物”呢?

 

在之前的文章中,我们公司也采用该算法对疫情进行了分析

 

详见 https://mp.weixin.qq.com/s/DBdy8l9dFp34BxtXaETpww

 

文章参考:

 

https://www.jianshu.com/p/f6d66ab97332

https://www.jianshu.com/p/7485cac02e95

https://www.sohu.com/a/206416048_236505

https://zhuanlan.zhihu.com/p/95050418

Chapter5 LinkAnalysis

 - 完 -

想了解更多关于人工智能的资讯

欢迎关注普适极客

 

十大经典数据挖掘算法【PageRank篇】