基於樸素貝葉斯的內容推薦算法

論文出處: http://www.cs.utexas.edu/~ml/papers/libra-sigir-wkshp-99.pdf

引言

這篇文章裏面將會詳細介紹基於多項式貝葉斯的內容推薦算法的符號以及術語,公式推導以及核心思想,學習如何從文本分類的角度來實現物品推薦。詳細瞭解算法過程後,你應該可以利用裏面的公式來計算出某個用戶對於單詞級別的喜好強度列表(profile),根據這個強度大小來對其他物品(需先用該強度來對該物品做加權算出該物品的喜好強度)做一個推薦的排序,從而得到用戶可能最喜歡的一些物品序列。


符號與術語

物品Item: 即用戶打分以及待推薦的對象。

Solts: Item的一些屬性,比如Item是一本書,那麼solts就可能是書的title, author, related-title, related-author, 摘要, 用戶評論等等。這些屬性初始值一般都爲自然語言文本, 需要通過一些手段對其進行處理, 比如分詞和詞幹提取等等, 最終每個solts將得到一個 a bag of words,稱作Documents,簡寫D或d.

Words: 單詞


核心思想:

將文本分類看作喜歡和不喜歡兩種分類,計算出用戶對於各slot中的單詞的喜好強度矩陣,根據這個值計算出用戶對於物品的喜好強度。



算法步驟詳解

1.物品特徵分析以及文本處理

在這個階段,需要給物品建立劃分多個屬性Solts,進行一些操作,比如合併相同或相似的Solts,

得到每個屬性的自然語言文本字符串,並對該文本進行分詞,詞幹提取等處理形成可供算法使用的Documents。

這個物品不僅僅侷限於剛纔提到的書,也可能是鏈接URL,那麼屬性可能就是URL所在網頁的關鍵詞,描述,摘要,所屬的網站等等,這個屬性的選擇根據你物品的本身特徵來決定。


2.learning a profile

在這個過程中,待分析的Item只是用戶相關聯的那些Item,因此計算量比遍歷整個數據集要小很多。這個相關可以以多種形式表現,可以是該用戶對該Item進行了評價,或者僅僅是訪問了這個鏈接URL,但是不管是何種相關方式,我們只把其看作兩個類別,喜歡和不喜歡。比如評分1-10分,那麼1-5就是喜歡,6-10就是不喜歡。如果是URL,那麼訪問了就是喜歡,否則就是不喜歡。


爲什麼只看作兩個類別?

相比於預測出物品某個屬性的評分值rating,該算法只需要得到一個物品屬性的ordered list就可以了(評分值高的排在前面),因此分類任務就轉化爲一個probabilistic binary categorization問題來預測這個物品是否是用戶喜歡的。


公式推導

另外一個需要注意的是,在這個算法模型中,物品特徵並不是a bag of words,而是 a vector of bags,因此不能直接用樸素貝葉斯來進行分類。但是針對某個solt,還是可以用多項式貝葉斯進行分類,即假設Documents的詞彙表Vocabulary爲V,  爲詞彙表中的單詞,爲類別j的概率, 那麼根據樸素貝葉斯公式:




將我們的算法模型代入(1)式子,即將D由代替, 且加上一個給定類別j這個條件,上述公式就可以轉化爲




另外根據物品是由solts組成的這一事實,可以得到物品B的概率爲組成B的所有solts的概率之積,並且這個等式在給定類別j的條件下也成立,可以推導出公式(3)




最後對於物品-solts應用樸素貝葉斯公式並將公式(3)和(2)依次代入得到最終的P(類別|物品)的概率, 推導過程如下



這裏的S是solts的數量, 是a bag of words of specific solts, 而在第m個solt中的第i個單詞。由於前面提到待分析的Item只是用戶相關聯的那些Item,即每個物品B用戶都有對應的rating評分,因此可以根據樸素貝葉斯的最大似然的方式進行參數估計,從而確定參數


符號和術語

對於用戶評分過的每個物品,因爲只有兩個類別因此物品都有兩個評分的值, 記做爲喜歡的情況,爲不喜歡的情況

具體的取值有以下兩種情況,如果是之前提到的訪問鏈接URL這種形式,那麼=1,=0

如果是評分制,假設 以區間1-10進行評分,評分值爲r,那麼, 。接下來就可以根據的值來對參數進行估計了,這裏需要一些樸素貝葉斯參數估計的知識,因此建議看這篇文章的Maximum-Likelihood estimates for the Naive Bayes Model部分了解,這裏不詳細說明,只羅列出結果公式




其中N爲總物品數,m爲solts的數量,爲物品喜歡或不喜歡的評分值,爲物品的第m個solt中單詞出現的次數。

上述公式(8)的分母可能爲0,因此必須採用smooth方法進行避免,推薦採用Laplace平滑係數,即分子+1, 分母加上N, 最終我們得到了單詞在屬性下的喜好強度列表

喜好強度計算公式如下



這個計算公式的值就反映了solt中的某個單詞對於用戶喜好起到的作用,如果上述式子>0,則用戶更傾向於喜歡該物品,而且值越大表明該單詞起到的喜歡作用越大。遍歷slots和詞彙表V調用該公式就得到了一個單詞喜好強度矩陣,如圖



有了這個矩陣我們就是對新的物品進行推薦了, 首先我們計算出新物品各solt中單詞出現的次數, 然後次數乘以這個矩陣中的強度得到用戶對於該新物品的solt的喜好強度值,然後再根據實際情況給每個solt加一個權重值,根據此權重值進行加權就得到了用戶對於該新物品的喜好強度值,一般按此值進行倒序排序呈現給用戶即可完成推薦


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