首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算PageRank向量?

如何计算PageRank向量?
EN

Stack Overflow用户
提问于 2016-06-06 12:11:49
回答 1查看 871关注 0票数 2

问题

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

示例:

当传输速率为0.14时,其(随机)转移概率矩阵在以下。这个矩阵的pagerank向量是

代码语言:javascript
复制
>  P =  [0.05 0.04 0.11 0.25 0.21 0.04 0.31].

转移概率矩阵

代码语言:javascript
复制
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解决了这个问题。有传送的真正矩阵是

代码语言:javascript
复制
> A' = A * (1 - 0.14) + 0.14 * 1 / 7

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

代码语言:javascript
复制
> [V,D] = eig(A')

eigenvalue=1的特征向量就是答案。但是我得到了

代码语言:javascript
复制
>  [0.1751    0.1377    0.3550    0.5137    0.4255    0.1377  0.6005].

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

代码语言:javascript
复制
>> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-07 02:31:44

有一件事是,转换矩阵的行应该加为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的平稳分布已经与“正确”答案相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37657123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档