我眼中的PageRank算法详解
随着互联网的发展,网络上已有的网页数量庞大,并且每天都会有很多网页发布,如何权衡这些重要度的排名是一个很重要的问题。我们今天就来了解一下PageRank算法。
首先我们要来了解一下图的概念,请看图1。

图1中,A/B/C/D成为节点,e1/e2/e3/e4/e5成为边。指向某个节点的边成为该节点的入度,从该节点指出的边成为该节点的出度。比如对接点B来说,e1是唯一指向B的边,我们可计算出B节点的入度为1;e3是B节点唯一指向其它节点的边,我们可以算出B节点的出度为1。对于网络上的网页之间的关系也可以用上述模型来模仿。对某一个特定网页来说,网络上存在很多网页指向它,并且这个网页内也包含很多指向其它网页的超链接。比如:有很多网页指向百度搜索、百度百科,百度页面内有指向其它网页的超链接。
我们可以用图1中的A/B/C/D表示四个网页,网页与网页之间的边我们成为链接。比如对网页D来说,网络上有一个网页(B)指向它,它包含两个超链接(e4、e5),一个链向网页A,一个链向网页C。在计算机中,图结构可以用二维矩阵来表示:如果网页A到网页B有一条边(连接),那么矩阵中第A行第B列的元素不为0(可以表示为w,w表示权重,但本文都表示为1)。那么,图1所对应的二维矩阵可以表示为图2的形式。

我们采用行存储,例如:A到B有一条边,在矩阵中可表示为第A行第B列的元素为1。
那么,我们现在来考虑一下:什么样的网页重要?可以想象,某种程度上,1)网页入度越多,其重要度越高;2)高质量的网页指向的网页也是高质量的。PageRank就是基于这两点来进行计算的,其数学表达形式如式1所示。
式1
假设每个页面的初始重要度都为1,包含的超链接数为N,那么它向每个页面传递的重要度为1/N。按照这个思想构造超链接矩阵H,如式2所示。
式2
由于初始重要度都为1,所以初始向量如式3所示。

通过式1,其计算过程可表示为
,直到
.
在面对实际网络时,有三个问题需要考虑:1,I是否会收敛?2,I的收敛是否与初始值无关?3,满足前两条的情况下得到的数据是否可以作为重要度的排名?现在按照H计算,对这三个问题的回答都是No。需要进行随机调整(Stochasticity Adjustment)保证必须收敛,再进行素矩阵调整(Primitivity Adjustment)保证收敛的元素都为正,即:重要度都是大于0的。
我眼中的PageRank算法详解的更多相关文章
- BM算法 Boyer-Moore高质量实现代码详解与算法详解
Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...
- kmp算法详解
转自:http://blog.csdn.net/ddupd/article/details/19899263 KMP算法详解 KMP算法简介: KMP算法是一种高效的字符串匹配算法,关于字符串匹配最简 ...
- 机器学习经典算法详解及Python实现--基于SMO的SVM分类器
原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector ...
- [转] KMP算法详解
转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段. 我们这里说的K ...
- 【转】AC算法详解
原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...
- KMP算法详解(转自中学生OI写的。。ORZ!)
KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段. 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法.KMP算法是拿来处理字符串匹配的.换句 ...
- EM算法详解
EM算法详解 1 极大似然估计 假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成 ...
- Tarjan算法详解
Tarjan算法详解 今天偶然发现了这个算法,看了好久,终于明白了一些表层的知识....在这里和大家分享一下... Tarjan算法是一个求解极大强联通子图的算法,相信这些东西大家都在网络上百度过了, ...
- 安全体系(二)——RSA算法详解
本文主要讲述RSA算法使用的基本数学知识.秘钥的计算过程以及加密和解密的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 1.概述 ...
随机推荐
- 【二分】Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market
傻逼二分 #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; ll ...
- Activit(活动)实践--知晓当前活动
实际上,我们可能用的不是自己写的项目,而是从别人那里接手过来的代码,因为你刚进公司就有一个新项目开始的概率十分低.阅读别人代码时会有一个很头疼的问题,就是当你需要在某个界面上修改一些非常简单的东西时, ...
- WPF中的动画——(五)关键帧动画
与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值. 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个 ...
- JavaScript入门详解
开始开发工作. 一.Alert Confirm Prompt <html> <head> <script type="text/javascript" ...
- mormot日志
mormot日志 usesSynLog; if log = nil then // 日志 begin log := TSynLog.Add; log.Family.DestinationPath := ...
- iOS- dispatch_semaphore和NSOperationQueue并发
并发:同一个时间内运行多个任务.又叫共行性,是指处理多个同时性活动的能力. 并行:是指两个并发的任务同时发生. 并发不一定并行,并发不一定要同时发生. 举个例子: 有两个快递分别要送到目的地,有以下两 ...
- GitHub 上100个最受欢迎的Java基础类库
作为一名整天与既成熟且不断发展的Java语言打交道的开发者,面对的困境之一就是在我们编写代码的时候,是使用一些人人谈论的人们新技术呢,还是坚持使用一些虽旧但成熟的类库? 由于Java应用中大部分是商业 ...
- activiti源码笔记对标的博客
http://blog.csdn.net/bluejoe2000/article/category/2812511/2 白乔专栏 http://blog.csdn.net/bluejoe2000/ar ...
- Android内存优化4 了解java GC 垃圾回收机制2 GC执行finalize的过程
1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...
- Boost::Lexical_cast 的使用
.C++代码 #include <boost/lexical_cast.hpp> #include <iostream> int main() { using boost::l ...