推薦機(jī)制(協(xié)同過濾算法)

今天要講的主要內(nèi)容是協(xié)同過濾,即Collaborative Filtering,簡稱CF

Contents

1. 協(xié)同過濾的簡介

2. 協(xié)同過濾的核心

3. 協(xié)同過濾的實(shí)現(xiàn)

1. 協(xié)同過濾的簡介

關(guān)于協(xié)同過濾的一個(gè)最經(jīng)典的例子就是看電影,有時(shí)候不知道哪一部電影是我們喜歡的或者評分比較高的,那

么通常的做法就是問問周圍的朋友,看看最近有什么好的電影推薦。在問的時(shí)候,都習(xí)慣于問跟自己口味差不

多的朋友,這就是協(xié)同過濾的核心思想。

協(xié)同過濾是在海量數(shù)據(jù)中挖掘出小部分與你品味類似的用戶,在協(xié)同過濾中,這些用戶成為鄰居,然后根據(jù)他

們喜歡的東西組織成一個(gè)排序的目錄推薦給你。所以就有如下兩個(gè)核心問題

(1)如何確定一個(gè)用戶是否與你有相似的品味?

(2)如何將鄰居們的喜好組織成一個(gè)排序目錄?

協(xié)同過濾算法的出現(xiàn)標(biāo)志著推薦系統(tǒng)的產(chǎn)生,協(xié)同過濾算法包括基于用戶和基于物品的協(xié)同過濾算法。

2. 協(xié)同過濾的核心

要實(shí)現(xiàn)協(xié)同過濾,需要進(jìn)行如下幾個(gè)步驟

(1)收集用戶偏好

(2)找到相似的用戶或者物品

(3)計(jì)算并推薦

收集用戶偏好

從用戶的行為和偏好中發(fā)現(xiàn)規(guī)律,并基于此進(jìn)行推薦,所以如何收集用戶的偏好信息成為系統(tǒng)推薦效果最基礎(chǔ)

的決定因素。用戶有很多種方式向系統(tǒng)提供自己的偏好信息,比如:評分,投票,轉(zhuǎn)發(fā),保存書簽,購買,點(diǎn)

擊流,頁面停留時(shí)間等等。

以上的用戶行為都是通用的,在實(shí)際推薦引擎設(shè)計(jì)中可以自己多添加一些特定的用戶行為,并用它們表示用戶

對物品的喜好程度。通常情況下,在一個(gè)推薦系統(tǒng)中,用戶行為都會多于一種,那么如何組合這些不同的用戶

行為呢 ?基本上有如下兩種方式

(1)將不同的行為分組

一般可以分為查看和購買,然后基于不同的用戶行為,計(jì)算不同用戶或者物品的相似度。類似與當(dāng)當(dāng)網(wǎng)或者

亞馬遜給出的“購買了該書的人還購買了”,“查看了該書的人還查看了”等等。

(2)不同行為產(chǎn)生的用戶喜好對它們進(jìn)行加權(quán)

對不同行為產(chǎn)生的用戶喜好進(jìn)行加權(quán),然后求出用戶對物品的總體喜好。

好了,當(dāng)我們收集好用戶的行為數(shù)據(jù)后,還要對數(shù)據(jù)進(jìn)行預(yù)處理,最核心的工作就是減噪歸一化

減噪:因?yàn)橛脩魯?shù)據(jù)在使用過程中可能存在大量噪音和誤操作,所以需要過濾掉這些噪音。

歸一化:不同行為數(shù)據(jù)的取值相差可能很好,例如用戶的查看數(shù)據(jù)肯定比購買數(shù)據(jù)大得多。通過歸一化,才能

使數(shù)據(jù)更加準(zhǔn)確。

通過上述步驟的處理,就得到了一張二維表,其中一維是用戶列表,另一維是商品列表,值是用戶對商品的喜

好。還是以電影推薦為例,如下表

找到相似的用戶或物品

對用戶的行為分析得到用戶的喜好后,可以根據(jù)用戶的喜好計(jì)算相似用戶和物品,然后可以基于相似用戶或物

品進(jìn)行推薦。這就是協(xié)同過濾中的兩個(gè)分支了,基于用戶的和基于物品的協(xié)同過濾。

關(guān)于相似度的計(jì)算有很多種方法,比如常用的余弦夾角,歐幾里德距離度量,皮爾遜相關(guān)系數(shù)等等。而如果采

用歐幾里德度量,那么可以用如下公式來表示相似度

在計(jì)算用戶之間的相似度時(shí),是將一個(gè)用戶對所有物品的偏好作為一個(gè)向量,而在計(jì)算物品之間的相似度時(shí),

是將所有用戶對某個(gè)物品的偏好作為一個(gè)向量。求出相似度后,接下來可以求相似鄰居了。

計(jì)算并推薦

在上面,我們求出了相鄰用戶和相鄰物品,接下來就應(yīng)該進(jìn)行推薦了。當(dāng)然從這一步開始,分為兩方面,分別

是基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。我會分別介紹它們的原理

(1)基于用戶的協(xié)同過濾算法

在上面求相似鄰居的時(shí)候,通常是求出TOP K鄰居,然后根據(jù)鄰居的相似度權(quán)重以及它們對物品的偏好,

預(yù)測當(dāng)前用戶沒有偏好的未涉及物品,計(jì)算得到一個(gè)排序的物品列表進(jìn)行推薦。

(2)基于物品的協(xié)同過濾算法

跟上述的基于用戶的協(xié)同過濾算法類似,但它從物品本身,而不是用戶角度。比如喜歡物品A的用戶都喜

歡物品C,那么可以知道物品A與物品C的相似度很高,而用戶C喜歡物品A,那么可以推斷出用戶C也可能

喜歡物品C。如下圖

上面的相似度權(quán)重有時(shí)候需要加入懲罰因子,舉個(gè)例子,在日常生活中,我們每個(gè)人購買衛(wèi)生紙的的頻率比

較高,但是不能說明這些用戶的興趣點(diǎn)相似,但是如果它們都買了照相機(jī),那么就可以大致推出它們都是攝

影愛好者。所以像衛(wèi)生紙這樣的物品在計(jì)算時(shí),相似度權(quán)重需要加上懲罰因子或者干脆直接去掉這類數(shù)據(jù)。

適用場景

對于一個(gè)在線網(wǎng)站,用戶的數(shù)量往往超過物品的數(shù)量,同時(shí)物品數(shù)據(jù)相對穩(wěn)定,因此計(jì)算物品的相似度不但

計(jì)算量小,同時(shí)不必頻繁更新。但是這種情況只適用于電子商務(wù)類型的網(wǎng)站,像新聞?lì)?,博客等這類網(wǎng)站的

系統(tǒng)推薦,情況往往是相反的,物品數(shù)量是海量的,而且頻繁更新。所以從算法復(fù)雜度角度來說,兩種算法

各有優(yōu)勢。關(guān)于協(xié)同過濾的文章,可以參考這里:http://www.tuicool.com/articles/6vqyYfR

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容