前面的討論提到。
pagerank忽略了主題相關性,導致結果的
相關性和主題性降低,對於不同的使用者,甚至有很大的差別。例如,當搜尋「蘋果」時,乙個數碼愛好者可能是想要看
iphone 的資訊,乙個果農可能是想看蘋果的**走勢和種植技巧,而乙個小朋友可能在找蘋果的簡筆畫。理想情況下,應該為每個使用者維護一套專用向量,但面對海量使用者這種方法顯然不可行。所以搜尋引擎一般會選擇一種稱為主題敏感pagerank(topic-sensitive pagerank
)的折中方案。主題敏感pagerank的做法是預定義幾個話題類別,例如體育、娛樂、科技等等,為每個話題單獨維護乙個向量,然後想辦法關聯使用者的話題傾向,根據使用者的話題傾向排序結果。
主題敏感pagerank
是pagerank
演算法的改進版本,該演算法已被
使用在個性化搜尋服務中。
基本思想:
1、確定話題分類
主題敏感pagerank
參考odp
**(www.dmoz.org)
,定義了
16個大的主題類別,包括體育、商業、科技等。
odp(open directory project)
是人工整理的多層級網頁分類導航站點(參見圖1),在頂級的
16個大分類下還有更細緻的小
圖1odp
首頁粒度分類結構,在最底層目錄下,人工收集了符合該目錄主題的精選高質量網頁位址,以供網際網路使用者導航定址。主題敏感pagerank
採用了odp
最高端別的
16個分類類別作為事先定義的主題型別。
2、網頁topic 歸屬
這一步需要將每個頁面歸入最合適的分類,具體歸類有很多演算法,例如可以使用 tf-idf 基於詞素歸類,也可以聚類後人工歸類。這一步最終的結果是每個網頁被歸到其中乙個 topic。
3、分topic 向量計算
在pagerank的向量迭代公式:
即r = q × p * r + ( 1 一 q) * e/n(e單位向量)
而在主題敏感pagerank中,向量迭代公式為:
首先是單位向量e變為了s。
而s是這樣乙個向量:對於某 topic 的s,如果網頁k在此 topic 中,則s中第k個元素為1,否則為0。注意對於每乙個 topic 都有乙個不同的s。而|s |表示s中 1 的數量。
假設有頁面a,b,c, d,假設頁面a歸為 arts,b歸為 computers,c歸為 computers,d歸為 sports。那麼對於 computers 這個 topic,s就是:
假設我們設定阻尼係數q=0.8, 而|s|=2, 因此,迭代公式為:
最後算出的向量就是 computers 這個 topic 的 rank。如果實際計算一下,會發現b、c頁在這個 topic 下的權重相比上面非 topic-sensitive 的 rank 會公升高,這說明如果使用者是乙個傾向於 computers topic 的人(例如程式設計師),那麼在給他呈現的結果中b、c會更重要,因此可能排名更靠前。
最後一步就是在使用者提交搜尋時,確定使用者的 topic 傾向,以選擇合適的 rank 向量。主要方法有兩種:
一種是列出所有 topic 讓使用者自己選擇感興趣的專案,這種方法在一些社交問答**註冊時經常使用;
另外一種方法利用「使用者查詢分類器」對查詢進行分類,即搜尋引擎會通過某種手段(如 cookie 跟蹤)跟蹤使用者的行為,進行資料分析判斷使用者的傾向。
如圖2,假設使用者輸入了查詢請求「喬丹」,查詢詞「喬丹」隸屬於體育類別的概率為
0.6,娛樂類別的概率為
0.1,
商業類別的概率為
圖2
在進行上述使用者查詢分類計算的同時,搜尋系統讀取索引,找出包含了使用者查詢「喬丹」的所有網頁,並獲得已計算好的各個分類主題的pagerank
值,在圖
6-21
的例子裡,假設某個網頁
a的各個主題
pagerank
值分別為體育
0.2,娛樂
0.3以及商業
0.1。
得到使用者查詢的類別向量和某個網頁的主題pagerank
向量後,即可計算這個網頁和查詢的相似度。通過計算兩個向量的乘積就可以得出兩者之間的相關性。在圖
6-21
的例子裡,網頁
a和使用者查詢「喬丹」的相似度為:
sim(「喬丹」
,a)= 0.6*0.2+0.1*0.3+0.3*0.1=0.18
以上內容介紹的是主題敏感
pagerank
的基本思想和計算流程,從其內在機制來說,這個演算法非常適合作為個性化搜尋的技術方案。在圖2
所示例子裡,計算相似度使用的只有使用者當前輸入的查詢詞「喬丹」,如果能夠對此進行擴充套件,即不僅僅使用當前查詢詞,也考慮利用使用者過去的搜尋記錄等個性化資訊。比如使用者之前搜尋過「耐克」,則可以推斷使用者輸入「喬丹」是想購買運動服飾,而如果之前搜尋過「姚明」,則很可能使用者希望獲得體育方面的資訊。通過這種方式,可以將使用者的個性化資訊和當前查詢相融合來構造搜尋系統,以此達到個性化搜尋的目的,更精準的提供搜尋服務。
pagerank
演算法基本遵循前面章節提到的「隨機遊走模型」,即使用者在瀏覽某個網頁時,如果希望跳轉到其它頁面,則隨機選擇本網頁包含的某個鏈結,進入另外乙個頁面。主題敏感
pagerank
則對該概念模型做出改進,引入了更符合現實的假設。一般來說使用者會對某些領域感興趣,同時,當瀏覽某個頁面時,這個頁面也是與某個主題相關的(比如體育報道或者娛樂新聞),所以,當使用者看完當前頁面,希望跳轉時,更傾向於點選和當前頁面主題類似的鏈結,即主題敏感
pagerank
是將使用者興趣、頁面主題以及鏈結所指向網頁與當前網頁主題的相似程度綜合考慮而建立的模型。很明顯,這更符合真實使用者的瀏覽過程。
pagerank
是全域性性的網頁重要性衡量標準,每個網頁會根據鏈結情況,被賦予乙個唯一的
pagerank
分值。主題敏感
pagerank
在此點有所不同,該演算法引入
16種主題型別,對於某個網頁來說,對應某個主題型別都有相應的
pagerank
分值,即每個網頁會被賦予
16個主題相關
pagerank
分值。在接受到使用者查詢後,兩個演算法在處理方式上也有較大差異。
pagerank
演算法與查詢無關,只能作為相似度計算的乙個計算因子體現作用,無法獨立使用。而主題敏感
pagerank
是查詢相關的,可單獨作為相似度計算公式使用。而且,在接收到使用者查詢後,主題敏感
pagerank
還需要利用分類器,計算該查詢隸屬於事先定義好的
16個主題的隸屬度,並在相似度計算時的排序公式中利用此資訊。
演算法複雜度分析之主方法
最近看stanford的演算法導 開課,講到分治法的時候提到了主方法,可以很快速的分析演算法的時間複雜度。對於乙個遞迴實現的分治演算法,其時間複雜度表示為 t n at n b h n 其中,a 1 b 1 h n 是不參與遞迴部分的時間複雜度。比較n log b a 與 h n 的大小 的含義和 ...
機器學習演算法之 主成分分析(PCA)
降維是對資料高維度特徵的一種預處理方法。降維是將高維度的資料保留下最重要的一些特徵,去除雜訊和不重要的特徵,從而實現提公升資料處理速度的目的。在實際的生產和應用中,降維在一定的資訊損失範圍內,可以為我們節省大量的時間和成本。降維也成為了應用非常廣泛的資料預處理方法。1 使得資料集更易使用 2 降低演...
鏈結分析演算法之 SALSA演算法
salsa演算法的初衷希望能夠結合pagerank和hits演算法兩者的主要特點,既可以利用hits演算法與查詢相關的特點,也可以採納pagerank的 隨機遊走模型 這是salsa演算法提出的背景。由此可見,salsa演算法融合了pagerank和hits演算法的基本思想,從實際效果來說,很多實驗...