SALSA演算法的初衷希望能夠結合PageRank和HITS演算法兩者的主要特點,既可以利用HITS演算法與查詢相關的特點,也可以採納PageRank的“隨機遊走模型”,這是SALSA演算法提出的背景。由此可見,SALSA演算法融合了PageRank和HITS演算法的基本思想,從實際效果來說,很多實驗資料表明,SALSA的搜尋效果也都優於前兩個演算法,是目前效果最好的連結分析演算法之一。
從整體計算流程來說,可以將SALSA劃分為兩個大的階段:首先是確定計算對象集合的階段,這一階段與HITS演算法基本相同;第二個階段是連結關係傳播過程,在這一階段則採納了“隨機遊走模型”。
1. 確定計算對象集合
PageRank的計算對象是互連網所有網頁,SALSA演算法與此不同,在本階段,其與HITS演算法思路大致相同,也是先得到“擴充網頁集合”,之後將網頁關係轉換為二分圖形式。
擴充網頁集合
SALSA演算法在接收到使用者查詢請求後,利用現有搜尋引擎或者檢索系統,獲得一批與使用者查詢在內容上高度相關的網頁,以此作為“根集”。並在此基礎上,將與“根集”內網頁有直接連結關係的網頁納入,形成“擴充網頁集合”(參考圖6.4.3-1)。之後會在“擴充網頁集合”內根據一定連結分析方法獲得最終搜尋結果排名。
轉換為無向二分圖
在獲得了“擴充網頁集合”之後,SALSA根據集合內的網頁連結關係,將網頁集合轉換為一個二分圖。即將網頁劃分到兩個子集合中,一個子集合是Hub集合,另外一個子集合是Authority集合。劃分網頁節點屬於哪個集合,則根據如下規則:
如果一個網頁包含出鏈,這些出鏈指向“擴充網頁集合”內其它節點,則這個網頁可被歸入Hub集合;
如果一個網頁包含“擴充網頁集合”內其它節點指向的入鏈,則可被歸入Authority集合。
由以上規則可以看出,如果某個網頁同時包含入鏈和出鏈,則可以同時歸入兩個集合。同時,Hub集合內網頁的出鏈組成了二分圖內的邊,根據以上法則,將“擴充網頁集合”轉換為二分圖。
圖6-15和圖6-16給出了一個樣本,說明了這個轉換過程。假設“擴充網頁集合”6-15所示,由6個網頁構成,其連結關係,同時為便於說明,每個網頁給予一個唯一編號。圖6-16則是將圖6-15中的網頁集合轉換為二分圖的結果。以網頁6為例,因為其有出鏈指向網頁節點3和網頁節點5,所以可以放入Hub集合,也因為編號為1、3、10的網頁節點有連結指向網頁節點6,所以也可以放入Authority集合中。網頁節點6的兩個出鏈保留,作為二分圖的邊,
圖6-15 擴充網頁集合樣本
但是這裡需要注意的是,在轉換為二分圖後,原先的有向邊不再保留方向,轉換為無向邊,而HITS演算法仍然保留為有向邊,這點與SALSA略有不同。
圖6-16 二分圖
到這一步驟為止,除了SALSA將“擴充網頁集合”轉換為無向二分圖,而HITS仍然是有向二分圖外,其它步驟和流程,SALSA演算法與HITS演算法完全相同,正因此,SALSA保證了是與使用者查詢相關的連結分析演算法。
2. 連結關係傳播
在連結關係傳播階段,SALSA放棄了HITS演算法的Hub節點和Authority節點相互增強假設,轉而採納PageRank的“隨機遊走模型”。
連結關係傳播概念性模型
6-16所示,假設存在某個瀏覽者,從某個子集合中隨機播放一個節點出發(為方便說明,圖中所示為從Hub子集的節點1出發,實際計算往往是從Authority子集出發),如果節點包含多條邊,則以相等機率隨機播放一條邊,從Hub子集跳躍到Authority集合內節點,圖中所示為由節點1轉移到節點3,之後從Authority子集再次跳回Hub子集,即由節點3跳到節點6。如此不斷在兩個子集之間轉移,形成了SALSA自身的連結關係傳播模式。
儘管看上去與PageRank的連結傳播模式不同,其實兩者是一樣的,關鍵點在於:其從某個節點跳躍到另外一個節點的時候,如果包含多個可供選擇的連結,則以等機率隨機播放一條路徑,即在權值傳播過程中,權值是被所有連結平均分配的。而HITS演算法不同,HITS演算法屬於權值廣播模式,即將節點本身的權值完全傳播給有連結指向的節點,並不根據連結多少進行分配。
SALSA的上述權值傳播模型與HITS模型關注重點不同,HITS模型關注的是Hub和Authority之間的節點相互增強關係,而SALSA實際上關注的是Hub-Hub以及Authority-Authority之間的節點關係,而另外一個子集合節點只是充當中轉橋樑的作用。所以,上述權值傳播模型可以轉化為兩個相似的子模型,即Hub節點關係圖和Authority節點關係圖。
Authority節點關係圖
圖6-17是由6-16的二分圖轉化成的“Authority節點關係圖”,“Hub節點關係圖”與此類似,兩者轉化過程是相似的,我們以“Authority節點關係圖”為例來看如何從二分圖轉化為節點關係圖。
圖6-17 Authority節點關係圖
這裡需要注意的是:Authority集合內從某個節點i轉移到另外一個節點j的機率,與從節點j轉移到節點i的機率是不同的,即非對稱的,所以轉換後的Authority節點關係圖是個有向圖,以此來表示其轉移機率之間的差異。
對於圖6-17這個“Authority節點關係圖”來說,圖中包含的節點就是二分圖中屬於Authority子集的節點,關鍵在於節點之間的邊如何建立以及節點之間轉移機率如何計算。
節點關係圖中邊的建立
之所以在“Authority節點圖”中,節點3有邊指向節點5,是因為在二分圖中,由節點3通過Hub子集的節點6中轉,可以通達節點5,所以兩者之間有邊建立。
這裡需要注意的是:在二分圖中,對於Authority集合內某個節點來說,一定可以通過Hub子集的節點中轉後再次返回本身,所以一定包含一條指向自身的有向邊。節點1因為只有中轉節點2使得其返回Authority子集中自身節點,所以只有指向自身的一條邊,和其它節點沒有邊聯絡,所以例子中的“Authority節點關係圖”由兩個連通子圖構成,一個只有節點1,另外一個連通子圖由剩餘幾個節點構成。
節點之間的轉移機率
至於為何“Authority節點關係圖”中,節點3到節點5的轉移機率為0.25,是因為前面介紹過,SALSA的權值傳播模型遵循“隨機遊走模型”。在圖6-16的二分圖中,從節點3轉移到節點5的過程中,節點3有兩條邊可做選擇來跳轉到Hub子集,所以每條邊的選擇機率為1/2,可以選擇其中一條邊到達節點6,同樣,從節點6跳回到Authority子集時,節點6也有兩條邊可選,選中每條邊的機率為1/2。所以從節點3出發,經由節點6跳轉到節點5的機率為兩條邊權值的乘積,即為1/4。
對於指向自身的有向邊,其權重計算過程是類似的,我們仍然以節點3為例,指向自身的有向邊代表從Authority子集中節點3出發,經由Hub子集的節點再次返回節點3的機率。從6-16的二分圖可以看出,完成這個過程有兩條路徑可走,一條是從節點3到節點1返回;另外一條是從節點3經由節點6後返回;每一條路徑的機率與上面所述計算方法一樣,因為兩條路徑各自的機率為0.25,所以節點3返回自身的機率為兩條路徑機率之和,即為0.5。圖中其它邊的轉移機率計算方式也是類此。
建立好“Authority節點關係圖”後,即可在圖上利用“隨機遊走模型”來計算每個節點的Authority權值。在實際計算過程中,SALSA將搜尋結果排序問題進一步轉換為求Authority節點矩陣的主秩問題,矩陣的主秩即為每個節點的相應Authority得分,按照Authority得分由高到低排列,即可得到最終的搜尋排序結果。
3. Authority權值計算
圖6-18 SALSA節點權值計算公式
經過數學推導,可以得出SALSA與求矩陣主秩等價的Authority權值計算公式。圖6-18表明了SALSA演算法中某個網頁節點的Authority權值是如何計算的。右上方公式所示,決定某個網頁i的Authority權值涉及到4個因子:
Authority子集中包含的節點總數|A|。其實這個因子對於Authority集合中任意節點來說都是相同的,所以對於最終的根據節點Authority權值進行排序沒有影響,只是起到保證權值得分在0到1之間,能夠以機率形式表示權值的作用;
網頁i所在連通圖中包含的節點個數|Aj|。網頁所在的連通圖包含的節點個數越多,則網頁的Authority權值越大;
網頁i所在連通圖中包含的入鏈總數|Ej|。網頁所在的連通圖包含的入鏈總數越少,則網頁的Authority權值越大;
網頁i的入鏈個數|Bi|。節點入鏈越多,則Authority權值越大,這個因子是唯一一個和節點本身屬性相關的。由此可見,SALSA權值計算和節點入鏈個數成正比。
之前圖6-17的“Authority節點關係圖”由兩個連通子圖組成,一個由唯一的節點1構成,另外一個由節點3、5、6三個節點構成,兩個連通子圖在圖6-18中也被分別圈出。
我們以節點3為例,看其對應的四個計算因素取值:
Authority子集共包括4個節點;
節點3所在連通圖包含3個節點;
節點3所在連通圖共有6個入鏈;
節點3的入鏈個數為2;
所以,節點3的Authority權值為:(3/4)*(2/6)=0.25。其它節點權值的計算過程與此類似。SALSA根據節點的Authority權值由高到低排序輸出,即為搜尋結果。
由上述權值計算公式可以推論出:如果整個Authority子集所有節點形成一個完整的連通圖,那麼在計算authority權值過程中,對於任意兩個節點,4個因子中除了節點入鏈個數外,其它三個因子總是相同,即只有入鏈個數起作用,此時,SALSA演算法退化為根據節點入鏈個數決定排序次序的演算法。
從SALSA計算Authority得分過程中可看出,SALSA演算法不需像HITS演算法一樣進行不斷迭代計算,所以從計算效率角度看要快於HITS演算法。另外,SALSA演算法解決了HITS演算法的計算結果主題漂移的問題,所以搜尋品質也優於HITS演算法。SALSA演算法是目前效果最好的連結演算法之一。
參考文獻:
《這就是搜尋引擎:核心技術詳解》