必威体育Betway必威体育官网
当前位置:首页 > IT技术

如何优雅的理解PageRank

时间:2019-10-17 17:43:24来源:IT技术作者:seo实验室小编阅读:74次「手机版」
 

pagerank

博客引流

一口气开始别憋气

终于Tex调好了 刚好最近又多次提及pagerank 于是~

目测这一系列 有个两三篇blog

PageRank 是 由佩奇(Larry Page)等人提出 的 Google 最为有名的技术之一

我 乔治 甘拜下风

PageRank 是一种基于随机游走 的 评价网站权值的算法

言而总之 PageRank是一种十分重要的算法 不管在学术界 还是在产业界

Node Similarity & Proximity

在介绍PageRank 需要先来提一下 什么叫节点相似

假设在一个有向图集合G(V, E)中研究两个节点u, v之间的相关性

在这里插入图片描述

上图, 我们可以从感性的认识上判断u, v之间的相似高要比u, w之间的相似度要高

那如何来具体定义相似度呢

Common neighbor

我们很容易可以想到 好像 一个节点的邻居集合可以表征这个节点的周围结构

实际上这就是CN算法(common neighbor)

规定CN(u,v)=nei(u)nei(v)CN(u, v)=nei(u)\cap nei(v)CN(u,v)=nei(u)∩nei(v)

Jaccard

单纯的数值对于估计一个节点的相似度 可能存在标准不统一的情况

故jaccard在CN的基础上做了一个归一化的处理

得到Jaccard=CN(u,v)nei(u)nei(v)Jaccard=\dfrac{CN(u, v)}{nei(u)\cup nei(v)}Jaccard=nei(u)∪nei(v)CN(u,v)​

Adamic-Adar Index

AdamicAdarIndex=1logN(v)Adamic-Adar Index=\sum \dfrac{1}{logN(v)}Adamic−AdarIndex=∑logN(v)1​

当然还可以按计算时用到部分点还是全部点来进行分类

  • local
    • Common Neighbors(CN), Jaccard, Adamic-Adar Index
  • grobal
    • personalized PageRank(PPR), SimRank, Katz

事实上 节点相似度在生产过程中有极强的落地场景

尤其是和社交网络分析相关的好友推荐

另外 还可以运用在Top-k的关系发现当中

传言王者荣耀的好友推荐 就是用PPR做的

最后需要提一句 NodeSimilarity̸=NodeProximityNode Similarity\not = Node ProximityNodeSimilarity̸​=NodeProximity

一般而言, sim(u,v)=sim(v,u)sim(u, v) = sim(v, u)sim(u,v)=sim(v,u), 但p(u,v)̸=p(v,u)p(u, v) \not = p(v, u)p(u,v)̸​=p(v,u)

Naive PageRank

PR(u)=vNin(u)N1Nout(v)PR(v)PR(u)=\sum\limits_{v \in N_{in}(u)}^N \dfrac{1}{N_{out}(v)}PR(v)PR(u)=v∈Nin​(u)∑N​Nout​(v)1​PR(v)

S.t. PR(u)0PR(u) \ge 0PR(u)≥0, PR=1\sum PR = 1∑PR=1

直观上看pr值的计算是一个迭代的过程,通过出度把PR值分配给下游节点

但Naive PageRank在计算的过程中会出现一些问题

PR=PTPR\vec {PR} = P^T \cdot\vec{PR}PR=PT⋅PR,其中PPP为行向量

PRT=PRTP\vec {PR}^T = \vec{PR} ^T \cdot PPRT=PRT⋅P

因为上述PageRank的定义是一个递归过程,所以需要一个递归停止条件-ERROR

maxPR(l+1)(i)PR(l)(i)ϵmax|\vec {PR}^{(l+1)}(i) - \vec {PR}^{(l)}(i)|\le \epsilonmax∣PR(l+1)(i)−PR(l)(i)∣≤ϵ

其实严格上还需要证明上述递推关系的收敛性 , 事实上Naive PageRank是不一定收敛的

当然还有解的存在性,唯一性 等等

Flaw 1 Multiple Solutions

