@ 2009/03/26; 2009/04/03 ;2009/04/04
因為此文原存儲地址(blog.qingyu.org)域名在國內注冊,基于一些因素考慮將部分還未失去時(shí)效性的日志轉貼此處,照成不便還請見(jiàn)諒。
這兩天讀的一本叫《Web信息架構》的書(shū)中經(jīng)常提及“協(xié)同過(guò)濾”這個(gè)字眼,我后來(lái)突然發(fā)現,原來(lái)協(xié)同過(guò)濾在現在的Web2.0網(wǎng)站中被應用得如此普遍,尤其是在社會(huì )化音樂(lè )網(wǎng)站中更是被發(fā)揮到了極致。
其中最典型的應用比如:全球最大的B2C電子商務(wù)網(wǎng)站Amazon,網(wǎng)頁(yè)資源的挖掘機Digg和StumbleUpon,社會(huì )化音樂(lè )服務(wù)Last.fm和iLike等。
下面便是這幾天對協(xié)同過(guò)濾這個(gè)概念的學(xué)習筆記。主要參考維基百科中文和英文兩個(gè)詞條。
協(xié)同過(guò)濾在我看來(lái)讓大眾用戶(hù)難以理解的并非它背后復雜的過(guò)濾算法和推薦算法,而是它一些相對晦澀的概念和原理。
簡(jiǎn)單來(lái)說(shuō)協(xié)同過(guò)濾是:推薦系統把與你臭味相投之用戶(hù)喜歡的東西推薦給你。
比如說(shuō)豆瓣用戶(hù)登陸后在首頁(yè)看到的那些由豆瓣推薦給你的電影、圖書(shū)、音樂(lè )、評論、活動(dòng)。

協(xié)同過(guò)濾便是基于這樣的假設:在一組興趣相似的用戶(hù)中,那么協(xié)同過(guò)濾便認為用戶(hù)既然在一部事物(系統數據庫中已經(jīng)存在的記錄)上有共同興趣,那么這一組用戶(hù)中一個(gè)用戶(hù)的感興趣的東西很可能也會(huì )被另一個(gè)用戶(hù)青睞。

協(xié)同過(guò)濾深諳臭味相投的道理。假設這里有由用戶(hù)A和用戶(hù)B構成的用戶(hù)組,系統已經(jīng)采集到(知道)這兩個(gè)用戶(hù)的興趣,其中用戶(hù)A對1,2,3,4非常感興趣,而用戶(hù)B對1,2,3,5亦有很大興趣。其中1,2,3是兩個(gè)用戶(hù)共同的愛(ài)好。那么協(xié)同過(guò)濾就認為4和5有可能是用戶(hù)B和用戶(hù)A感興趣的,于是將4推薦給用戶(hù)B,把5推薦給用戶(hù)A。
當然這是一個(gè)絕對簡(jiǎn)單化了的流程。事實(shí)上協(xié)同過(guò)濾要復雜得多,首先一個(gè)系統內就不僅僅存在兩個(gè)用戶(hù),而且用戶(hù)的喜好也是極其復雜的。
在完成對用戶(hù)的推薦之前,協(xié)同過(guò)濾系統需要完成對用戶(hù)興趣的采集、近鄰搜索、最終完成推薦。而協(xié)同過(guò)濾主要又分為基于用戶(hù)、基于項目和基于模型三大類(lèi)。
上面從概念層面上介紹了協(xié)同過(guò)濾的基本原理。協(xié)同過(guò)濾在目前一些主流社會(huì )化音樂(lè )服務(wù)的推薦音樂(lè )上有著(zhù)極高的地位。協(xié)同過(guò)濾一般情況下分為基于用戶(hù)和基于項目。其中以用戶(hù)為基礎的協(xié)同過(guò)濾主要通過(guò)一定算法找出和某個(gè)用戶(hù)偏好匹配的更多內容,而基于項目的協(xié)同過(guò)濾主要是要找出針對某一項目找出與其匹配的其它項目。
舉一個(gè)非常熟悉的例子:在豆瓣網(wǎng)首頁(yè)中用戶(hù)看到的“今日推薦的書(shū)、影、音……”就是一種典型的基于用戶(hù)的協(xié)同過(guò)濾,因為豆瓣網(wǎng)協(xié)同過(guò)濾算法給出的這些推薦內容是為用戶(hù)量身定做且獨一無(wú)二的,其參考了用戶(hù)自身在豆瓣網(wǎng)上的行為及其好友的行為;而在豆瓣網(wǎng)中某一條目(比如一張專(zhuān)輯)的頁(yè)面中用戶(hù)看到的“喜歡聽(tīng)"這張唱片"的人也喜歡……”就是種典型的基于項目的協(xié)同過(guò)濾,它根據用戶(hù)在豆瓣網(wǎng)上給這些內容的打分和與其它內容的關(guān)聯(lián)算出與這張專(zhuān)輯相似的專(zhuān)輯并列出來(lái)。
協(xié)同過(guò)濾在社會(huì )化音樂(lè )中得到了非常普遍的應用,下面將以L(fǎng)ast.fm和Spotify為例,在推薦表現上他們分別通過(guò)網(wǎng)頁(yè)和客戶(hù)端來(lái)呈現推薦結果。
Last.fm作為一個(gè)非常典型的網(wǎng)絡(luò )電臺,它的過(guò)濾機制也主要用在電臺服務(wù)上。

