一、協(xié)同過濾基本思想
舉個例子,某天你想去看電影,但又不知道看哪部,想請朋友推薦,大部分會傾向于去問與自己有相同偏好的朋友,因為這類朋友推薦的電影很大可能性你也 會喜歡。協(xié)同過濾就是基于這種思想,偏好相似的用戶喜歡的物品或內(nèi)容也是相似的。該推薦算法是基于用戶對物品的偏好信息,衡量用戶之間的相似性或物品之間 的相似性,然后進(jìn)行推薦,將相似用戶喜歡的物品推薦給當(dāng)前用戶,或基于當(dāng)前用戶的喜好將相似物品推薦給用戶。以上這兩種就是常見的基于用戶的協(xié)同過濾和基 于物品的協(xié)同過濾。
二、常用的距離度量
如何衡量用戶之間、物品之間的相似性呢?我們用距離來刻畫相似性,距離越小,說明相似性越高,距離越大,說明相似性越低。常用的距離度量有歐式距離、余弦距離等。
由于距離在很多算法中均會用到,比如分類算法、聚類算法等,我們會有個專門的章節(jié)來介紹距離度量。
三、基于用戶的協(xié)同過濾
我們以上圖為例來簡要說明基于用戶的協(xié)同過濾是如何工作的。用戶A偏好物品A,用戶B偏好物品A、B、C,用戶C偏好物品B、C,我們將其轉(zhuǎn)換為以下的表格:
用戶物品A物品B物品C
用戶A100
用戶B111
用戶C011
假設(shè)我們要對用戶C進(jìn)行推薦,基于歐式距離,計算用戶C與用戶A、用戶B的距離(每一行代表一個用戶的偏好信息),發(fā)現(xiàn)用戶C與用戶B的距離最小,相似度最高,說明他們的偏好比較一致,可將用戶B偏好的而用戶C還沒有偏好的物品A推薦給用戶C。
四、基于物品的協(xié)同過濾
接下來我們以上圖為例來簡要說明基于物品的協(xié)同過濾是如何工作的。用戶A偏好物品A,用戶B偏好物品B、物品C,用戶C偏好物品C,同樣地,我們將其轉(zhuǎn)為表格形式:
用戶物品A物品B物品C
用戶A100
用戶B011
用戶C001
假設(shè)我們想推薦物品B,基于歐式距離計算物品B與物品A、物品C之間的距離(每一列代表一個物品的信息),發(fā)現(xiàn)物品B與物品C的距離最小,相似性最高,說明物品B、C比較相似,可能是同類產(chǎn)品,我們可將物品B推薦給喜歡物品C卻還沒對物品B表示出偏好的用戶C。
五、協(xié)同過濾的基本步驟
STEP1 : 收集數(shù)據(jù)
收集用戶對物品的偏好信息,主要包含以下內(nèi)容:
顯式的用戶反饋:用戶在瀏覽、使用網(wǎng)站以外,顯式提供的反饋信息,比如用戶對物品的評分、評論等;
隱式的用戶反饋:用戶在瀏覽、使用網(wǎng)站時產(chǎn)生的數(shù)據(jù),隱式地反映了用戶的偏好,比如訂購信息、瀏覽信息等;
用戶表達(dá)偏好的方式有很多種,不同應(yīng)用也是大不相同的。比如對文章的轉(zhuǎn)發(fā)、收藏,對活動的投票等也是顯式的偏好反饋,用戶瀏覽網(wǎng)站時停留時間也是一種隱式的反饋,不過這一個指標(biāo)的噪聲較大。
STEP2 : 數(shù)據(jù)預(yù)處理
如何整合顯式、隱式的偏好反饋信息呢?有以下兩種方法。
分組:顯式反饋為一組,隱式反饋為一組,然后基于不同的行為組別分別計算用戶之間或物品之間的相似度;亞馬遜上在商品詳情頁進(jìn)行推薦時一般都會有‘購買此商品的顧客也同時購買’和‘看過此商品后顧客買的其他商品’這兩種方式的推薦;
加權(quán):根據(jù)不同行為反映的偏好程度進(jìn)行加權(quán),顯式反饋的權(quán)重大,隱式權(quán)重小,得到用戶對物品的總體偏好;
整合后如何進(jìn)行數(shù)據(jù)預(yù)處理呢?
減噪:這些偏好反饋信息可能會存在大量的噪聲,可應(yīng)用常用的減噪算法進(jìn)行清洗,或作離群點識別等;
歸一化: 不同偏好行為對應(yīng)的數(shù)據(jù)的量綱會有很大的差別,需統(tǒng)一量綱;
聚類:在用戶數(shù)或物品數(shù)很大的情況下,可先對用戶和物品進(jìn)行聚類,形成用戶群和物品群,將單個用戶對單個物品的偏好轉(zhuǎn)換為某個用戶群對某個物品群的偏好,可降低整個推薦算法的計算量,當(dāng)然推薦精度也會受影響;
STEP3 : 最近鄰搜索
基于用戶的協(xié)同過濾:計算用戶之間的相似性,找到與當(dāng)前用戶最相似的N個用戶,如果在數(shù)據(jù)預(yù)處理中進(jìn)行了聚類,就計算用戶群之間的相似性,找到最鄰近的N個用戶群;
基于物品的協(xié)調(diào)過濾:計算物品之間的相似性,找到與當(dāng)前物品最相似的N個物品,同樣的,如果進(jìn)行了聚類,就計算物品群之間的相似性,找到最鄰近的N個物品群;
STEP4 : 進(jìn)行推薦
基于用戶的協(xié)同過濾:將最近鄰用戶(群)中出現(xiàn)頻次較高并且還未出現(xiàn)在當(dāng)前用戶偏好列表中的物品推薦給當(dāng)前用戶;
基于物品的協(xié)同過濾:根據(jù)當(dāng)前用戶的偏好列表,將最相似的物品推薦給用戶;
六、應(yīng)用場景
基于用戶的協(xié)調(diào)過濾和基于物品的協(xié)調(diào)過濾都能達(dá)到不錯的效果,但在應(yīng)用場景上會存在一定的區(qū)別。如果一個電商網(wǎng)站,用戶的數(shù)量遠(yuǎn)超物品的數(shù)量, 同時物品信息相對穩(wěn)定,在這種情況下基于物品的協(xié)同過濾算法更合適,不僅計算量小,而且不用頻繁更新;如果是一個新聞或者是博客網(wǎng)站,內(nèi)容數(shù)據(jù)偏多且不斷 更新,這時候可采用基于用戶的協(xié)同過濾。從計算的復(fù)雜度來講,這兩個算法各有優(yōu)勢,我們要根據(jù)不同系統(tǒng)的各自特點去選擇。