个性化PageRank算法

最近在学习知识图谱,涉及到:PageRank算法、马尔科夫模型

马尔科夫模型:https://blog.csdn.net/pipisorry/article/details/46618991

 

PageRank算法

一、什么是PageRank

利用网页简单的超链接来计算网页的分值,从而给网页进行排名的一种算法。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常用来评估网页优化的成效因素之一。

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

二、PageRank模型

互联网的网页可以看做是一个有向图,其中网页是节点,如果网页A有链接到网页B,则存在一条有向边A-->B,下面是一个简单的例子:

                                                            

这个简单的网络中只有四个网页,如果当前在A网页,由于A有3条出链,则上网者将会各以1/3的概率跳转到B、C和D。所以如果一个网页有k条出链,那么该网页跳转到任意一个出链上的概率时1/k,同理D到B、C的概率各为1/2,而B到C的概率为0 。访问一个网页的概率由链接到它的所有网页的概率来决定,例如网页A由B、C两个网页链接,则:

                                                                               

每个网页的访问概率可以用一个向量进行表示,则所有网页的跳转概率可以用户一个用转移矩阵来表示,当一个网络中有n个网页结点时,则转移矩阵M是一个n x n的方阵。因此上面示例图对应的转移矩阵如下:

                                                                                 

(列:第一列为A->A,A->B,A->C,A->D     第二列为B->A,B->B,B->C,B->D)

初始时,假设上网者在每一个网页的概率都是相等的,即\frac{1}{n},于是初始的概率分布就是一个所有值都为1/n的n维列向量V_{0},用V_{0}去右乘转移矩阵,就可以得到下一步对每个网页的访问概率V_{1}

                                                                      

之后的过程就是一个不断的迭代过程,用得到的网页访问概率去右乘转移矩阵,直到达到一个收敛的状态。可以发现,这是一个马尔科夫过程,即当前的状态仅由它前一个状态来决定。                      

三、终止点问题

我们知道,要满足马尔科夫过程的收敛性,需要具备一个条件,即图需要是强连通的。(强连通图(Strongly Connected Graph)是指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。)

而互联网上的网页不满足强连通的特性,因为有一些网页不指向任何网页,所以当上网者到达这类网页时他将没法跳到其他网页,因此一直迭代下去,会导致所有网页的访问概率都为0;

                                                                                    

如上所示,网页C不指向任何一个网页,其对应的转移矩阵为:

                                                                                           

用初始的访问概率右乘转移矩阵,然后一直迭代下去,则最终所有的访问概率都变为0:

                                                                                         

四、陷进问题

另外一个问题是陷进问题,即有些网页不存在指向其他网页的连接,但是存在指向自己的连接,如图所示:

                                                                                       

 我们可以发现,当上网者跑到C网页后,就像跳进了陷阱,再也不能从C中出来了,这将导致概率分布值全部转移到C网页上来,其对应的转移矩阵为:

                                                                                                 

 用初始的访问概率右乘转移矩阵,然后一直迭代下去,则所有的概率都会转移到网页C:

                                                                                             

五、解决终止点问题和陷进问题

上述的问题只是特殊的情况,为了更好的理解PageRank算法的原理而已。实际上Google提出的PageRank算法分为两部分,另一部分是由一定的概率跳转到一个随机的网页,这样就能避免终止点问题和陷阱问题。

                                                                                               

其中\alpha一般取为0.85,现在我们来计算带陷阱问题的网络的概率分布:

                                                             

重复迭代下去,得到:

                                                                                 

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

                     

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

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

                        

六、复杂度问题

上述的网络只有四个结点,直接用矩阵乘法进行是十分快捷的。但是真实的网络中有上千万个网页结点,如果还是直接用矩阵乘法进行计算,时间复杂度就太高了。因此很多有关PageRank算法的博客都提到了Map-Reduce的计算,这里后续进行补充...

七、个性化PageRank算法

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

                                                      

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

 

个性化PageRank的计算可以用bookmark-coloring算法,参考文献

Bookmark-coloring algorithm for personalized PageRank

 

具体的算法原理后期补充...

 

参考:pagerank以及个性化的pagerank算法:https://blog.csdn.net/lingerlanlan/article/details/46991167

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值