pagerank算法实现好友推荐(算法原理)

author author     2023-04-15     771

关键词:

参考技术A

对于社交系统与电商网站,推荐系统占有很重要的位置,当数据量越来越大的时候,用户无法确定该选择什么商品,因此在电商系统中需要按照兴趣或者相似度给用户推荐相应的商品。相应的,在一个大型社交网络平台中,对于一些用户,我们希望推荐一些知名度较高,活跃度较高或者感兴趣的用户,比如一些明星,歌手,演员等等。在社交网络中,PageRank算法有着广泛的应用,因此,本篇文章主要介绍其原理。

对于大部分社交系统来说,如果只是简单的获取好友的信息远远不够,我们可以通过获取好友的好友的信息来扩展用户的朋友圈,使得信息量更加丰富,本项目中使用PageRank算法来完成二级邻居,然后按照Rank排序,选择Top5用户实现用户的好友的好友的推荐。

PageRank算法由Google的创始人拉里·佩奇和谢尔·布林于1998年发明.这项技术设计之初是为了体现网页的相关性和重要性,在搜索引擎优化操作中经常被用来评估网页优化的成效因素之一.

从技术上看,搜索引擎需要解决以下三个问题:

本质就是一个爬虫问题,通过爬虫获取整个互联网的数据

关键在于快速找到.

它的实现方式有: 倒排索引,签名文件,后缀树等。我们最熟悉的是 倒排索引 。(并不熟悉,以后有机会再看)

排序是Google的搜索引擎能够兴起的一个决定性因素。

对网页排序有很多种方式,我们来看三种:

就是原封不懂地把索引到的链接直接返回给用户,缺点就不说了,想找自己感兴趣的内容估计要费不少功夫。

这种方式是一种只从关键词出现的次数和位置进行排序的方法。该方法以一个关键词与网页的相关度大小作为排序标准,而关键词在网页的相关度大小作为排序标准,而关键词在网页中的相关度则由它在网页中出现的频次和位置两方面加权计算得出。

缺点也很明显,容易出现刷分的情况,整篇文章中大量地刷关键词就能提高排名。

真正找到计算网页自身质量的完美的数学模型是Google的创始人拉里佩奇和谢尔盖布林。 下一节讲一下原理。

我们模拟一个悠闲的上网者,上网者首先随机选择一个网页打开,然后在这个网页上呆了几分钟后,跳转到该网页所指向的链接,这样无所事事、漫无目的地在网页上跳来跳去,PageRank就是估计这个悠闲的上网者分布在各个网页上的概率,这个概率就代表这个网页的重要性.

PageRank主要基于两个重要的假设:

如果一篇文章被越来越多的人引用,那么这篇文章可能就是一篇经典之作,如果这篇文章引用了其他的论文,那么一定程度上这篇被引用的文章也是一篇很好的文章。应用到社交网络中,如果一个好友被更多的人关注,那么说明该好友有很高的知名度和活跃度,那么,我们可以将该好友推荐给用户。

基于这两个假设,我们可以总结出PageRank算法的核心:

如下图,可以更好的表达PageRank算法的思想:

由上图可知,每个页面将自己的一部分rank传递给某个页面,我们可以通过计算传递给某个页面的所有rank值的和来计算出它的rank值,当然,不可能是通过一次计算完成,我们刚开始可以给每个页面赋予一个初始rank值,比如 1/N(N为页面总数) ,通过迭代计算得到该页面的rank值。

迭代计算停止的条件为:

使用有向图表示:

这个例子中只有四个网页,如果当前在A网页,那么悠闲的上网者将会各以1/3的概率跳转到B、C、D,这里的3表示A有3条出链,如果一个网页有k条出链,那么跳转任意一个出链上的概率是1/k,同理D到B、C的概率各为1/2,而B到C的概率为0。

我们在做计算的时候会将该图表示成一个二维的矩阵,我们做一个转换,就会变成下图的矩阵形式。 M(i,j) 表示j节点指向i节点的概率 ,一般来说每列和为1。

生成的 转移矩阵 非常简单, 矩阵的每一列代表该顶点所代表的页面除以对应页面的出链数得到的

有了转移矩阵,我们可以来定义行向量 V V 的第i个分量记录 对应的Rank值,因此一次Rank的更新可以表示为:

在算法的第一轮计算中,我们假设上网者在每一个网页的概率都是相等的,即1/n,于是初试的概率分布就是一个所有值都为1/n的n维列向量 ,用 去右乘转移矩阵M,就得到了第一步之后上网者的概率分布向量 ,得到一个nX1的矩阵 这个 一轮迭代计算出来的PageRank值 。下面是 的计算过程:

得到了 后,再用 去右乘M得到 ,一直下去,即 , 最终V会收敛 .

不断的迭代,最终得到结果.

但是在迭代计算中,我们需要考虑如下两大阻力: Dead End Spider Trap

Dead End就是指一个页面只有入链但是没有出链,这时转移矩阵M的一列为零,导致最后结果为零。这时web不是强连通的,即存在某一类节点不指向别人,如下图的D。这个时候我们的算法就会出问题了,它不满足收敛性了。

为什么不满足收敛性了?

Spider Trap指页面的所有出链都指向自己,这样会使迭代结果中只有自己的页面的Rank值很高。其他页面的Rank值为零。

要克服上面两个问题,我们需要将迭代计算公式做如下转变。我们可以加入一个 随机跳转 机制.

即假设每个页面有很小概率拥有一个指向其他页面的链接。

表现出来就是:其他页面本来传递给一个页面的Rank值需要做一个折扣,作为补偿,可能需要一个页面指向该页面并且传递Rank值给该页面,该跳转的概率为β,因此表达式变为:

