1. 基於用戶的協同過濾
基於用戶(User-Based)的協同過濾算法首先要根據用戶歷史行為信息,尋找與新用戶相似的其他用戶;同時,根據這些相似用戶對其他項的評價信息預測當前新用戶可能喜歡的項。給定用戶評分數據矩陣R,基於用戶的協同過濾算法需要定義相似度函數s:U×U→R,以計算用戶之間的相似度,然后根據評分數據和相似矩陣計算推薦結果。
在協同過濾中,一個重要的環節就是如何選擇合適的相似度計算方法,常用的兩種相似度計算方法包括皮爾遜相關系數和余弦相似度等。皮爾遜相關系數的計算公式如下所示:
其中,i表示項,例如商品;Iu表示用戶u評價的項集;Iv表示用戶v評價的項集;ru,i表示用戶u對項i的評分;rv,i表示用戶v對項i的評分;表示用戶u的平均評分;表示用戶v的平均評分。
另外,余弦相似度的計算公式如下所示:
另一個重要的環節就是計算用戶u對未評分商品的預測分值。首先根據上一步中的相似度計算,尋找用戶u的鄰居集N∈U, 其中N表示鄰居集,U表示用戶集。然后,結合用戶評分數據集,預測用戶u對項i的評分,計算公式如下所示:
其中,s(u, u')表示用戶u和用戶u'的相似度。
假設有如下電子商務評分數據集,預測用戶C對商品4的評分,見表3-6。
表3-6 電商網站用戶評分數據集
表中? 表示評分未知。根據基於用戶的協同過濾算法步驟,計算用戶C對商品4的評分,其步驟如下所示。
(1)尋找用戶C的鄰居
從數據集中可以發現,只有用戶A和用戶D對商品4評過分,因此候選鄰居只有2個,分別為用戶A和用戶D。用戶A的平均評分為4,用戶C的平均評分為3.667,用戶D的平均評分為3。根據皮爾遜相關系數公式來看,用戶C和用戶A的相似度為:
同理,s(C, D) =-0.515。
(2)預測用戶C對商品4的評分
根據上述評分預測公式,計算用戶C對商品4的評分,如下所示:
依此類推,可以計算出其他未知的評分。
2. 基於項目的協同過濾
基於項目(Item-Based)的協同過濾算法是常見的另一種算法。與User-Based協同過濾算法不一樣的是,Item-Based 協同過濾算法計算Item之間的相似度,從而預測用戶評分。也就是說該算法可以預先計算Item之間的相似度,這樣就可提高性能。Item-Based協同過濾算法是通過用戶評分數據和計算的Item相似度矩陣,從而對目標Item進行預測的。
和User-Based協同過濾算法類似,需要先計算Item之間的相似度。並且,計算相似度的方法也可以采用皮爾遜關系系數或者余弦相似度,這里給出一種電子商務系統常用的相似度計算方法,即基於條件概率計算Item之間的相似度,計算公式如下所示:
其中,s(i, j)表示項i和j之間的相似度;freq(ij)表示i和j共同出現的頻率;freq(i)表示i出現的頻率;freq(j)表示j出現的頻率;表示阻力因子,主要用於平衡控制流行和熱門的Item,譬如電子商務中的熱銷商品等。
接下來,根據上述計算的Item之間的相似度矩陣,結合用戶的評分,預測未知評分。預測公式如下所示:
其中,pu, i表示用戶u對項i的預測評分;S表示和項i相似的項集;s(i, j)表示項i和j之間的相似度;ru, j表示用戶u對項j的評分。