PageRank,網頁排名,又稱網頁級別、Google左側排名或佩奇排名,是一種由根據網頁之間相互的超鏈接計算的技術,而作為網頁排名的要素之一. Google用它來體現網頁的相關性和重要性,在搜索引擎優化操作中是經常被用來評估網頁優化的成效因素之一.PageRank適用於任何圖或網絡在任何域.因此,PageRank是現在經常使用在文獻計量學,社會和信息網絡分析,用於鏈接預測和推薦,甚至用於道路網絡的系統分析,以及生物學、化學、神經科學、物理.
原理:
由於存在一些出鏈為0,也就是那些不鏈接任何其他網頁的網, 也稱為孤立網頁,使得很多網頁能被訪問到.因此需要對 PageRank公式進行修正,即在簡單公式的基礎上增加了阻尼系數(damping factor)d, d一般取值d=0.85.其意義是,在任意時刻,用戶到達某頁面后並繼續向后瀏覽的概率. 1- d= 0.15就是用戶停止點擊,隨機跳到新URL的概率的算法被用到了所有頁面上,估算頁面可能被上網者放入書簽的概率.
最后,即所有這些被換算為一個百分比再乘上一個系數d.由於下面的算法,沒有頁面的
優缺點:
優點:
1、 在於它對互聯網上的網頁給出了一個全局的重要性排序,它使用鏈接來衡量整體受歡迎程度,而不是使用相關主題.
2、 算法的計算過程是可以離線完成的,這樣有利於迅速響應用戶的請求.
缺點:
1、 主題無關性,沒有區分頁面內的導航鏈接、廣告鏈接和功能鏈接等,容易對廣告頁面有過高評價;
2、 舊的頁面等級會比新頁面高,因為新頁面,即使是非常好的頁面,也不會有很多鏈接,除非他是一個站點的子站點.
應用:
基於PageRank的理論,我們以每個微博賬戶的“關注”為鏈出鏈接,“粉絲”為鏈入鏈接,我們把這種以人為核心的關系,叫PeopleRank
,代碼見http://blog.fens.me/hadoop-social-peoplerank/
#################################Matlab########################################
% 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] = rank2(M, d, v_quadratic_error)
N = size(M, 2); % N is equal to either dimension of M and the number of documents
v = rand(N, 1);
v = v ./ norm(v, 1); % This is now L1, not L2
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;
% removed the L2 norm of the iterated PR
end
end %function
##################################R語言########################################
Library(“igraph”)
page.rank (graph, algo = c("prpack", "arpack", "power"),
vids = V(graph), directed = TRUE, damping = 0.85,
personalized = NULL, weights = NULL, options = NULL)
g2 <- make_star(10)
page_rank(g2)$vector