其中,N为页面总数; e 为一个N维且各个分量都是1的向量;β通过经验得知一般设为0.15.

此时的计算结果过程为:

有机会再写,先空着

pagerank算法--从原理到实现(代码片段)

本文将介绍PageRank算法的相关内容,具体如下:1.算法来源2.算法原理3.算法证明4.PR值计算方法4.1幂迭代法4.2特征值法4.3代数法5.算法实现5.1基于迭代法的简单实现5.2MapReduce实现6.PageRank算法的缺点7.写在最后参考资料1.算法... 查看详情

mr实现pagerank

PageRank计算什么是pagerankPageRank是Google专有的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。是Google创始人拉里·佩奇和谢尔盖·布林于1997年创造的PageRank实现了将链接价值概念作为排名因素。PageRank计... 查看详情

pagerank算法

目录:基本思想算法原理PR值计算方法 1.基本思想PageRank,即网页排名,是Google用来标识网页的等级或重要性的一种算法。最早的搜索引擎采用的是 分类目录 的方法,即通过人工对网页进行分类并整理出高质量的网站... 查看详情

大数据-hadoop2.7实现pagerank算法-mapreduce&hdfs(代码片段)

...一下实验大作业,信息较为详尽,自己跳转即可PageRank是Google专有的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度,实现了将链接价值概念作为排名因素。本实验基于Hadoop2.7的MapReduce... 查看详情

pagerank算法简介

 有两篇文章一篇讲解(下面copy)《 PageRank算法简介及Map-Reduce实现》来源:http://www.cnblogs.com/fengfenggirl/p/pagerank-introduction.html另一篇《PageRank简介-串讲Q&A.docx》 http://docs.babel.baidu.com/doc/ee14bd65- 查看详情

pagerank算法在hadoop和spark上的实现

背景和目的        PageRank网页排名的算法,曾是Google关键核心技术。用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。通过对PageRank的编程在Hadoop和Spark上的实现,熟练掌握MapReduce程序与Spark程序... 查看详情

翻译:网页排名pagerank算法的来龙去脉以及python实现(代码片段)

PageRank(PR)是Google搜索用来在其搜索引擎结果中对网页进行排名的算法。它以“网页”一词和联合创始人拉里佩奇的名字命名。PageRank是衡量网站页面重要性的一种方法。根据谷歌:PageRank通过计算页面链接的数量和质量来确定... 查看详情

随机游走模型

...果你需要和图数据(GraphData)打交道,那么你一定听说过PageRank。PageRank和其后续算法有着广泛的应用场景,包括推荐系统、反垃圾网页算法、交通规划、复杂系统故障分析等等。毫无疑问,PageRank的成功有很大一部分要归功于Goo... 查看详情

人工智能自然语言处理—pagerank算法和textrank算法详解(代码片段)

人工智能自然语言处理—PageRank算法和TextRank算法详解一、PageRank算法PageRank算法最初被用作互联网页面重要性的计算方法。它由佩奇和布林于1996年提出,并被用于谷歌搜索引擎的页面排名。事实上,PageRank可以在任何有向图上定... 查看详情

推荐算法简介

...你推荐,这实际上就退化成搜索算法了,类似于学长讲的pageranking,我暂时先这么理解4.根据上面的几种条件组合起来给你推荐,这个需要收集的信息就比较多了userprofile用户画像是根据用户的社会属性,消费行为,生活习惯抽象... 查看详情

使用sparkgraphx实现pagerank算法(代码片段)

...ff08;三)Spark编程接口正文简介GraphX提供了静态和动态PageRank的实现方法,这些方法在PageRank对象中。静态的PageRank运行固定次数的迭代,而动态的PageRank一直运行直到收敛为止。数据GraphX源码中提供了一个运用PageRank算... 查看详情

文本自动摘要:基于textrank的中文新闻摘要(代码片段)

TextRank算法源自于PageRank算法。PageRank算法最初是作为互联网网页排序的方法,经过轻微地改动,可以被应用于文本摘要领域。本文分为两部分,第一部分介绍TextRank做文本自动摘要的原理,第二部分介绍用TextRank做中文新闻摘要... 查看详情

pagerank算法

1.PageRank介绍PageRank算法是1998年由斯坦福大学的学生Larrypage和SergreyBrin发明的,是Google搜索引擎的重要算法。目的是基于网络的互联性来客观地计算网页受欢迎程度或重要性。其背后有两个主要依据:(1)具有更多的传入链接的... 查看详情

mapreduce实现pagerank算法(邻接矩阵法)(代码片段)

...。如果有不懂的可以先看一下下面两篇随笔。MapReduce实现PageRank算法(稀疏图法)Python+MapReduce实现矩阵相乘 算法实现我们需要输入两个矩阵A和B,我一开始想的是两个矩阵分别存在两个文件里然后分别读取,但是我发现好像... 查看详情

图数据库pagerank算法(代码片段)

...置为0.85。C(A)被定义为从对象A出去的连接数。对象A的PageRank计算公式如下:PR(A)=(1?d)+d(PR(T1)/C(T1)+...+PR(Tn)/C(Tn))当一个节点只有输出,没有输入的时候,因为d一般设置为0.85,所以:PR(A)=(1-d)+d*(0)=0 查看详情

pagerank算法

转自http://blog.csdn.net/hguisu/article/details/79961851.PageRank算法概述        PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。       是Goog 查看详情

pagerank算法

1.PageRank算法概述        PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。       是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原... 查看详情

text_rank/page_rank

1. 【十大经典数据挖掘算法】PageRank:https://www.cnblogs.com/en-heng/p/6124526.html2. PageRank算法--从原理到实现:https://www.cnblogs.com/rubinorth/p/5799848.html3. PageRank算法简介及Map-Reduce实现:http://blog.jobb 查看详情