< 链接分析算法 - PageRank算法 >

< 链接分析算法 - PageRank算法 >

背景

  • Google 的两位创始人拉里佩奇&谢尔盖布林都是斯坦福大学的博士生,他们提出的 PageRank 算法受到了论文影响力因子的评价启发。当一篇论文被引用的次数越多,证明这篇论文的影响力越大。正是这个想法解决了当时网页检索质量不高的问题。

  • 核心思想是:
    • 如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是pagerank值会相对较高;

    • 如果一个pagerank值很高的网页链接到一个其他的网页,那么被链接到的网页的pagerank值会相应地因此而提高。

PageRank - 简化模型

  • 网页之间会形成一个网络,是我们的互联网,论文之间也存在着相互引用的关系,可以说我们所处的环境就是各种网络的集合。只要是有网络的地方,就存在出链和入链,就会有 PR 权重的计算,也就可以运用我们今天讲的 PageRank 算法。

  • PageRank计算:
    • \(PR(u) = Σ \frac{PR(v)}{L(v)}\),u为待评估页面,v为页面u的入链集合,PR(*)为页面影响力,L(*)为页面的出链数量(也就是跳转频率)。简单来说就是一个网页的影响力 = 所有入链集合页面的加权影响力之和,每个页面又把影响力平均分配给了出链页面。

    • 假设\(w\)为影响力,有\(N\)个页面,上式可以用Markov链的转移概率矩阵表示为\(w^{k}=L \cdot w^{k-1}\),\(L _ {N \cdot N}\)为转移矩阵(跳转频率)。初始化影响力\(w^{0}\),利用上式迭代直至收敛不再发生变化。

  • 算法证明:PageRank算法--从原理到实现

  • 实际面临问题:
    1. Rank Leak 等级泄露:如果一个网页只有入链没有出链,吸收其他网页影响力而不释放,收敛最后会导致其他网页PR值为0

    2. Rank Sink等级沉没:如果有一个网页只有出链没有入链,释放自己的影响力而不吸收,收敛最后会导致该网页PR值为0

PageRank - 随机浏览模型

  • 随机浏览模型假设场景是:用户并不是都按照跳转链接的方式来上网,还有一种可能是不论当前处于哪个页面,都有概率访问到其他任意的页面(比如说直接输入网址访问),相当于跳转链接而言随机概率较小。

  • PageRank计算:
    • \(PR(u)=\frac{1-d}{N} + d \cdot Σ \frac{PR(v)}{L(v)}\),damping factor阻尼因子\(d\)代表了用户按照跳转链接来上网的概率,通常定义值为0.85,\(N\)为网页总数。

    • 因为加入了阻尼因子的存在,一定程度上解决了等级泄露和等级沉没的问题,可以通过数学推导证明最终PageRank随机浏览模型是可以收敛的,每个网页可以得到一个稳定正常的PR值。

  • 其他方面:
    • PageRank时间复杂度为\(O(t(\varepsilon )n^{2})\),\(n\)是网络节点数,\(t(\varepsilon )\)是迭代次数,与收敛的阈值\(\varepsilon\)有关。对大型网络而言,迭代次数与边的关系是接近线性的\(logN\)。

    • PageRank主要缺点是
      • 对新网页不友好,旧页面等级会比新页面高,因为即使是非常好的新页面也不会有很多的外链。

      • 没有过滤广告链接和功能链接。这些链接通常没有什么实际价值,前者链接到广告页面,后者常常链接到某个社交网站首页。

      • 没有区分站内导航链接。很多网站的首页都有很多对站内其他页面的链接,称为站内导航链接。这些链接与不同网站之间的链接相比,肯定是后者更能体现PageRank值的传递关系。

    • PageRank主要挑战是来自海量的数据。

    • 后续多为HITS, TrustRank替代。

PageRank - 算法实现

  • 使用NetworkX实现计算网页的PR
import networkx as nx

# 创建有向图

G = nx.DiGraph()

# 有向图之间边的关系

edges = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "A"), ("B", "D"), ("C", "A"), ("D", "B"), ("D", "C")]

for edge in edges:

    G.add_edge(edge[0], edge[1])

pagerank_list = nx.pagerank(G, alpha=1)

print("pagerank 值是:", pagerank_list)
上一篇:人工智能教程 - 专业选修课程4.3.11 - 复杂结构数据挖掘 5.PageRank技术


下一篇:数据挖掘十大算法--PageRank