鏈接分析算法之 SALSA算法

分享一下我老師大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

               

        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算法是目前效果最好的鏈接算法之一。

 

 

 參考文獻:

《這就是搜索引擎:核心技術詳解》

 

           

分享一下我老師大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章