PageRank算法

PageRank算法通过模拟用户在网络中的随机跳转行为评估网页重要性。早期搜索引擎仅基于词频排序,容易被操纵。PageRank引入转移矩阵,考虑链接权重,解决了这一问题。然而,Web结构中的环形结构和爬虫陷阱会影响收敛。为了解决这些问题,引入了随机跳转机制,使得算法在遇到无出链或循环结构时仍能收敛。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前几个人为了应付生产实习验收,做了个渣渣搜索引擎,现在发现,那简直渣死了。稍微看了下《Mining of Massive Datasets》关于PageRank的描述,稍微整理一下(本文中所有图都出自该书)。

1. 早期搜索引擎

通过倒排索引的方法得到页面所含的词项(term),也就是一个词在哪些网页中出现,以及所在位置。当有查询时,根据查询的词在页面中出现的位置以及次数给出一个结果的排序。
这种算法在现在看来是十分荒唐的,因为我如果想要提高我的blog的排名,我完全可以在页面上写满“喵呜”,然后通过各种各样的方式(例如颜色和背景色一样)把这些垃圾文字隐藏起来。这样当有人搜索“喵”或者“喵呜”的话,我的blog排名就会非常靠前,但是,我的blog跟猫并没有半毛钱关系。
所以,谷歌做了两点改进:

  1. 使用PageRank算法来模拟用户的行为,也就是模拟用户在网上任意跳转,而被访问次数越多过的网站越重要
  2. 在判断网页内容的时候也需要考虑向该网页链接的页面的内容。

但是我们并不能通过一个页面的入链数来估计一个网页的重要性,如果做的话我们可以制造成百上千个垃圾页面都链到同一个网页,那么这个网页的入链数很高,但是很多垃圾网页都能链到的页面显然不是什么重要的页面。而且,链接在某知名网站出现和不知名的垃圾网站或广告网站里出现的概念是不一样的。

2. PageRank定义

PageRank可以想象是给网页的一个打分,分数越高表示网页的重要性越大。
首先,可以将Web上的所有网页当成节点,而链接关系可以当成是边,如果A页面中有指向B页面的链接,那么意味着节点A到节点B有一条边,指向B节点,那么这样可以把整个Web想象成一个巨大的有向图。如果一个虚拟用户在节点A,而A的出度为 Na ,那么下一步虚拟用户在A的任意一个出度节点的概率都是 1Na ,因此可以计算出转移矩阵 M 其中如果 j 的出度为 k ,则对于每一个其指向的节点 i Mij=1k ,否则 Mij=0

举个例子:

这里写图片描述

这里有4个页面A、B、C、D,链接的关系有:A链向B、C、D;B链向A、D;C链向A;D链向B、C。因此,转移矩阵 M 就应该为:

M=01313131200121000012120

其中D点有2个出链分别是B、C,因此, M24=M34=12 ,而 M14=M44=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值