pagerank算法学习

pagerank算法学习

1.背景介绍

​ Google出现之前的资源搜索都是资源集中式的大海捞针。google出现之后大家都用google进行资源搜索,而google的网页排序则是基于pagerank的得分值进行排序的,值高的就排在前面。

​ PageRank算法由Google创始人Larry Page在斯坦福读大学时提出,又称PR,佩奇排名。主要针对网页进行排名,计算网站的重要性,优化搜索引擎的搜索结果。PR值是表示其重要性的因子。

2.算法中心思想

​ 数量假设:在网页模型图中,一个网页接受到其他网页指向的入链(in-links)越多,说明该网页越重要。(即大家都愿意引用你的网页,类似论文的影响因子?)

image-20220729095016234

​ 质量假设:当一个质量高的网页指向(out-links)另一个网页,说明这个被指向的网页很重要。

image-20220729095058242

​ 入链出链的概念:类似于有向图弧的出度入度

image-20220729095517563

3.算法基础讲解

pagerank公式:

image-20220729095628812

​ PR值是需要循环迭代的,即pr值与i相关(最终PR值会趋近于某个值,此时稳定的PR值就是最终的结果),每个点的初始PR值为1/N,N代表图中顶点的个数。下面看下A顶点第一轮循环的PR值:

image-20220729100303320

最终计算结果: image-20220729101600455

另一种计算方法——使用转移概率矩阵/马尔科夫矩阵(列为出发点,行为到达点,值为到达概率,每列概率之和为1)(NxN)乘上PR值矩阵(Nx1)=> 新一轮迭代的PR值矩阵(仍为Nx1)image-20220729101751102

image-20220729102035160

image-20220729102128720

两种方法之间的联系:

image-20220729102725023

4.PageRank的Dead Ends问题

Dead Ends的概念:图中出度为0的顶点,即作为终点只被指向。(类似调用链里面的DB?只能被调用)

image-20220729103305327

Dead Ends的问题:会导致pagerank算法多次计算之后,PR值均变为0。

image-20220729103504169

Dead Ends的解决:通过修正转移概率矩阵:M => M+修正矩阵image-20220729103907052

具体计算过程:

image-20220729105759955

修正后的PR求值公式:

image-20220729110053669

5.PageRank的Spider Traps问题

Spider Traps的概念与问题:图中顶点只指向自身,不指向其他顶点。经过多次循环后,A的PR值会变为1,其他

image-20220729110340107

Spider Traps的解决:修正转移概率矩阵M(如下),β表示打开某网页后仍停留在此网页的概率,一般设置为0.8到0.9,(1-β)则表示访问其他网页的概率。——这个修正方法叫做teleport

image-20220729134510382

具体计算过程:

image-20220729134658845

image-20220729134724836

image-20220729134744419

6.PageRank最终修正公式及优缺点

image-20220729135351047

pagerank优点:

1.通过网页之间的链接图来决定网页重要性,不夹杂人为因素

2.离线计算PR值,而非查找的时候计算,提升了查询效率

image-20220729135834939

image-20220729140112685

pagerank缺点:

1.存在时间久的网站,PR值会越来越大,而新生成的网站,PR值增长缓慢。

2.查询结果会偏离搜索内容

3.通过设置僵尸网站/链接,可以人为的为目标网站刷PR值

image-20220729140500055

image-20220729140607602

image-20220729140812754

7.代码实现

通过networkx库去生成有向图,并绘制,并计算每个点的PR值。

https://networkx.org/documentation/stable/tutorial.html

posted @ 2023-12-15 18:32  故君子慎为善  阅读(240)  评论(0)    收藏  举报