PageRank原理分析

2022-03-27 21:55:37 字數 2718 閱讀 8011

pagerank是將眾多網頁看成乙個有向圖,每個頁面就是有向圖中的節點。計算每個節點的出度和入度。如果乙個**被大量其他的網頁引用,那麼他就會有更高的pr分數。

對於所有與節點i相連的節點,用他們的pr值除以他們的出度(乙個節點可以給多個節點投票,但是投票的權重會被平攤)

計算轉移矩陣。第一列表示a的所有出度(a->a, a->b, a->c, a->d),第一行表示a的所有入度(a->a, b->a, c->a, d->a)

\[m=\left[\begin

0 & 0 & \frac & 1 \\

\frac & 0 & 0 & 0 \\

\frac & 1 & 0 & 0 \\

0 & 0 & \frac & 0

\end\right]

\]用矩陣計算來更新pr值:

\[pr_=\sum_} \frac}}

\]\[pr(a)=m * p

\]\[p_=m \cdot p_=\left[\begin

0 & 0 & \frac & 1 \\

\frac & 0 & 0 & 0 \\

\frac & 1 & 0 & 0 \\

0 & 0 & \frac & 0

\end\right] \cdot\left[\begin

\frac \\

\frac \\

\frac \\

\frac

\end\right]=\left[\begin

\frac \\

\frac \\

\frac \\

\frac

\end\right]

\]\(p\)是它們的pr得分, \(l\)是節點的出度。計算下一層pr的方法就是,把相連的節點的pr都拿過來,但是要同時除以他們的出度。pr的預設值就是\(\frac\)

\(0 * \frac + 0 * \frac + \frac * \frac + 1 * \frac = \frac\)

當乙個節點只有入度沒有出度,那麼他就是deadends。這個節點會導致整個網頁的pagerank值趨於0。

他的轉移矩陣m如下,由於他的某一列全為0,導致所有結果都會變成0

\[m=\left[\begin

0 & 0 & 0 \\

0 & 0 & 0 \\

1 & 1 & 0 \\

\end\right]

\]可以看到兩輪後就為0了

for i in range(3):

item = a.dot(item)

print(item)

# [0. 0. 0.66666667]

# [0. 0. 0.]

# [0. 0. 0.]

\[m+a^\left(\frac\right)

\]其實就是在對應一列加上乙個平均值

\[m=\left[\begin

0 & 0 & \frac \\

0 & 0 & \frac \\

1 & 1 & \frac \\

\end\right]

\]乙個節點只有指向自己的鏈結,這種節點的權重在迭代的過程中會變成1,而其他的節點會趨於0.

這種節點的轉移矩陣如下:

\[m=\left[\begin

1 & \frac & \frac \\

0 & 0 & \frac \\

0 & \frac & 0 \\

\end\right]

\]由於這個節點的對角線元素是1,所以他的pagerank值會不斷增加。他的解決方法就是引入乙個概率\(\beta\),使用者會有\(\beta\)的概率停留在這個節點,有\(1-\beta\)的概率跳轉到其他任何網頁。

\[m=\beta m+(1-\beta) \frac

\]這樣的話,完整的公式如下所示:

PageRank演算法原理及實現

pagerank演算法原理介紹 pagerank演算法是google的網頁排序演算法,在 the top ten algorithms in data mining 一書中第6章有介紹。大致原理是使用者搜尋出的多個網頁需要按照一定的重要程度 即後面講的權重 排序,每個網頁的權重由所有鏈結到它的其他網...

機器學習 鏈結分析 pageRank

如果乙個網頁的入鏈越多,別的網頁引用他越多,它越重要。重要一定程度上可以理解為隨機衝浪者處於各 的概率 乙個重要的網頁鏈結到乙個其他網頁,那麼被鏈結到的網頁也就越重要。web轉移矩陣w p129,如果節點i有k條出鏈,則每一條出鏈的權值為1 k,非出鏈的權值為0。實際的意義為從網頁i鏈結到其他各網頁...

PageRank演算法原理剖析及Spark實現

pagerank對網頁排名的演算法,曾是google發家致富的法寶。pagerank演算法計算每乙個網頁的pagerank值,然後根據這個值的大小對網頁的重要性進行排序 首先,將web做如下抽象 1 將每個網頁抽象成乙個節點 2 如果乙個頁面a有鏈結直接鏈向b,則存在一條有向邊從a到b 多個相同鏈結...