Rank

soure code

一:Pagerank:
PageRank是Google用于衡量特定網頁相對于搜索引擎索引中的其他網頁而言的重要程度

對于某個互聯網網頁A來說,該網頁PageRank的計算基于以下兩個基本假設
數量假設:在Web圖模型中,如果一個頁面節點接收到的其他網頁指向的入鏈數量越多,那么這個頁面越重要。
質量假設:指向頁面A的入鏈質量不同,質量高的頁面會通過鏈接向其他頁面傳遞更多的權重。所以越是質量高
的頁面指向頁面A,則頁面A越重要。

基本思想

如果網頁T存在一個指向網頁A的連接,則表明T的所有者認為A比較重要,從而把T的一部分重要性得分賦予A。
這個重要性得分值為:
PR(T)/L(T)
其中PR(T)為T的PageRank值,L(T)為T的出鏈數
則A的PageRank值為一系列類似于T的頁面重要性得分值的累加。

簡單計算

假設一個由只有4個頁面組成的集合:A,B,C和D。如果所有頁面都鏈向A,那么A的PR(PageRank)值將是B,C及D的和:
PR(A) = PR(B) + PR(C) + PR(D)
繼續假設B也有鏈接到C,并且D也有鏈接到包括A的3個頁面。一個頁面不能投票2次。所以B給每個頁面半票。
以同樣的邏輯,D投出的票只有三分之一算到了A的PageRank上:
PR(A)=PR(B)/2 + PR(C)/1 + PR(D)/3
換句話說,根據鏈出總數平分一個頁面的PR值。
PR(A)=PR(B)/L(B) + PR(C)/L(C) + PR(D)/L(D)

修正PageRank計算公式

由于存在一些出鏈為0,也就是那些不鏈接任何其他網頁的網, 也稱為孤立網頁,使得很多網頁能被訪問到。因此需要對 PageRank公式進行修正,即在簡單公式的基礎上增加了阻尼系數(damping factor)q, q一般取值q=0.85
其意義是,在任意時刻,用戶到達某頁面后并繼續向后瀏覽的概率。 1- q= 0.15就是用戶停止點擊,隨機跳到新URL的概率)的算法被用到了所有頁面上,估算頁面可能被上網者放入書簽的概率。



分解轉移矩陣

迭代公式:X = XP轉移矩陣:P=q ×P` + (1-q) × E

E=IT·VP,VP=(1/n 1/n ... 1/n) ,P` = P +DT·I