[外链图片转存失败(img-2LX5tyVH-1566571810377)(https://cdn.nlark.com/yuque/0/2018/png/104214/1540887190754-efc5d2fe-8a78-46da-9906-4705a84377e5.png "")]

对于图示这种情况 PR的值其实有无数钟取法

只要满足PRa=PRb=PRc,PRp=PRq=PRrPR_a = PR_b = PR_c, PR_p = PR_q = PR_rPRa​=PRb​=PRc​,PRp​=PRq​=PRr​

Flaw 2 Link Spam

还是上面的例子a, b, c 此时PRa=PRb=PRc=13PR_a = PR_b = PR_c = \dfrac{1}{3}PRa​=PRb​=PRc​=31​

如果把c>ac->ac−>a的边改为c>bc->bc−>b, 迭代后就会造成 PRa=0,PRb=PRc=12PR_a = 0, PR_b = PR_c = \dfrac{1}{2}PRa​=0,PRb​=PRc​=21​

当一个平衡建立之后,如果因为少数几个节点的异常更改,就会造成全部PR值的改变,这就很容易导致少数几个节点操控整个系统的PR值

[外链图片转存失败(img-LTbvMlyZ-1566571810379)(https://cdn.nlark.com/yuque/0/2018/png/104214/1540899475705-0298ae69-1631-45f9-8926-ca3d92185026.png "")]

Flaw 3 Dead Ends and Spider Traps

其实仔细想一想 Flaw2是因为其他节点变得没有入度造成的

那么如果有那么一些点是只入不出的,则会造成PR值随着迭代向该点聚集

这样的点 可以看做 强连通子图

[外链图片转存失败(img-gNlu6gvz-1566571810380)(https://cdn.nlark.com/yuque/0/2018/png/104214/1540913723891-0f4143a4-6f46-46a8-8ac4-f8962edb1418.png "")]

PageRank

为解决上述的问题 佩奇 提出 PR()=αvNin(u)N1Nout(v)PR(v)+(1α)1nPR() =\alpha \sum\limits_{v \in N_{in}(u)}^N \dfrac{1}{N_{out}(v)}PR(v) + (1-\alpha) \dfrac{1}{n}PR()=αv∈Nin​(u)∑N​Nout​(v)1​PR(v)+(1−α)n1​

相对于Naive PageRank 相对于做了一个平滑处理 给一个偏置量

  • Flaw 1. PR(a)=PR(b)=PR(c)=PR(p)=PR(q)=PR(r)=16PR(a) = PR(b) = PR(c) = PR(p) = PR(q) = PR(r) = \dfrac{1}{6}PR(a)=PR(b)=PR(c)=PR(p)=PR(q)=PR(r)=61​
  • Flaw 2. 减少出现Link Spam的可能性
  • Flaw 3. Doesn’t help ☹
    • 移除没有出度的节点或者结构
    • 加一条回边

[外链图片转存失败(img-OlDRBQj3-1566571810380)(https://cdn.nlark.com/yuque/0/2018/png/104214/1540915531161-1a819e22-f9a8-431d-b6c4-874476c42b7b.png "")]

正如前面所说的,因为PageRank define by 递归

所以,我们需要证明解的存在性,唯一性,收敛性,此处省略若干证明

收敛性: 我们用矩阵形式表示π=PR\pi = \vec {PR}π=PR

则根据上述定义可得,πv(t)=(1ϵ)(w,v)Eπw(t1)dw+ϵn\pi_v^{(t)}= (1-\epsilon)\sum\limits_{(w,v) \in E} \dfrac{\pi_w^{(t-1)}}{d_w}+\dfrac{\epsilon}{n}πv(t)​=(1−ϵ)(w,v)∈E∑​dw​πw(t−1)​​+nϵ​

Let Err(t)=vπv(t)πvErr(t)=\sum\limits_v|\pi_v^{(t)}-\pi_v^*|Err(t)=v∑​∣πv(t)​−πv∗​∣

πv(t)πv(1ϵ)(w,v)Eπw(t1)πwdw|\pi_v^{(t)}-\pi_v^*| \le (1-\epsilon)\sum\limits_{(w,v) \in E} \dfrac{\pi_w^{(t-1)} - \pi_w^*}{d_w}∣πv(t)​−πv∗​∣≤(1−ϵ)(w,v)∈E∑​dw​πw(t−1)​−πw∗​​

Err(t)=vπv(t)πv(1ϵ)w[πw(t1)πw](1ϵ)Err(t1)(1ϵ)tErr(0)Err(t)=\sum\limits_v|\pi_v^{(t)}-\pi_v^*|\le (1-\epsilon)\sum\limits_w [\pi_w^{(t-1)} - \pi_w^* ]\le(1-\epsilon)Err(t-1)\le(1-\epsilon)^tErr(0)Err(t)=v∑​∣πv(t)​−πv∗​∣≤(1−ϵ)w∑​[πw(t−1)​−πw∗​]≤(1−ϵ)Err(t−1)≤(1−ϵ)tErr(0)

0&lt;ϵ&lt;10&lt;\epsilon &lt;10<ϵ<1时,上述递推关系式具有收敛性

把第t轮递推式子依次带入t-1, t-2, …

得到PRlT=αlPR0TPl+1αn1T(αl1Pl1++αP+I)\vec{PR}^{l \cdot T}=\alpha ^l\vec{PR}^{0\cdot T}P^l+\dfrac{1-\alpha}{n}\vec{1}^T(\alpha^{l-1}\cdot P^{l-1}+\cdot \cdot \cdot+\alpha P + I)PRl⋅T=αlPR0⋅TPl+n1−α​1T(αl−1⋅Pl−1+⋅⋅⋅+αP+I)

可以看出当迭代轮数l比较大时,αl\alpha ^lαl会是一个小量,造成PR只剩下第二项

PRvT=1αn1T(αl1Pl1++αP+I)\vec{PR_v}^T=\dfrac{1-\alpha}{n}\vec{1}^T(\alpha^{l-1}\cdot P^{l-1}+\cdot \cdot \cdot+\alpha P + I)PRv​​T=n1−α​1T(αl−1⋅Pl−1+⋅⋅⋅+αP+I)

对于这个式子的含义学术界有很多解释

  • RandomWalkRandom-WalkRandom−Walk: 看作是以概率α\alphaα留下, 1α1-\alpha1−α转移随机游走的概率值
    • PR(v)PR(v)PR(v) = # walks ends at vnr\dfrac{v}{nr}nrv​
  • 看做是一个长时间随机游走的结果
  • αWalk\alpha-Walkα−Walk: 与Random Walk一致, 看做是一个以概率α\alphaα留下, 1α1-\alpha1−α转移随机游走过程,约定经过某个点,该点的score(w)+=(1α)score(w) +=(1-\alpha)score(w)+=(1−α)
    • αWalk\alpha-Walkα−Walk相对于Random Walk,方差更小,复杂度很低,实际效果更好,是目前研究的热点方向

Next maybe Talk About PPR/SimRank or maybe Top-k PPR

一口气结束 hhh

Reference

  1. The PageRank Citation Ranking: Bringing order to the Web
  2. Fast Distributed PageRank Computation
  3. PageRank and The Random Surfer Model
  4. bidirectional-random-walk, 大图的随机游走( 个性化 PageRank ) 算法

相关阅读

PageRank算法原理与实现

正文共835个字,8

【十大经典数据挖掘算法】PageRank

作者简介:Treant 人工智能爱好者社区专栏作者博客专栏:https://www.cnblogs.com/en-heng 引言 PageRank是Sergey Brin与Larry Pa

PageRank算法在社交网络上的应用

PageRank算法介绍 pagerank算法的核心思想是,计算一个用户随机点击一个网站然后不停点击从而到达各个网站的概率。而一个网站的打

看来谷歌Toolbar PageRank真的要“死”了!

站长之家(Chinaz.com)10月8日消息 早在2013年10月份,谷歌工程师Matt Cutts便曾暗示13年内谷歌不会再对TBPR(ToolBar PageRank)进行更新

Google PageRank 算法归队了

就在一年前,整个搜索引擎营销及优化行业和各大网络营销论坛一致认定,Google提供的PR(PageRank)指标应该从排名关键算法中除名。如今,一

分享到:

栏目导航

推荐阅读

热门阅读