如何计算PageRank向量?

时间:2016-06-06 12:11:50

标签: matlab pagerank

问题

这是教科书的一个例子。但是,我得到了不同的答案。

示例:

对于0.14的隐形传输率,其(随机)转移概率矩阵在下面。该矩阵的pagerank向量是

>  P =  [0.05 0.04 0.11 0.25 0.21 0.04 0.31].

转换概率矩阵

A = 

    0.0200    0.0200    0.8800    0.0200    0.0200    0.0200    0.0200 
    0.0200    0.4500    0.4500    0.0200    0.0200    0.0200    0.0200
    0.3100    0.0200    0.3100    0.3100    0.0200    0.0200    0.0200
    0.0200    0.0200    0.0200    0.4500    0.4500    0.0200    0.0200
    0.0200    0.0200    0.0200    0.0200    0.0200    0.0200    0.8800
    0.0200    0.0200    0.0200    0.0200    0.0200    0.4500    0.4500
    0.0200    0.0200    0.0200    0.3100    0.3100    0.0200    0.3100

我的尝试

我使用MATLAB来解决这个问题。传送的真实矩阵是

> A' = A * (1 - 0.14) + 0.14 * 1 / 7

然后我尝试计算特征向量。

> [V,D] = eig(A')

具有特征值= 1的特征向量将是答案。但是,我得到了

>  [0.1751    0.1377    0.3550    0.5137    0.4255    0.1377  0.6005].

我做错了什么?这是相应的MATLAB输出:

>> A' =

    0.0372    0.0372    0.7768    0.0372    0.0372    0.0372    0.0372
    0.0372    0.4070    0.4070    0.0372    0.0372    0.0372    0.0372
    0.2866    0.0372    0.2866    0.2866    0.0372    0.0372    0.0372
    0.0372    0.0372    0.0372    0.4070    0.4070    0.0372    0.0372
    0.0372    0.0372    0.0372    0.0372    0.0372    0.0372    0.7768
    0.0372    0.0372    0.0372    0.0372    0.0372    0.4070    0.4070
    0.0372    0.0372    0.0372    0.2866    0.2866    0.0372    0.2866

>> [V,D] = eig(A')

V =

    0.1751    0.4326   -0.0005   -0.0003    0.2826    0.2820    0.3396
    0.1377   -0.0000    0.0005    0.0007    0.0000   -0.4279   -0.5152
    0.3550   -0.5594    0.0012    0.0010    0.6482    0.4182    0.5035
    0.5137   -0.0000   -0.4121   -0.5374   -0.0000    0.4279    0.3142
    0.4255   -0.4326   -0.4097   -0.2704   -0.2826    0.1459   -0.0253
    0.1377    0.0000    0.0005    0.0007    0.0000   -0.4279   -0.1132
    0.6005    0.5594    0.8139    0.7988   -0.6482   -0.4182   -0.5035


D =

    1.0035         0         0         0         0         0         0
         0   -0.3225         0         0         0         0         0
         0         0   -0.1229         0         0         0         0
         0         0         0   -0.0010         0         0         0
         0         0         0         0    0.5719         0         0
         0         0         0         0         0    0.3698         0
         0         0         0         0         0         0    0.3698

>> V'

ans =

    0.1751    0.1377    0.3550    0.5137    0.4255    0.1377    0.6005
    0.4326   -0.0000   -0.5594   -0.0000   -0.4326    0.0000    0.5594
    -0.0005    0.0005    0.0012   -0.4121   -0.4097    0.0005    0.8139
    -0.0003    0.0007    0.0010   -0.5374   -0.2704    0.0007    0.7988
    0.2826    0.0000    0.6482   -0.0000   -0.2826    0.0000   -0.6482
    0.2820   -0.4279    0.4182    0.4279    0.1459   -0.4279   -0.4182
    0.3396   -0.5152    0.5035    0.3142   -0.0253   -0.1132   -0.5035

1 个答案:

答案 0 :(得分:0)

有一点是转换矩阵的行应该总和为1,这样它就是一个适当的随机矩阵(它们略微偏离)。当你计算静态分布时,你会得到特征向量为1的特征向量。这是正确的,但是你必须将它归一化为总和为1,这样它就是一个合适的概率分布。如果你这样做,你会发现(在将行标准化为单位总和之后)列出的矩阵A的平稳分布基本上等于你所说的{正确'值[0.05 0.04 0.11 0.25 0.21 0.04 0.31]。根据您的描述,听起来A已经包含了远程传输过渡,因此您的代码中不必运行A = A * (1 - 0.14) + 0.14 * 1 / 7。这就解释了为什么A的固定分布已与“正确”答案匹配的原因。