(右邊是其有向圖的矩陣表示,mij=1表示有i指向j的邊)
我們把a,b,c比喻為三個水池,假設只要有某個水池向外的箭頭那麼其中的水會全部流出,這樣最後其最後剩餘的水量(權值)只取決於流入量。這樣我們就將乙個網頁的等級計算轉換為其他鏈結指向他的權值運算。
上圖第一行描述了a的流出,其流向b的概率為m12=1,進行歸一化處理(0~1之間的值)為 1/(0+1+1) =1/2。同理流向c的概率也為1/2。這樣我們得到乙個概率矩陣:
根據值v決定於流入量的原則有:
va = 1/1 * (上一次的)vb ;即第一列
vb = 1/2 * (上一次的)va + 1/1 * (上一次的)vb ;即第二列
vc = 1/2 * (上一次的)va ;即第三列
給定一列初始值,按照上面的公式就行迭代,最終會得到a,b,c的穩定不變的值。這樣理解,a,b, c是深度不同的水池,水通過管道(鏈結)在其間互相流動,最後總會處於乙個平衡的狀態(連通器原理)。水池深度越深水量越多其等級也就越高。
在上面的公式中,概率的取值是按列取值的,為了進行矩陣的運算得到一維矩陣(描述n個網頁等級),一定是(概率p,網頁w,pnn * wn1 –> rn1)。這樣計算時就要求以行的形式取概率值,因此進行轉置概率矩陣。
leak洩露問題:a就像乙個無底洞,其他節點的水遲早會全部流進a導致這些節點值為0,而設計上a的值是受鏈結他的節點的值影響的,這樣就會導致全為0,就像水全部洩露出去了。
**sink(沉沒問題):**a點只有流出,一開始計算就為0,沉到底了沒法和其他節點進行交流。
上述問題的原因無非是某個節點的出度或者入度為0,我們只要假設任意乙個節點都有一定概率達到其他節點,引入阻尼係數α, 這樣完整的概率矩陣類似於:
由PageRank想到的
首先來看看什麼是pagerank pagerank 技術 通過對由超過 50,000 萬個變數和 20 億個詞彙組成的方程進行計算,pagerank 能夠對網頁的重要性做出客觀的評價。pagerank 並不計算直接鏈結的數量,而是將從網頁 a 指向網頁 b 的鏈結解釋為由網頁 a 對網頁 b 所投的...
MapReduce實現的PageRank原理
pagerank手工計算得出的值見帖子 這個值有助於我們驗證下面mr計算是不是正確 首先假設有兩個節點a和b 原始矩陣如tiger老師的幻燈片第九頁 a 1 網頁1和2儲存在節點a上 網頁3和4儲存在節點b上 由於a在a上很容易計算1和2的出鏈 根據mr的本地運算的思想,網頁1和2的處理必在a上完成...
PageRank的模擬計算
源於stanford在coursera上的mining massive datasets課程。做week 1裡的作業中要求做一些和pagerank有關的計算。include include include include include include include include include...