1 收集用戶偏好
2 找到相似的用戶或物品
3 推薦相似用戶喜歡的,或是相似物品給用戶
用戶偏好收集
相似性的度量
1 歐幾里得距離,越小則相似度越高。
2 皮爾遜相關係數, 衡量兩個定距變量間聯繫的緊密程度,在區間[-1,+1]上,越接近+1則越相似
3 餘弦相似度,多用於計算文檔數據的相似度,角度越小則越相似。
4 Tanimoto係數, 餘弦相似度的改良版本,角度越小則越相似。
相似鄰居的計算
推薦(兩種推薦使用的是相同的數據)
以上兩者的比較
1 計算複雜度。對於用戶數量大大超過商品數量的網站,比如電商,電影,音樂網站等,Item CF的計算量較小,同時不必頻繁更新。而對於微博、新聞、博客等系統,用戶的數量相對固定,而推薦的商品是海量並且頻繁更新的,這時從計算的角度講,User CF更合適。
2 另外一點,在非社交類型的網站中,使用“某某與你有相同的興趣,因此推薦了他喜歡的**”,對用戶的解釋性不強,而相對的,如果是社交屬性的網站,用User CF則具有很強的解釋性。
3 推薦的多樣性。對於單一用戶來說,User CF因爲選了多個相似的用戶喜歡的,所以推薦的商品的類別會比較多,而Item CF只是推薦和以前看過最相似的東西,相對會比較單調。對於整個系統來說,要考慮推薦的覆蓋率(coverage),User CF考察用戶的相似度,所以會更傾向於推薦一些熱門物品(最多用戶接觸),而Item CF因爲來自於物品間的相似性,所以更容易推薦長尾中的商品。
4 對於用戶的適應性。用戶是接受推薦的終端,用戶的接受程度纔是衡量推薦系統的最重要標準。對於User CF,如果一個用戶他沒有興趣相似的朋友,那麼系統找到的鄰居其實並不是那麼符合用戶的興趣,這樣推薦的效果就會很差。對於Item CF,如果一個用戶本身就對看過的商品不再感興趣,他就不滿足Item CF的基本假設,推薦的效果自然也會很差。
--------------------------------------這裏有一條分割線--------------------------------------------
下面引用原文中的一個例子來說明,
如果你對推薦的多樣性還心存疑惑,那麼下面我們再舉個實例看看 User CF 和 Item CF 的多樣性到底有什麼差別。首先,假設每個用戶興趣愛好都是廣泛的,喜歡好幾個領域的東西,不過每個用戶肯定也有一個主要的領域,對這個領域會比其他領域更加關心。給定一個用戶,假設他喜歡 3 個領域 A,B,C,A 是他喜歡的主要領域,這個時候我們來看 User CF 和 Item CF 傾向於做出什麼推薦:如果用 User CF, 它會將 A,B,C 三個領域中比較熱門的東西推薦給用戶;而如果用 ItemCF,它會基本上只推薦 A 領域的東西給用戶。所以我們看到因爲 User CF 只推薦熱門的,所以它在推薦長尾裏項目方面的能力不足;而 Item CF 只推薦 A 領域給用戶,這樣他有限的推薦列表中就可能包含了一定數量的不熱門的長尾物品,同時 Item CF 的推薦對這個用戶而言,顯然多樣性不足。但是對整個系統而言,因爲不同的用戶的主要興趣點不同,所以系統的覆蓋率會比較好。
從上面的分析,可以很清晰的看到,這兩種推薦都有其合理性,但都不是最好的選擇,因此他們的精度也會有損失。其實對這類系統的最好選擇是,如果系統給這個用戶推薦 30 個物品,既不是每個領域挑選 10 個最熱門的給他,也不是推薦 30 個 A 領域的給他,而是比如推薦 15 個 A 領域的給他,剩下的 15 個從 B,C 中選擇。所以結合 User CF 和 Item CF 是最優的選擇,結合的基本原則就是當採用 Item CF 導致系統對個人推薦的多樣性不足時,我們通過加入 User CF 增加個人推薦的多樣性,從而提高精度,而當因爲採用 User CF 而使系統的整體多樣性不足時,我們可以通過加入 Item CF 增加整體的多樣性,同樣同樣可以提高推薦的精度。
參考文獻地址 IBM developerWorks:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/