理解personal Rank算法

哈喽,各位好,我是菜鸟小明哥。

personal Rank是random walk的应用,搞了几天也没明白到底是咋回事,其中难以理解的是第2个式子为啥要加1-alpha??

你肯定会告诉我,来看第1个式子,真不好意思,我第1个式子其实也没理解。

我是看的这个的视频,但是我没看懂,大牛只顾自己讲了,其实我倒带N次了,还是没理解。

既然如此,那我就搜索点资料看看,果然有好点的资料,某个大佬从page Rank说起,其实我也没怎么看page rank,但我看了对personal Rank中的公式细节的解释,这个真的很重要:又结合我自己的理解再理解

in(i)表示指向i结点的结点,out(i)表示从i出发的结点的个数,也就是视频中所说的出度。

注意:二分图是无向图,其边没有固定指向,所以两个顶点之间肯定是相互可以到达的,故而上面说的既可以从i出发也可指向i

下面看大多数人见到的公式:

对于user u,当i=u时,ri=1,其他时为0,PR表示重要程度,我感觉就是personal Rank的缩写,实际上外文中并没有personal Rank这个名词,有page Rank,谁的缩写都行吧。

公式的理解:以某个著名的例子来说,逐步推导上面的公式

对于user A,第1次游走,i=A,出走的概率为alpha,那么到达a的重要度为alpha*PR(A)/2,2是A的出度,到达c的出度也是如此,留在A的剩下(1-alpha)*PR(A),因为开始默认PR(A)=1,其他结点PR均为0,所以这里面有个等式表示:

PR(A)=留下的+出去的=1-alpha+PR(a)+PR(c)=1-alpha+alpha*(PR(A)/2+PR(A)/2)=1-alpha+alpha=1 ,【Note:PR(A)=1】

[分析:此时是PR(A)=1-alpha,这是出走后的结果,求和为何为0,因为a/c属于in(A),PR(a)=PR(c)=0,

视频中大牛理解为,从A出发的概率为alpha,到a/c后又瞬时回到A的PR为(1-alpha),我表示不理解]

第2次出走,分别从A,a,c出发,

先考虑从A到a/c,此时PR(a)=PR(c)=alpha*PR(A)/out(A) 【Note:PR(A)=1-alpha,PR(A)是中间值了,后面不再标记了】

[分析:上面图的公式中out(i)应该为out(j),A属于in(a),求和符号表示指向a的所有的重要度之和,而此时并没有将a的重要度分给B,所以就直接是这个公式了PR(a)=alpha*PR(A)/out(A)]

再说从a到A/B,同样PR(A)=PR(B)=alpha*PR(a)/out(a)   【PR(a)为第1次出走到a的值,PR(a)=alpha*PR(A)/2】

最后说从c出发到A/B/C,也有PR(A)=PR(B)=PR(C)=alpha*PR(c)/out(c) 【PR(c)为第1次出走到a的值,PR(c)=alpha*PR(A)/2】

[分析:上面的都已经是中间值了,还可以再分,直到结果趋于稳定]

【每一步出走不妨只考虑存在的连通,如上面的3个,假想此时只有(只存在)涉及到的结点,以第1次出走来说,

按照大牛的做法,程序搬过来发现与别人的结果不同,而且计算时间比较长,原因在于第2个for中多了一步是否为根节点,而别人的这一步在第1个for下面,当我迭代1次时,大牛的结果错误,而网络上的结果正确,虽说最终迭代稳定时的先后顺序一样,而且大牛的结果恰好是别人的两倍,更明显的错误是大牛迭代2次所有重要度和不是1,而且从开始的时候和就不是1,这不对。

这个问题要是深究的话估计一般人真不一定能回答正确,你就把原理讲给一个纯小白,他能听懂,说明你学会了,他听不懂,说明你也没弄懂。我还是有点蒙蔽。20200306-01:43睡觉

网络的程序中将A的结果直接在迭代开始时直接给出1-alpha,而不明显参与for循环(没有判断是否为根节点),这是很诧异的

另外有相关问题可以加入QQ群讨论,不设微信群

QQ群:868373192 

语音图像视频深度-学习群

发布了220 篇原创文章 · 获赞 208 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/SPESEG/article/details/104681657