主要内容

使用PageRank算法排名网站

此示例显示如何使用PageRank算法对网站的集合进行排名。虽然PageRank算法最初被设计为排序搜索引擎结果,但它也可以更广泛地应用于许多不同类型的图表中的节点。PageRank评分基于如何连接到其他节点,给出了每个图节点的相对重要性。

从理论上讲,PageRank值是限制概率,每个网站上有人随意点击链接将在任何特定网页到达。因此,与高分页面高度连接并在网络中发现的,它更可能随机Web浏览者访问该网页。

算法描述

在PageRank算法的每个步骤中,每个页的分数是根据更新,

r =(1-p)/ n + p *(a'*(r./d)+ s / n);

  • R.是的PageRank分数的向量。

  • P.是一个标量阻尼因子(通常为0.85),其的概率是在当前页上的链接,而不是继续另一随机页面上,在随机冲浪者点击。

  • 一种'是图的邻接矩阵的转置。

  • D.是包含出度图表中的每个节点的向量。D.被设定为1对于没有输出边沿节点。

  • N是图中的标量数的节点。

  • S.PageRank分数的标量和没有链接的页面。

换句话说,每个页面的等级主要基于链接到它的页面的级别。期限A'*(R./D)从图表中的每个节点中选择链接的源节点的分数,并且分数由这些源节点的出站链接总数归一化。这确保了PageRank分数的总和始终是1。例如,如果节点2链接到节点1,3和4,则它会传输1/3其PageRank的算法的每一次迭代过程中得分给每个那些节点。

创建一个图表,说明每个节点如何将其PageRank分数赋予图表中的其他节点。

S = {'一种''一种''一种''B''B''C''D''D''D'};t = {'B''C''D''D''一种''B''C''一种''B'};g = digraph(s,t);标签= {'A / 3''A / 3''A / 3''B / 2''B / 2''C''d / 3''d / 3''d / 3'};P =情节(G,'布局''分层''Edgelabel',标签);突出显示(p,[1 1 1],[2 3 4],'EdgeColor''G')突出显示(p,[2 2],[1 4],'EdgeColor''r')亮点(P,3,2,'EdgeColor''M') 标题('PageRank分数在节点之间传输'

图包含轴。带有标题PageRank在节点之间传输的轴包含Type Graphplot的对象。

居民功能包含了计算的PageRank分数的选项。

PageRank有6个节点

创建并绘制包含代表虚拟网站六个节点有向图。

S = [1 1 2 2 3 3 3 4 5];T = [2 5 3 4 4 5 6 1 1];名称= {'http://www.example.com/alpha''http://www.example.com/beta'......'http://www.example.com/gamma''http://www.example.com/delta'......'http://www.example.com/epsilon''http://www.example.com/zeta'};G =有向图(S,T,[],名称)
G =有向图具有属性:边缘:[9X1表]节点:[6X1表]
绘图(g,'布局''分层'......'nodelabel',{'α'“测试版”“伽马”'三角洲'“小量”'Zeta'})

图包含轴。轴包含Type Graphplot的对象。

计算PageRank的核心地位分数这个图。使用的后续概率(或称为阻尼因子)0.85

Pr = Centrality(G,'网页排名''FollowProbability'0.85)
Pr =6×10.3210 0.1706 0.1066 0.1368 0.2008 0.0643

查看PageRank的分数和每一页程度的信息。

G.Nodes.PageRank = PR;G.Nodes.InDegree =入度(G);G.Nodes.OutDegree =出度(G);G.Nodes.
ans =.6×4表姓名pagerank indegree oderegree ______________________________ _______________________ {'//www.example.com/alpha'} 0.32098 2 2 {'http://www.example.com/beta'} 0.17057 1 2 {'http://www.example.com/gamma'} 0.10657 1 3 {'http://www.example.com/delta'} 0.13678 2 1 {'http://www.example.com/epsilon'} 0.20078 2 1 {'http://www.example.com/zeta'} 0.06432 1 0

结果表明它不仅仅是数字确定得分的页面链接,还有质量。这α伽玛网站都有的4总额度,但α链接到两个埃斯利昂bet,这也是高度排名的。伽玛只能通过一个页面链接,bet,这是在列表的中间。因此,α在得分高于伽玛通过算法。

在mathworks.com网站的PageRank的

加载数据mathworks100.mat并查看邻接矩阵,一种。使用自动页面履带在2015年产生该数据。该网页爬虫开始在//www.tatmou.com.直到邻接矩阵包含在100个独特的网页连接信息,随后联系到随后的网页。

加载mathworks100.mat间谍(A)

图包含轴。轴包含类型线的对象。

使用稀疏邻接矩阵创建定向图形,一种,使用包含的URL作为节点名称。

G =有向图(A,U)
g =带有属性的数字:边缘:[632x1表]节点:[100x1表]

使用力布局绘制图形。

绘图(g,'nodelabel',{},'nodecolor',[0.93 0.78 0],'布局''力量');标题(“网站链接到//www.tatmou.com”

图包含轴。具有链接到//www.tatmou.com的标题网站的轴包含Type Graphplot的对象。

计算PageRank的分数图,G使用200次迭代和阻尼因子0.85。分数和等级信息添加到图的节点表中。

Pr = Centrality(G,'网页排名''MaxIterations',200,'FollowProbability',0.85);G.Nodes.PageRank = PR;G.Nodes.InDegree =入度(G);G.Nodes.OutDegree =出度(G);

查看最高25个结果分数。

G.Nodes(1:25,:)
ans =.25×4表名称的PageRank入度出度______________________________________________________________________________ ________ ________ { '//www.tatmou.com'} 0.044342 20 14 { '//www.tatmou.com/ch'} 0.043085 20 14 {'HTTPS://cn.mathworks。COM”} 0.043085 20 14 { '//www.tatmou.com/jp'} 0.043085 20 14 { '//www.tatmou.com/kr'} 0.043085 20 14 { '//www.tatmou.com/uk'} 0.043085 20 14 { '//www.tatmou.com/au'} 0.043085 20 14 { '//www.tatmou.com/de'} 0.043085 20 14 { '//www.tatmou.com/es'} 0.04308520 14 { '//www.tatmou.com/fr'} 0.043085 20 14 { '//www.tatmou.com/in'} 0.043085 20 14 { '//www.tatmou.com/it'} 0.043085 20 14{ '//www.tatmou.com/nl'} 0.043085 20 14 { '//www.tatmou.com/se'} 0.043085 20 14 {'//www.tatmou.com/index.html%3Fnocookie%3Dtrue”} 0.0015 0 1 { '//www.tatmou.com/company/aboutus/policies_statements/patents.html'} 0.007714 6 6⋮

提取并绘制包含其分数大于所有节点子图0.005。根据其PageRank分数彩色图形节点。

h =子图(g,find(g.nodes.pagerank> 0005));情节(h,'nodelabel',{},'NodeCData',H.Nodes.PageRank,'布局''力量');标题(“网站链接到//www.tatmou.com”)彩色栏

图包含轴。具有链接到//www.tatmou.com的标题网站的轴包含Type Graphplot的对象。

顶级网站的PageRank分数都非常相似,使得随机网络冲浪者大约有4.5%的机会降落在每页上。这一小组高度连接的页面在图中形成了一个集团。连接到这个中央集团是几个较小的派系,它们在自己之间高度相连。

参考

致莫尔,C.Matlab的实验第7章:谷歌PageRank。Mathworks,Inc。,2011年。

也可以看看

||