pagerank
pagerank算法的核心思想是,计算一个用户随机点击一个网站然后不停点击从而到达各个网站的概率。而一个网站的打开概率又取决于那些指向他自己的那些网站的概率,所以这个概率的计算是一个不断迭代的过程。
一个简单的例子:B,C,D同时指向A,我们认为,BCD的PR是0.25,那么A的pr值就是0.75
但是,如下图,如果网站D有3个外链,那么你从网站D跳到网站A的概率就不一定是100%了,这是我们要给它做一个权重衰减,我们给PR值除以3
这个模型可以写作以下公式:
PR(u)=∑v∈BuPR(v)L(v)" role="presentation">PR(u)=∑v∈BuPR(v)L(v)
其中L表示结点的出度,Bu" role="presentation">Bu是所有指向u的结点。然而一个用户在点击网页的时候是不会无限点下去了,他最终肯定会在某个结点上停止,于是,我们可以引入一个damping factor来表达这种关系,当你计算PR的时候,要乘一个衰减的系数来认为有一定概率会在上一个页面停止,而不会跳转到这个页面来。于是PR的公式可以改写成这样:
PR(pi)=1−dN+d∑pj∈M(pi)PR(pj)L(pj)" role="presentation">PR(pi)=1−dN+d∑pj∈M(pi)PR(pj)L(pj)
d就是damping factor,d一般取0.85,N是结点数量,那个1-d/N是为了保证这个概率值在0到1之间。这个表达式可以写成矩阵的形式:
R=[PR(p1)PR(p2)⋮PR(pN)]" role="presentation">R=⎡⎣⎢⎢⎢⎢⎢PR(p1)PR(p2)⋮PR(pN)⎤⎦⎥⎥⎥⎥⎥
R=[(1−d)/N(1−d)/N⋮(1−d)/N]+d[ℓ(p1,p1)ℓ(p1,p2)⋯ℓ(p1,pN)ℓ(p2,p1)⋱⋮⋮ℓ(pi,pj)ℓ(pN,p1)⋯ℓ(pN,pN)]R" role="presentation">R=⎡⎣⎢⎢⎢⎢⎢(1−d)/N(1−d)/N⋮(1−d)/N⎤⎦⎥⎥⎥⎥⎥+d⎡⎣⎢⎢⎢⎢⎢⎢ℓ(p1,p1)ℓ(p2,p1)⋮ℓ(pN,p1)ℓ(p1,p2)⋱⋯⋯ℓ(pi,pj)ℓ(p1,pN)⋮ℓ(pN,pN)⎤⎦⎥⎥⎥⎥⎥⎥R
其中l(pi,pj)" role="presentation">l(pi,pj)表示结点pi" role="presentation">pi对pj" role="presentation">pj的影响程度,比如在例子2,里面,l(B,A)=1/2" role="presentation">l(B,A)=1/2.写成矩阵形式,这里P其实相当于邻接矩阵:
R=dPR+1−dN1" role="presentation">R=dPR+1−dN1
我们只要求解这个R,就能得到每个结点的PR值。
Ranking Users in social Networks with Higher-order structures
这里介绍一种改进的方法,这是在社交网络上的应用,在计算PR的时候,其实我们默认了,在一个网站上以相同概率跳转到其他的结点,但这其实在社交网络里面是有问题的。看下面的例子。
用户1同时关注了2,3,4在三个用户,但是,很显然,用户1其实是更信任用户2多过用户4的,因为用户1同时关注了2跟3.
所以我们要做的就是,考虑这种三角结构:
一共有7种。举个例子,当我们考虑M6时。
对于结点3而言,M6结构一共出现了2次,分别是153,123.所以矩阵第1行第3列等于2.
上面的这个考虑了三角结构的邻接矩阵可以用下面的公式计算。其中B=W⊙WT" role="presentation">B=W⊙WT,U=W−B" role="presentation">U=W−B,其中⊙" role="presentation">⊙是对应元素相乘
最后对于PR的计算公式:
R=dPR+1−dN1" role="presentation">R=dPR+1−dN1
我们用
HMk=αW+(1−α)WMk" role="presentation">HMk=αW+(1−α)WMk
来替换掉P就能取得很好的效果。
扩展资料
其实PR只是目前页面排序的一个小小的权重,这是目前谷歌最新的企鹅算法
参考资料
Zhao, Huan, et al. “Ranking Users in Social Networks with Higher-Order Structures.” (AAai 2018)
PageRank-wiki
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者a358463121专栏:http://blog.csdn.net/a358463121,如果涉及源代码请注明GitHub地址:https://github.com/358463121/。商业使用请联系作者。
相关阅读
最短路径Dijkstra算法原理及Matlab实现
图论的基础知识不再阐述。 最短路径算法主要有二
Dijkstra算法
Floyd算法
Dijkstra算法研究的是从初始点到其他每一结点的最短
python算法初步
算法的概念:算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一定的指令的任务。一般地,当
VLAD算法简介
1.1 vlad基础概念
VLAD是vector of locally aggregated descriptors的简称,是由Jegou et al.在2010年提出,其核心思想是aggregate
常见的7种排序算法
1、冒泡排序
最简单的一种排序算法。假设长度为n的数组arr,要按照从小到大排序。则冒泡排序的具体过程可以描述为:首先从数组的第一
计算广告中的look-alike技术相关算法
计算广告中广告中的look-alike基于广告主提供的seed用户进行人群扩展,为广告主定向潜在高价值用户,提升广告转化效果。现有的look-a