大話SALSA算法

SALSA算法的初衷希望能夠結合PageRank和HITS算法兩者的主要特點,既可以利用HITS算法與查詢相關的特點,也可以采納PageRank的“隨機游走模型”,這是SALSA算法提出的背景。由此可見,SALSA算法融合了PageRank和HITS算法的基本思想,從實際效果來說,很多實驗數據表明,SALSA的搜索效果也都優于前兩個算法,是目前效果最好的鏈接分析算法之一。
從整體計算流程來說,可以將SALSA劃分為兩個大的階段:首先是確定計算對象集合的階段,這一階段與HITS算法基本相同;第二個階段是鏈接關系傳播過程,在這一階段則采納了“隨機游走模型”。
6.5.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保證了是與用戶查詢相關的鏈接分析算法。
6.5.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得分由高到低排列,即可得到最終的搜索排序結果。
6.5.3Authority權值計算
圖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算法是目前效果最好的鏈接算法之一。