推薦系統:協同過濾 之 Item-based Collaborative Filtering
說起 Item-based collaborative filtering,還有一段有意思的爭論,是關於它的起源的。
GroupLens 研究小組的 Sarwar 教授等人,於2001年5月在香港召開的第 10 屆 WWW 大會上,發表了題為《Item-based Collaborative Filtering Recommendation Algorithms》的 paper[1]。現在看來,這篇 paper 在 Item-based Collaborative Filtering 方面是影響最廣的,被引用的次數也最多,基本上見 Item-based 必見此文。在 2000 的時候,同是上文作者之一的 Karypis 曾經完成了《Evaluation of Item-based Top-N Recommendation Algorithms》,但它僅作為明尼蘇達計算機系的一篇 Technical Report 進行了發表,可以看作是 paper[1] 的工作基礎。
但實際上,早在 1998 年,Amazon 就已經開發出了自己的 Item-based 推薦系統,並投入了使用。同年,當時 Amazon 推薦系統的設計師、現在 Findory 的創始人 Greg,連同 Jacobi 和 Benson,使用“Collaborative Recommendations Using Item-to-Item Similarity Mappings”的名字對該項技術申請了專利。但該專利直到 2001 年才正式通過!並且在 Sarwar 等人的 paper[1] 裡,並沒有標明引用了此專利的內容。Greg 在自己的 blog 上專門撰文說明了此事 [1] [2],並得到了 Economist 編輯 Tom Standage 的承認。在 2003 年,Greg 發表了題為《Amazon.com Recommendations: Item-to-Item Collaborative Filtering》的 paper,對 1998 年的專利內容進行了詳細的說明。
這是一段挺有意思的事情。但更能引起我興趣的,是這項已經被實踐證明確實行之有效的技術——Item-based (or item-to-item) collaborative filtering !
Item-based 方法也有一個基本的假設:能夠引起使用者興趣的項,必定與其之前評分高的項相似。這個假設也是與我們日常生活中的行為相一致的,基本上喜歡《長尾理論》的人,都會去看《世界是平的》,不知道你怎麼想,反正豆瓣就是這麼認為的。
同 User-based 方法類似,Item-based 方法需要同樣的三個步驟:1)得到User-item的評分資料;2)針對項的最近鄰搜尋,即對項進行相似度計算;3)產生推薦。但相對於 User-based 方法,Item-based 方法最大的改進是提高了協同過濾方法的擴充套件性及效能。
從上一篇中可以看到,在 User-based 方法中,隨著使用者數量的不斷增多,在大數量級的使用者範圍內進行“最近鄰搜尋”會成為整個演算法的瓶頸。Item-based 方法通過計算項之間的相似性來代替使用者之間的相似性。對於項來講,它們之間的相似性要穩定很多,因此可以離線完成工作量最大的相似性計算步驟,從而大大降低了線上計算量,提高推薦效率。
在 Item-based 方法中,要對 A 和 B 進行項相似性計算,通常分為兩步:1)找出同時對 A 和 B 打過分的組合;2)對這些組合進行相似度計算,常用的演算法包括:皮爾森相關係數、餘弦相似性、調整餘弦相似性和條件概率等。
在 paper[1] 裡,Sarwar 教授通過試驗得到 Item-based 方法的推薦效果要略好於 User-based 方法的結倫。但其實這也並不盡然。在 2003 年,Mild 教授從批判的角度重新審視了各種推薦演算法,指出基於 Item-based 方法並不一定好,演算法準確度與採用的實驗資料資料有關,大多數情況下還是 User-based 方法好。我個人倒是認為,其實沒有絕對的好壞之分,而應該根據問題的不同和資料集的特點,選擇最合適的方法。
上面所說的偏重於學術界一些,演算法的出發點還是基於打分,多數使用的是 MovieLens 的資料。工業界實際使用的多是在基本 Item-based 方法基礎上的變形,例如基於關聯規則的方法,這些方法最大的變化就是在計算項的相似度方面做文章。其實正如 Greg 曾經說過的,協同過濾最大的特點是“以資料為先”的,只當有了大量的資料積累,才可能找到最有效的、最適宜的方法。