quadratic_error变量在Google的PageRank算法中的作用是什么?

时间:2012-12-20 03:00:38

标签: algorithm pagerank quadratic

wikipedia上实现了Googles的PageRank:

% Parameter M adjacency matrix where M_i,j represents the link from 'j' to 'i', such that for all 'j' sum(i, M_i,j) = 1
% Parameter d damping factor
% Parameter v_quadratic_error quadratic error for v
% Return v, a vector of ranks such that v_i is the i-th rank from [0, 1]

function [v] = rank(M, d, v_quadratic_error)

N = size(M, 2); % N is equal to half the size of M
v = rand(N, 1);
v = v ./ norm(v, 2);
last_v = ones(N, 1) * inf;
M_hat = (d .* M) + (((1 - d) / N) .* ones(N, N));

while(norm(v - last_v, 2) > v_quadratic_error)
        last_v = v;
        v = M_hat * v;
        v = v ./ norm(v, 2);
end

endfunction

我可以'弄清楚是什么是quadratic_error。它没有在维基百科上和文章的算法规范中描述。

1 个答案:

答案 0 :(得分:2)

看起来这是一次融合测试。当whilev之间的L 2 差异未超过last_v的值时,v_quadratic_error循环结束。

这里有更多解释。首先,请注意M_hat是一个矩阵,v是一个向量。 while循环将v替换为产品M_hat * v(规范化为单位向量)。当由于一次迭代导致v的变化足够小时,循环结束。这就是“融合”在这种情况下的含义。

这似乎是用于找到对应于矩阵的主要特征值的本征向量的标准power iteration循环(在这种情况下为M_hat)。如果不了解更多关于整体算法(我不打算研究),我不能说为什么这个计算是有用的。