PageRank原理

从许多优质的网页链接过来的网页,必定还是优质网页

 


写道
关于PageRank

PageRank,有效地利用了 Web 所拥有的庞大链接构造的特性。 从网页A导向网页B的链接被看作是对页面A对页面B的支持投票,Google根据这个投票数来判断页面的重要性。可是 Google 不单单只看投票数(即链接数),对投票的页面也进行分析。「重要性」高的页面所投的票的评价会更高,因为接受这个投票页面会被理解为「重要的物品」。
根据这样的分析,得到了高评价的重要页面会被给予较高的 Page Rank(网页等级),在检索结果内的名次也会提高。PageRank 是 Google 中表示网页重要性的综合性指标,而且不会受到各种检索(引擎)的影响。倒不如说,PageRank 就是基于对"使用复杂的算法而得到的链接构造"的分析,从而得出的各网页本身的特性。
当然,重要性高的页面如果和检索词句没有关联同样也没有任何意义。为此 Google 使用了精练后的文本匹配技术,使得能够检索出重要而且正确的页面。
 

 

将某个页面的 PageRank 除以存在于这个页面的正向链接,由此得到的值分别和正向链接所指向的页面的 PageRank 相加,即得到了被链接的页面的 PageRank。 

 

 

影响pagerank的三个因素:

  • 反向链接数
  • 反向链接的页面的pagerank
  • 反向链接的页面中的正向链接数

 

### PageRank算法的工作原理 #### 定义与背景 PageRank算法旨在通过分析网页之间的链接结构来评估网页的重要性。该方法基于这样的假设:一个网页的价值不仅取决于指向它的链接数量,还受到这些链接源的质量影响[^3]。 #### 数学基础 此算法利用了一阶马尔可夫链的概念,在有向图中模拟了一个随机游走过程。具体来说,当遍历网络中的节点时,访问频率最终将达到一种稳定的分布状态——这便是各节点对应的PageRank值所反映的情况[^2]。 #### 计算方式 对于任一特定页面 \( P \),其PageRank得分由所有指向它(入边)的其他页面贡献而来,并且这种关系具有递归性质: \[ PR(P)= (1-d)+d\left(\frac{PR(T_1)}{C(T_1)}+\ldots+\frac{PR(T_n)}{C(T_n)}\right)\] 其中, - \( d \) 表示阻尼系数,默认取值约为0.85; - \( T_i \) 代表任意一个直接连接至目标页面\( P \) 的上游页面; - \( C(T_i) \) 则指代从\( T_i \) 发出的所有外链总数; 值得注意的是,在原始实现里,每个页面初始都被赋予一个小于1但大于零的基础权重作为起始条件[(1-d)],而非平均分配剩余部分((1-d)/N)[^4]。 #### 迭代求解 为了获得精确的结果,通常采用迭代法逐步逼近真实的PageRank分数直到变化幅度小于预设阈值为止。这意味着即使给予每页不同的初值,只要持续更新计算,最后仍能达成一致性的收敛结果[^4]。 ```python import numpy as np def pagerank(M, num_iterations=100, d=0.85): N = M.shape[1] v = np.random.rand(N, 1) v /= np.linalg.norm(v, 1) iteration = 0 while True: prev_v = v.copy() v = d * M.dot(v) + (1 - d) / float(N) if np.allclose(v, prev_v, atol=1e-6): break iteration += 1 return v.flatten(), iteration # 构建邻接矩阵M表示Web图形 M = np.array([[0, 0, 1], [1/2., 0, 0], [1/2., 1, 0]]) pr_scores, iters = pagerank(M) print(f'PageRank scores after {iters} iterations:\n', pr_scores) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值