衆所周知(並不是),谷歌最早是依靠搜索引擎起家的,而PageRank作爲一種網頁排序算法爲谷歌的發展立下了汗馬功勞。可以說,沒有PageRank就沒有今天的谷歌。
本次課程的主題包括:
Web structure
Pagerank推導和計算方式
應用:Graph Search(個人認爲反而是重要的部分)
1.1 定義:有向圖
: 所有能夠到達v的節點集合
:所有v能夠到達的節點集合
有向圖的兩種類別:
strongly connected:節點間是互通的,能夠通過有向路徑實現互達
directed acyclic graph:有向無環圖,u可以達到v,但v不能到達u
Strongly connected component
這個集合內節點可以互達
這已經是最大的滿足這種要求的集合,不能更大了
每一個有向圖都是在SCC上構成的DAG
意思是說,如果把有向圖中能夠互達的節點集合揉成一個新結點,那麼就是一個DAG了
問題來了:想看看真是Web網絡,是如何在其SCC上構成整個DAG圖的?
首先,對於一個節點v,如何找到包含這個v的SCC?
定義:
是G的反向圖
實驗結果
數據來源:爬取的網絡結構,2.03億 urls,15億links
方法:任意節點v,使用BFS策略(寬度優先)計算In(v)和Out(v)
觀察結果:BFS策略要麼訪問極少的節點,要麼可以訪問居多的節點
說明,網絡結構是一個領帶形式的玩意。
Intuition:網絡中不同節點的重要度肯定是不同的,stanford vs 野雞大學
所以,我們要排序!
rank the pages using the web graph link structure
Link Analysis Algorithms
pagerank
personalized pagerank
random walk with restarts
Idea:將link視爲votes,鏈接越多越重要
還有一個問題,所有鏈接都一樣嗎?
那肯定不行啊,殺人遊戲中,警長還有兩票的投票權呢
從重要節點投出的票會更加重要!
那怎麼分配鏈接上的權重呢?平均
對於page with importance ,有 個外向連接(出度),那每個鏈接得到的投票權爲:
對於節點 j ,其重要度就是所有指向它的投票權之和:
用矩陣定義這種形式,引入鄰接矩陣M
如果 , 的出度爲 ,那麼
M的列和爲1,表示所有從j出去的投票權
rank vector r:每個節點的重要度
矩陣形式:
接下來的論述是,設想是一個surfer在這樣的web上一直隨機遊走,最後停留在各個頁面上的概率
這樣論述的目的在於得到一個概率形式:
那麼 就是最後的穩態概率,對應意義說各個節點重要度也會收斂起來
這可以有兩個解釋:
1、馬爾可夫過程的收斂
其實給定矩陣 ,計算 的過程就是一個重複的過程
相當於是一個馬爾可夫鏈最後的收斂狀態
2、特徵值分解
對比一下,其實就是特徵值爲1的特徵向量!
迭代過程很簡單:三步
初始化:
迭代:
終止條件:
終止條件:
終止條件: