小而美的民主算法:PageRank

​了解Google公司,多半都对“PageRank”算法有所耳闻。该算法是一种典型的“从群众中来,到群众中去”的民主算法。

1,PR的计算原理:网络世界由万万千千,千千万万的网页链接而成的,一个网页通过出链和入链链接着一个或多个网页。出链指的是网页中可以跳转出去的链接,入链指的是跳进网页的链接
在这里插入图片描述
从图中我们很容易看出,网页Page1的出链有4个,网页Page1的入链有2个。

用拓扑图来描述网页之间的关系,复杂交错的链接构建了一个庞大的互联系统,简称为“互联网”。
在这里插入图片描述
一个网页的影响力是所有入链集合的网页影响力加权之和,用公式可以表示为:
P R ( u ) = ∑ v → P u v P R ( v ) L ( v ) PR(u) = \sum_{v\rightarrow P_{u}}^{v}{\frac{PR(v)}{L(v)}} PR(u)=vPuvL(v)PR(v)

注释: L(v) 表示 Pv页面跳出链接的个数,页面跳出的概率就是网页输出自身影响里的权重。
在这里插入图片描述
根据PR公式,基于M和初始网页影响力W矩阵,可以计算出W1的个页面影响力:
在这里插入图片描述
在这里插入图片描述
同样在新的W1的基础上,我们可以迭代计算出W2,W3…, 不断的迭代计算使PageRank充满生命力。

但是并不是所有网页都有跳出链接,并不是所有页面都有跳入链接,这两种情况给简单的PageRank算法带来了两个问题:
一是等级泄漏:一个网页没有出链,就像黑洞吸收其他网页带来的影响力而不释放,造成互联网整理影响力的损失漏出。二是等级沉默:一个网页只有出链,没有入链,不不断的PR迭代后,导致页面的PR影响力为0。

为了在一定程度上解决这两个问题,PageRank引入了阻尼系数的概念,即来表示存在用户直接输入网页地址访问页面的情况即没有出链和入链的网页一样有被访问的概率。不过这个概率一般很小,阻尼系数的d一般等于0.15。

P R ( u ) = 1 − d N + d ∑ v → P u v P R ( v ) L ( v ) PR(u) =\frac{1-d}{N} +d \sum_{v\rightarrow P_{u}}^{v}{\frac{PR(v)}{L(v)}} PR(u)=N1d+dvPuvL(v)PR(v)

Page Rank的应用场景很广,存在网络关系的地方,都可以用Page Rank来描述事物之间的关系,继而更好的认识世界。

3,Python绘图表达PR:利用Py可以简单明了的绘制网页的网络关系同时通过节点的大小来呈现各网页的影响力。

在这里插入图片描述

import networkx as nx 
import matplotlib.pyplot as plt 
G=nx.DiGraph()PL ={'P1':['P2','P3','P4','P5'],      
'P2':['P1','P5'],'P3':['P3'], 'P4':['P1','P3','P5'],'P5':['P2','P3','P4']} 
#绘制带权边  
for k,v in PL.items():       
     for i in v:             
      G.add_edge(k, i, weight=0.2)  
pos=nx.spring_layout(G) 
#首先画出节点位置   
nx.draw_networkx_nodes(G,pos,node_size=800)  
nx.draw_networkx(G, pos=pos, 
nodelist=["P2", "P5"],  node_size=1800, 
node_color='#fad0c4', font_size=15, width=1)     
​plt.axis('off') plt.savefig("weighted_graph.png")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值