數據挖掘 graph mining 之 ranking 介紹

 

 近年來,圖挖掘graph mining漸漸熱了起來。這裏的圖是圖論裏說的那個圖,也就是點集合和邊集合構成的一種數據結構。
圖挖掘中幾個比較重要的方向有:

1.     community detection

2.     frequent subgraph mining

3.     ranking

 

 

ranking中最出名的就是googlepagerank, pagerank的思想簡單而巧妙:假設一個人在瀏覽網頁的時候,有一定的概率會點擊頁面的超鏈接,或者直接輸入URL訪問其他頁面。那些會被廣大頁面所引用的頁面,就是高質量的界面。

Pagerank的公式非常簡單:每個頁面ppr值等於所有指向ppr值貢獻度之和

 

其中,T爲計算中的頁面總量, d是阻尼常數因子,一般取0.85IN(p)爲所有指向p的頁面的集合;OUT(r)爲頁面r出鏈的集合。計算的時候,所有節點初始化pr值相等,每一輪爲每個節點計算出pr值以後,進行歸一化,下一輪用上一輪的pr值。經過若干次迭代計算,pr值就會收斂到一個穩定的結果了。

 

 

 

 首先我們初始化ABC的pr值分別爲1/3。

 

 

  得到ABC新的pr值以後,再進行多次計算,就可以得到最後ABCpr值了.

表示成矩陣計算更直觀一些: 

 

 

 這裏面的矩陣G’就是graph的鄰接矩陣G每一列進行歸一化,再轉置得到的。

(後面那個矩陣的乘法表示錯了,你就當做 pr(A) = 向量與矩陣第一行的點積,pr(B) = 向量與矩陣第二行的點積...)

 

更一般化的寫法:

 

 

   有個更詳細的講解說明,在這http://www.kreny.com/pagerank_cn.htm

 

  在公式中,pr向量乘以轉置矩陣G’的每一行,都是獨立的,因此pagerank又是一個可以分佈式計算的算法。

 

 

 

 

 

  介紹完pagerank,下面再介紹圖挖掘中community detection.中的一個算法

community detection社團發現是複雜網絡研究中一個比較熱門的方向。和聚類的任務相似,社團發現的任務是要把網絡中節點劃分到不同的小社區。社區中節點之間連線比較密集,但社團與社團之間連接很稀疏,這與聚類的定義也很相似。社團發現算法也很多,本人知道的就這一個,來自於這篇論文:

Near linear time algorithm to detect community structures in large-scale networks

文章提出的一個叫label propagation(我簡稱LP)的方法,避免了前人的工作存在的問題:

1.需要預先制定一些參數信息,如社團數、中心點之類的;

2.計算複雜度高。

 

  LP算法的思想如下:一個節點的選擇類別是取決於與它相連接的節點的類別。

將所有節點初始化類別C爲節點編號,之後爲每個節點根據鄰居計算其屬於那個類別。這個過程迭代進行。每輪迭代之後更新節點類別,更新方式可以是同步或者異步。

同步的方式是節點類別的計算只依賴於上一輪迭代時的節點類別,即

 

 

 

 

 

 算法核心步驟可以描述爲:

1.      初始化節點C0(x)=x

2.      t=1

3.      網絡中所有節點進行隨機排序,得到順序X

4.      X中每個節點x計算Ct(x)

5.      如果每個節點的類別都是它鄰居類別的最多的那個,算法停止,否則轉到步驟3

 

 算法不能保證一定收斂,(雖然實驗也指出經過5輪迭代,就有95%的節點達到了最終的類別)需要額外的判斷條件。原文的判斷條件不列了,另外一篇文章指出只要修改一下f,讓x判斷也包括本節點的類別就行了。

 

  讀完LP算法你就會發現,它處理方式和pagerank很接近,都是一個向量乘上一個矩陣,向量代表各節點的狀態,矩陣代表節點與鄰居的關係。LP雖然是爲了社團發現,但用的是一種graph ranking的思想。這種Ranking方法在考察網絡中一個節點的重要程度,是通過與之相連的節點間的重要性。當一個節點連接到另一節點時,它會向這個被相連的節點進行一個投票;節點得到的票數越多,它就越重要;同時它投出的票也越重要。

 

  例如另一個也很出名的ranking算法HITSHITS算法認爲,一個鏈接到其他很多網頁的網頁是一個好的hub(中心網頁),一個被很多其他網頁鏈接的網頁是一個好的authority(權威網頁);一個鏈接到很多好的權威網頁的網頁是一個更好的hub(中心網頁);同理,一個被很多好的中心網頁鏈接的網頁是一個更好的authority(權威網頁)網。

 

 

 

  各個節點的狀態在若干次投票之後達到一個比較穩定的狀態,這種狀態可以說就是隱藏在網絡中的一種知識,各個算法在處理投票上有所不同,因此ranking是一種值得掌握的數據挖掘方法。

 

 

 

發佈了36 篇原創文章 · 獲贊 27 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章