在Last.fm首頁(yè)上看到的如上界面就是一基于用戶(hù)的協(xié)同過(guò)濾非常典型的應用。
而Last.fm為用戶(hù)推薦不僅僅局限于音樂(lè ),還包括免費的MP3下載,音樂(lè )視頻和一些發(fā)生在用戶(hù)周?chē)幕顒?dòng)。
Last.fm的榜單在整個(gè)系統中得到了非常廣泛的應用,它不僅要影響那些對用戶(hù)的推薦曲目,本身也是一種協(xié)同過(guò)濾的TOPN形式。Last.fm將用戶(hù)所有聽(tīng)過(guò)的音樂(lè )進(jìn)行排序,找出用戶(hù)聽(tīng)得最多的音樂(lè )(一般情況下也默許是用戶(hù)非常喜歡的)。
Last.fm還會(huì )根據相似的音樂(lè )偏好為用戶(hù)推薦其它Last.fm用戶(hù)(在Last.fm里叫做鄰居),方便用戶(hù)知道他們鄰居正在聽(tīng)的音樂(lè )是什么,在前面那篇文章已經(jīng)提到過(guò),你鄰居喜歡的音樂(lè )會(huì )不會(huì )也是你喜歡的呢?

在完成所有推薦之前,Last.fm需要對用戶(hù)的音樂(lè )偏好進(jìn)行信息采集,Last.fm主要通過(guò)像上面這樣的“記錄用戶(hù)的收聽(tīng)歷史”來(lái)采集用戶(hù)興趣的信息。然后就可以結合其它同類(lèi)的信息完成推薦了。

Spotify并不會(huì )像Last.fm那樣會(huì )永久地保存用戶(hù)的音樂(lè )收聽(tīng)歷史,就更不用說(shuō)為用戶(hù)建立音樂(lè )數據庫了,它在客戶(hù)端首頁(yè)上的推薦一般是基于用戶(hù)最近收聽(tīng)的音樂(lè ),所以我們很容易發(fā)現Spotify的推薦清單很容易隨著(zhù)我們收聽(tīng)音樂(lè )的變化而變化。

而Spotify的TopLists則和Last.fm中的流行榜單類(lèi)似,將所有Spotify用戶(hù)的收聽(tīng)音樂(lè )記錄進(jìn)行排序。最終實(shí)現一個(gè)Spotify的流行榜單。比較特殊的是Spotify還可以排出不同國家的Spotify流行榜單。

而Spotify也同Last.fm類(lèi)似通過(guò)記錄用戶(hù)最近收聽(tīng)的音樂(lè )歷史推算出用戶(hù)可能感興趣的音樂(lè )。
有意思的是Spotify也支持通過(guò)Audioscrobbler將Spotify上播放的音樂(lè )歷史提交給用戶(hù)的Last.fm賬戶(hù),這樣在Spotify上的大量音樂(lè )記錄也可以幫助Last.fm采集的用戶(hù)信息更加完整。
在一個(gè)產(chǎn)品設計中,產(chǎn)品設計者、開(kāi)發(fā)者無(wú)論是否需要裝成用戶(hù)去思考問(wèn)題,用戶(hù)在整個(gè)Web2.0網(wǎng)站的設計哲學(xué)中都是至關(guān)重要的。尤其是那些需要用戶(hù)來(lái)為你產(chǎn)生內容的網(wǎng)站。
那么在一些寄希望通過(guò)協(xié)同過(guò)濾來(lái)為用戶(hù)提供服務(wù)的社會(huì )化音樂(lè )網(wǎng)站中,用戶(hù)的地位有多高呢?
在前面的文字中,大量的插圖告訴我們似乎協(xié)同過(guò)濾就是一件用戶(hù)的“聲音”來(lái)為用戶(hù)提供更多“聲音”的服務(wù)。如果沒(méi)有用戶(hù)參與進(jìn)來(lái),那么一切都變得難堪起來(lái)。
再復雜的協(xié)同過(guò)濾系統大致都需要經(jīng)過(guò)以上三個(gè)步驟:網(wǎng)站通過(guò)大量交互應用收集用戶(hù)對網(wǎng)站提供的服務(wù)內容的興趣偏好,然后把其它用戶(hù)的數據整合進(jìn)來(lái)進(jìn)行近鄰搜索,最終抽離掉那些無(wú)法與用戶(hù)現有興趣數據匹配的內容,生成推薦結果。
在這樣一個(gè)用戶(hù)隱私意識越來(lái)越高的環(huán)境下,網(wǎng)站想要盡可能地收集更多的用戶(hù)信息是非常困難的,網(wǎng)站向用戶(hù)索取那些可能不會(huì )被用戶(hù)意識到嚴重性的數據時(shí)需要想盡一切辦法,拐彎抹角。有像亞馬遜那樣的記錄用戶(hù)購買(mǎi)歷史,有豆瓣那樣的添星功能,也有Last.fm那樣通過(guò)插件來(lái)記錄用戶(hù)音樂(lè )播放歷史,添加標簽等途徑。
所以在一個(gè)以推薦起家的網(wǎng)站來(lái)說(shuō)如果用戶(hù)基數將直接影響網(wǎng)站的最終推薦效果,太少的用戶(hù)數據只能讓那些協(xié)同過(guò)濾算法顯得笨拙不堪。
但當用戶(hù)增加到一定程度上來(lái)時(shí),對用戶(hù)依賴(lài)程度高的協(xié)同過(guò)濾算法的計算量就開(kāi)始快速增加,幾乎是呈線(xiàn)性增長(cháng)。這極大地限制了系統的性能和響應速度,這也就限制了基于用戶(hù)的協(xié)同過(guò)濾更廣泛的應用。如果能有一種不過(guò)多依賴(lài)用戶(hù)的推薦就可以解決這個(gè)問(wèn)題了,因為強大的緩存機制可以緩減高負荷的系統壓力。而下面將要介紹的“基于項目的協(xié)同過(guò)濾”似乎就正是為這種需求而生的。

聯(lián)系客服