PageRank算法

在搜索引擎的发展史上,一开始组织网页的方式是网页索引(人工编辑),Yahoo,DMOZ就是使用的这种方式,但随着网页数量越来越多,这种方式耗时耗力,难以为继。第二种方式就是网页搜索,但缺陷在于,网络是巨大的,充满了不可信,过时和随机的东西。

网页搜索中的两种挑战:

1.网络中存在多个来源的数据,该相信谁?
方法:可信的页面彼此相互引用和链接
2.查询“数据”的最佳回答是什么?
方法:实际关于“数据”的页面往往指向许多数据

所有网页的重要性都不是平等的,我们可以通过链接结构对页面做排序。通过PageRank计算图中节点的重要性。

PageRank的核心思想就是链接投票,页面拥有的链接越多越重要。但不是所有的入链都同等权重,来自重要的链接占更大权重所以这是一个递推问题。

简单递推公式:

1.所有链接的投票权重与其源页面的重要形成比例
2.若页面j的重要性为rj,拥有n个出链,则每个出链用友的投票权重为rj/n
3.页面j自身的重要性为其入链重要性之和

PageRank算法_第1张图片

流模型

来自重要页面的投票权重较大
被其他页面指向的页面是重要的

PageRank算法_第2张图片

为了解决流等式,我们可以使用高斯消元法

但是高斯消去法只适合小规模的例子,我们需要更好的方法来对应大规模的web图,即矩阵等式

矩阵等式

PageRank算法_第3张图片

PageRank算法_第4张图片

可以看到,使用power iteration方法,按照图上等式不断迭代求解r(t+1),直到前后迭代值相差很小

三点问题

PageRank的求解公式有三个问题:
1.是否是收敛的?
2.是否收敛到期望的值?
3.是否是可解释的?

关于这个的证明,可以看这篇博文
https://www.cnblogs.com/rubinorth/p/5799848.html,我在这里就不再赘述

两个链接问题

1.有一些网页是死链接,即没有出链

解决方法:设定其对所有的网页(包括它自己)都有出链

2.爬虫陷阱:一些网站会动态生成页面内容,这样就会出现无限多的网页。比如,网站有一个在线日历功能,提供了可以访问下个月和下一年的链接,那么下个月的页面中同样会包含访问再下个月的链接,这样页面就会无止境地链接下去,这种情况被称为爬虫陷阱。互联网中一个网页只有对自己的出链,或者几个网页的出链形成一个循环圈。那么在不断地迭代过程中,这一个或几个网页的PR值将只增不减。爬虫陷阱实际上不是一个问题,只是如果陷入陷阱,得到的PageRank并不是我们想要的

解决方法:设定有一个确定的概率会输入网址直接跳转到一个随机的网页,并且跳转到每个网页的概率是一样的

最终完整算法:

PageRank算法_第5张图片

PageRank算法_第6张图片

水平有限,如有错误,希望指出

你可能感兴趣的:(机器学习,课程复习,机器学习之路)