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