R中的PageRank。向量问题以及如何迭代邻接矩阵

R中的PageRank。向量问题以及如何迭代邻接矩阵,r,matrix,vector,data-science,pagerank,R,Matrix,Vector,Data Science,Pagerank,我有一个1和0的500x500邻接矩阵,我需要计算每个页面的pagerank。这里有一个代码,其中R是矩阵,T=0.15是常数: n = ncol(R) B = matrix(1/n, n, n) # the teleportation matrix A = 0.85 * R + 0.15 * B ranks = eigen(A)$vectors[1] # my PageRanks print(ranks) [1] -0.5317519+0i 我对R没有太多的经验,但是我假设给定的输

我有一个1和0的500x500邻接矩阵,我需要计算每个页面的pagerank。这里有一个代码,其中R是矩阵,T=0.15是常数:

 n = ncol(R)
 B = matrix(1/n, n, n) # the teleportation matrix
 A = 0.85 * R + 0.15 * B
 ranks = eigen(A)$vectors[1] # my PageRanks
 print(ranks)
[1] -0.5317519+0i
我对R没有太多的经验,但是我假设给定的输出是一个通用的pagerank,并且我需要每个页面都有一个pagerank

有没有一种方法可以构造一个与矩阵相关的pageranks表?我在网上没有找到任何与我的具体案例相关的信息。

几点:

(1) 您需要将二进制邻接矩阵(在您的例子中是R)转换为列随机转移矩阵(表示页面之间转移的概率)

(2) A也需要保持为列随机,那么只有对应于特征值1的主导特征向量将是页面秩向量

(3) 要找到矩阵A的第一个特征向量,需要使用特征(A)$vectors[,1]

具有小5x5邻接矩阵R的示例:

set.seed(12345)
R = matrix(sample(0:1, 25, replace=TRUE), nrow=5) # random binary adjacency matrix
R = t(t(R) / rowSums(t(R))) # convert the adjacency matrix R to a column-stochastic transition matrix
n = ncol(R)
B = matrix(1/n, n, n) # the teleportation matrix
A = 0.85 * R + 0.15 * B
A <- t(t(A) / rowSums(t(A))) # make A column-stochastic
ranks = eigen(A)$vectors[,1] # my PageRanks
print(ranks)
# [1] 0.05564937 0.05564937 0.95364105 0.14304616 0.25280990
print(ranks / sum(ranks)) # normalized ranks
[1] 0.03809524 0.03809524 0.65282295 0.09792344 0.17306313
set.seed(12345)
R=矩阵(样本(0:1,25,替换=TRUE),nrow=5)#随机二进制邻接矩阵
R=t(t(R)/行和(t(R))#将邻接矩阵R转换为列随机转移矩阵
n=ncol(R)
B=矩阵(1/n,n,n)#隐形传态矩阵
A=0.85*R+0.15*B

但是,我得到了更多的错误:B=矩阵(1/n,n,n)#隐形传态矩阵>A=0.85*R+1*B中的0.85*R+1*B错误:非一致性阵列>A由于某些错误而未计算。在这种情况下,R是转移概率矩阵,B是隐形传态矩阵,请确保dim(R)=dim(B)。我们有吗?同样,A=(1-p)*R+p*B,如果隐形传态概率p=0.15,1-p=0.85。