其中,P`表示對網絡中存在的懸掛頁面處理后的轉移矩陣

D=(d1 ... dn), di =1/n ,頁面i是懸掛頁面,n為總頁面數
di =0 ,otherwise

新的迭代公式:

X(K+1)=XK·P``
=q·(XK·P+XK·DT·I)+(1-q)(XK·IT)VP

可以將計算過程分解成三部分分別處理

  1. XK·P的處理
    這部分是處理其他頁面鏈向當前頁面,對當前頁面產生的貢獻
    令B=XK·P,Pji=1/N(j) , 頁面j->i ( N(j)為也變j的出度)
    Pji=0,otherwise
    B(i)=X1KP1i +X2KP2i+...+XnKPni
    =∑XjKPji(j=1,n)
    =∑XjK/N(j)(j=1,j->i)
    所以計部分的計算可以轉化為提前建立好指向頁面A的所有頁面的ID,并計算好所有頁面的出度。
    在本題庫模型中每個實體都有一個URI,根據這個ID建立投票數據,和出度數據,以便用于迭代計算

    1. XK·DT·I的處理
      令C=XK·DT·I
      其中XK·DT =∑XiK · di
      =1/n · ∑XiK (i=1,n N(i)=0)
      令a= ∑XiK,那么這一部分就轉化為C=(a/n ... a/n) ,其中a表示本輪計算中所有出度為0的頁面PR值的和

    2. (1-q)(XK·IT)VP的處理
      令E= (1-q)(XK·IT)VP
      XK·IT = ∑XiK
      =S (S為所有網頁PR值的和)
      而VP=(1/n ... 1/n),所以E=(1-q)·S·(1/n ... 1/n)
      = (1-q)(s/n ...s/n)
      結果的相對大小,即不影響排序。如果將所有網頁PR初始值設為1,那么s/n=1,這部分就是(1-q),無需計算

模型建立
以演唱實例作為網絡節點,通過演唱實例中的虛擬歌曲,歌手,專輯構建連接關系。同歌手下的演唱實例間互相連接,同專輯下的演唱實例互相建立連接,歌單中的歌曲互相建立連接。

二:HITS:
HITS算法將網頁分為兩類,即hubs和authorities,而且每個頁面也有兩個級別,即hubs(中心級別)和authorities(權威級別)。Authorities是具有較高價值的網頁,依賴于指向它的頁面;hubs為指向較多authorities的網頁,依賴于它指向的頁面。HITS算法的目標就是通過迭代計算得到針對某個檢索提問的排名最高的authority的網頁。

算法的基本思想:相互增強關系 基本假設1:一個好的“Authority”頁面會被很多好的“Hub”頁面指向; 基本假設2:一個好的“Hub”頁面會指向很多好的“Authority”頁面;根集合: 將查詢q提交給基于關鍵字查詢的檢索系統,從返回結果頁面的集合取前n個頁面,作為根集合(root),root滿足:
1.root中頁面數較少 2.Root中的網頁時與查詢q相關的網頁 3.Root中的網頁包含較多權威(Authority)網頁擴展集合base: 在根集合root基礎上,HITS算法對網頁集合進行擴充(參考圖1),擴充原則是:凡是與根集內有直接連接指向關系的網頁都被擴充到集合base,無論是有鏈接指向根集內頁面也好,或者是根集頁面有鏈接指向的頁面也好,都被擴充進入擴展網頁集合base。HITS算法在這個擴充網頁集合內尋找好的“Hub”頁面與好的“Authority”頁面。


       ![](https://app.yinxiang.com/shard/s24/res/21cec124-9ef7-4912-b8fa-6e88a2cb831d/~Z4RGT4%24~W1KA72N%28O10%29D0.png)****

算法描述:網頁a(i)在此輪迭代中的Authority權值即為所有指向網頁a(i)頁面的Hub權值之和:



網頁a(i)的Hub分值即為它指向的頁面的Authority權值之和:

模型建立

在音樂本體庫中,每個實體的結構可以看做一個網頁:



例如上圖中,名為“歌曲1”的網頁有兩個出鏈,歌手、專輯。在模型中,輸入內容為歌曲名,root集合為與搜索歌曲同名的所有歌曲網頁(這里是為了防止HITS算法中主題漂移問題),base集合為root集合擴展出來歌手網頁,專輯網頁:



因為我們的搜索queey為一首歌曲,目的是為了找到最合適唱這首歌的歌手,因此最終結果將根據結合的方式給出:歌曲的Authority與其對應歌手的Authority之和

三:SimRank:
SimRank算法是由美國斯坦福大學的Glen Jeh和Jennifer Widom二人提出的,主要利用圖的全局信息來計算任意兩個節點間的相似度。SimRank的思想是:兩個節點的鄰居節點相似,那么這兩個節點也相似。跟基于共現的相似度算法比較,它采取的是一種比較”間接"的方式,即A和B相似,C和D相似,那么,如果A和C相似,則B和D也相似。
SimRank算法可用于社會網絡中的用戶推薦等的實現,比如在某一個社交網中,由用戶之間的好友關系構成用戶關系圖,經過一些社區劃分算法之后,會出現多個子社區。在子社區計算中,可以用Simrank算法計算用戶兩兩之間的形似度,按照相似度從高到低,為用戶推薦好友。

****
上圖為某相關公司的員工關系網絡圖,不同類型的節點表示不同類型的員工。員工之間可能存在一種聯系,假設員工A和員工B都與項目經理C相連,那么員工A和B可能同屬一個部門,同時被C領導,他們之間存在一種相似關系。假設項目經理C和D之間存在相似關系(可能是同公司或者同行業等),那么,分別與C和D相連的員工E和F之間也有形似關系。
Simrank算法通常應用于圖算法中,假設圖G是一個無向圖,a和b表示圖上任意兩個節點,I(a)表示節點a相連的節點集合,同理,I(b)表示與節點b相連的節點集合,則節點a和節點b的相似度SimRank公式表示如下:
****
其中,C為衰減系數,取值為0到1,一般去0.8。|I(a)|和|I(b)|分別表示與節點a和b相連的節點的集合大小,為正整數。根據公式可知,節點a和節點b的相似度等于分別與a和b相連的節點之間的兩兩相似度的平均值。
Simrank算法是一種遞歸迭代的過程,初始時,節點與自身的相似度最高,一般設為1,與其他節點的相似度為0,如:

假設在第k迭代是,節點a,b之間的相似度用Rk(a,b)表示,那么,第k+1次迭代是,a和b只見的相似度為:

當迭代次數足夠多(趨向無窮)時,R(a,b)就是節點a和節點b的相似度。
SimRank算法復雜度較高,用d表示節點a,b的入度積的平均值,n為階段的數目,k表示迭代次數,則該算法時間復雜度為:
,空間復雜度為
,在具體應用中,可根據實踐情況做一些剪枝操作來減少運算的時間復雜度和空間復雜度。

利用Simrank算法進行Query Rewriting

搜索引擎的檢索結果頁下方一般會提示多個相似的搜索關鍵詞,這些詞可以被看作查詢關鍵詞query的rewriting。在計算廣告中,當某一個query沒有對應的bid phase出價廣告,或者該query對應的bid phase較少的時候,可以利用query rewriting獲取相似query對應的廣告進行顯示,以期望獲得更多的click。相似query的確定可以利用用戶session中的搜索關鍵詞上下文,但此方法需要確定query的邊界,例如用戶搜索過程中可能會突然跳到一個完全不相干的搜索,然后又跳回來。或者利用傳統的文本相似度匹配,而由于query一般都很短,傳統相似度匹配的語料也不足。


Simrank
Simrank算法是一種用于衡量結構上下文中個體相似度的方法,直觀上的含義是利用已有個體的相似度來推算其他與有關聯個體的相似度。形式化的定義如下:
有向圖G={V,E}中,節點a的入邊集合記為I(a),而出邊集合記為O(a),則兩個節點a,b(a != b時)相似度s(a,b)按照如下公式計算,其含義是個體a,b的相似度取決于所有與a,b相連節點的相似度,s(a,b)∈[0,1];當a=b時,s(a,b)=1;如果a != b,且只有同一個入節點c,我們不希望從c計算得到的s(a,b)也為1,因此c做為衰減因子,取值是[0,1],即s(a,b) = C。
image
image

對于二分圖G’ = (V1,V2,E),對于任意的(A,a)∈E,有A∈V1和a∈V2,則所有V1集合中的節點相似度按照出度O(A)計算。V2集合中的節點相似度則按照上述公式,利用入度I(a)計算。
image
image

在搜索廣告中,把query和ad看作節點,當用戶搜索某個查詢關鍵詞q時,點擊了廣告a,則建立q至a的一條邊,這樣構成一個由query和ad組成的二分圖G=(V,E),其中V=Vq∪Va,任何邊e=(q,a,w),q∈Vq并且a∈Va,可以利用simrank算法來求query之間的相似度。E(q)表示q的邊,N(q)表示E(q)的個數:
image
image

按照上述算法,我們看以下的例子,假設C等于0.8,則利用上述公式計算出的sim(pc,camera)的相似度在前5次迭代中都大于sim(camera,digital camera),但從直觀上說,由于camera和digital camera的共同鄰居較多,應該具備更高的相似度,而simrank的結果是反直觀的。針對上述問題,Antonellis等人在VLDB 08上提出了Simrank在計算廣告方面的改進——Simrank++。
image
image

Simrank++
Simrank++的改進主要包括兩點,一是針對上面的問題對sim(q,q)進行調整,如果兩個節點共同節點**{E(q)∩E(q)}**越多,則給予這兩個節點相似度更高的權值。


按照上述調整后,上面示例的計算結果如下。同時Antonellis等人也證明了,如果迭代的次數足夠多,對于未調整前的simrank,最終sim(pc,camera)會和sim(camera, digital camera)相等,但實際使用中肯定無法計算那么多次迭代。
image
image

四:NetClus:

異構網絡中基于排序模型的聚類算法

針對異構網絡一種新的基于排序模型的聚類算法。這里的異構網絡主要指星型結構的網絡模型,其主要特點是:網絡中包含多種類別的節點,其中一種為主節點(target object),以及其他屬性節點(attribute object),主節點和屬性節點都有鏈接關系。以論文領域舉例,論文,作者,關鍵詞,發表論文機構組成一個星型網絡模型,其中論文為target object,作者,關鍵詞,發表論文的機構等都為attribute object。該算法利用不同節點之間的鏈接關系構建了兩種排序模型(Simple Ranking,Authority Ranking),并使用排序模型得到的節點概率分布構建高質量的用于描述節點在不同簇下分布的向量,從而完成聚類過程。聚類穩定后每一個簇都相當于一個領域,例如數據庫領域,管理領域等。利用排序模型計算穩定聚類下每個簇中節點的概率分布,便可以得到該領域下,各屬性節點的排序狀況。
算法的主要步驟如下:

(流程圖在這里展示不開,請打開http://www.xmind.net/embed/5TKK/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容