pagerank以及个性化的pagerank算法

pagerank最开始是Google提出来用来衡量网页重要度排行的算法。

她的思想是基于网页之间互相的链接作为加权投票。假如网页a指向b,

那么网页b的重要程度受网页a的影响,a越重要,则b就越重要。假如网页c也指向b,

但是c跟a对比,c指向其他网页的数量(出度)较少,那么c对b的贡献程度要大于a对b。

下面是网页i的重要程度的公式,其中d是一个概率,in(i)表示所有指向网页i的网页。

这公式的思想是模拟一个随机冲浪者的浏览网页的行为,公式左边部分表示该冲浪者以(1-d)/N的概率从浏览器输入url的方式访问到网页i,公式右边部分表示从其他指向网页i的网页跳转过来的。多次迭代后,所有网页的重要性值会收敛。

用概率转移的方式表示,公式如下

一次迭代的计算的例子如下:

其中概率转移矩阵M,

每一列表示网页j的出度,每列的和加起来是1。

每一行表示网页i的入度。

个性化的pagerank

个性化的pagerank的目标是要计算所有节点相对于用户u的相关度。从用户u对应的节点开始游走,每到一个节点都以1-d的概率停止游走并从u重新开始,或者以d的概率继续游走,从当前节点指向的节点中按照均匀分布随机选择一个节点往下游走。这样经过很多轮游走之后,每个顶点被访问到的概率也会收敛趋于稳定,这个时候我们就可以用概率来进行排名了。

从公式可以看出,个性化的pagerank跟传统pagerank不同的是,每次重新游走时,总是从用户u节点开始。另外,每个节点权重初始化时,个性化的pagerank是这样子的,假如对用户u推荐,则对用户u节点初始化为1,其他节点都初始化为0。

下面是我分别用c++和java实现的个性化pagerank算法的源码

https://github.com/linger2012/personal-rank-implemented-by-CPP

https://github.com/linger2012/recommendation-algorithm-implemented-by-java/tree/master/src/personalrank

关于如何加速个性化pagerank,项亮的《推荐系统实战》有提到,用矩阵运算的方式来做。

这方面我还在学习研究阶段,欢迎来探讨。

参考资料:

http://blog.csdn.net/harryhuang1990/article/details/10048383

http://www.cnblogs.com/fengfenggirl/p/pagerank-introduction.html

《Topic-sensitive pagerank》

本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/46991167

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 02:05:50

pagerank以及个性化的pagerank算法的相关文章

基于Neo4j的个性化Pagerank算法文章推荐系统实践

新版的Neo4j图形算法库(algo)中增加了个性化Pagerank的支持,我一直想找个有意思的应用来验证一下此算法效果.最近我看Peter Lofgren的一篇论文<高效个性化Pagerank算法>(Efficient Algorithms for Personalized PageRank)(https://arxiv.org/pdf/1512.04633.pdf),在论文中,有一个比较有趣的示例: 我们想在论文引用网络中进行个性化搜索的尝试,但是要怎样设置个性化PageRank的参数,才

链接分析算法之:主题敏感PageRank

前面的讨论提到.PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别.例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画.理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行.所以搜索引擎一般会选择一种称为主题敏感PageRank(Topic-Sensitive PageRank )的折中方案.主题敏感PageRank的做法是预定

[转]链接分析算法之:主题敏感PageRank

原文引自:http://blog.csdn.net/hguisu/article/details/8005192,感谢 前面的讨论提到.PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别.例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画.理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行.所以搜索引擎一般会选择一种称为主题敏

【转】深入浅出PageRank算法

原文链接 http://segmentfault.com/a/1190000000711128 PageRank算法 PageRank算法是谷歌曾经独步天下的“倚天剑”,该算法由Larry Page和Sergey Brin在斯坦福大学读研时发明的, 论文点击下载: The PageRank Citation Ranking: Bringing Order to the Web. 本文首先通过一些参考文献引出问题,然后给出了PageRank的几种实现算法, 最后将其推广至在MapReduce框架下

pagerank算法的MapReduce实现

pagerank是一种不容易被欺骗的计算Web网页重要性的工具,pagerank是一个函数,它对Web中(或者至少是抓取并发现其中连接关系的一部分web网页)的每个网页赋予一个实数值.他的意图在于,网页 的pagerank越高,那么它就越重要.并不存在一个固定的pagerank分配算法. 对于pagerank算法的推到我在这里不想做过多的解释,有兴趣的可以自己查看资料看看,这里我直接给出某个网页pagerank的求解公式: P(n)=a/G+(1-a)*求和(P(m)/C(m))     (m属

链接挖掘算法之PageRank算法和HITS算法

参考资料:http://blog.csdn.net/hguisu/article/details/7996185 更多数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm 链接分析 在链接分析中有2个经典的算法,1个是PageRank算法,还有1个是HITS算法,说白了,都是做链接分析的.具体是怎么做呢,继续往下看. PageRank算法 要说到PageRank算法的作用,得先从搜索引擎开始讲起,PageRank算法的由来正式与此相关. 搜

【算法】PageRank

1.基本概念:PageRank 是基于[从许多优质的网页链接过来的网页,必定还是优质网页]的回归关系,来判定所有网页的重要性 2.具体算法:将某个页面的 PageRank 除以存在于这个页面的正向链接,由此得到的值分别和正向链接所指向的页面的 PageRank 相加,即是被链接的页面的 PageRank. 3.PageRank概念图: 4.PageRank的要点: 反向链接数 (单纯的意义上的受欢迎度指标) 反向链接是否来自推荐度高的页面 (有根据的受欢迎指标) 反向链接源页面的链接数 (被选中

PageRank算法简介及Map-Reduce实现

PageRank对网页排名的算法,曾是Google发家致富的法宝.以前虽然有实验过,但理解还是不透彻,这几天又看了一下,这里总结一下PageRank算法的基本原理. 一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO(^_^).PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序.它的思想是模拟一个悠闲的

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-ba71-4ebb-945b-cf279717233b PageRank对网页排名的算法,曾是Google发家致富的