PageRank之基于C C#的基本实现 (2)

刚开始的时候,假设上网者在每一个网页的概率都是相等的(这个假设确实存在,假设世界上只有n个网页,那么我只能开始的时候进入n个网页当中的一个,就是1/n),即1/n,于是开始的时候的概率分布就是一个所有值都为1/n的n维列向量V0(我们以概率分布向量的结果作为网页的质量结果,因为质量越高,被上网者浏览的概率越大,也称pr值的大小),在转移矩阵M去右乘概率分布向量V0,就得到了第一步之后上网者的概率分布向量MV0,(nXn)*(nX1)依然得到一个nX1的矩阵。下面是V1的计算过程:

PageRank之基于C C#的基本实现

注意矩阵M中M[i][j]不为0表示用一个链接从j指向i,M的第一行乘以V0,表示累加所有网页到网页A的概率即得到0.125。得到了V1后,再用V1去右乘M得到V2,一直下去,最终V会收敛,即Vn=MV(n-1),上面的图示例,不断的迭代,最终

V=[0.177,0.319,0.225,0.277]’

(算法的证明这里我们就不证明了,有兴趣的朋友可以百度一下)

终止点问题

上述上网者的行为是一个马尔科夫过程的实例,要满足收敛性,需要具备一个条件:

图是强连通的,即从任意网页可以到达其他任意网页.

但是在浩瀚的互联网中,网页肯定是不满足强连通特性的,我们设计模型的时候想要达到强连通特性是很简单的,但是在互联网上有一些网页不指向任何网页,如果按照上面的计算,当浏览到这个没有指向的网页的时候那是不是就无法出去了呢?,导致前面累计得到的转移概率被清零,这样下去,最终的得到的概率分布向量所有元素几乎都为0。假设我们把上面图中B到A的链接丢掉,A变成了一个终止点,得到下面这个图:

PageRank之基于C C#的基本实现

 

对应的转移矩阵为:

       A      B     C   D

A      0      0     0   0

B      0.33   0     0   1 

C      0.33   1     0   0

D            0.33      0           1       0          

 

连续迭代下去,最终所有元素都为0。

 

陷阱问题

要是有投机取巧这想到用网页自己链接自己,让我们浏览这中了这个无线循环的陷阱怎么办呢?:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxfdy.html