推薦算法--協(xié)同過濾

什么是協(xié)同過濾

協(xié)同過濾推薦(Collaborative Filtering recommendation)是在信息過濾和信息系統(tǒng)中正迅速成為一項(xiàng)很受歡迎的技術(shù)。與傳統(tǒng)的基于內(nèi)容過濾直接分析內(nèi)容進(jìn)行推薦不同盹靴,協(xié)同過濾分析用戶興趣函喉,在用戶群中找到指定用戶的相似(興趣)用戶忠寻,綜合這些相似用戶對某一信息的評價(jià)做裙,形成系統(tǒng)對該指定用戶對此信息的喜好程度預(yù)測鞍泉。

協(xié)同過濾是迄今為止最成功的推薦系統(tǒng)技術(shù)疑苫,被應(yīng)用在很多成功的推薦系統(tǒng)中。電子商務(wù)推薦系統(tǒng)可根據(jù)其他用戶的評論信息畔柔,采用協(xié)同過濾技術(shù)給目標(biāo)用戶推薦商品救恨。

協(xié)同過濾算法主要分為基于啟發(fā)式基于模型式兩種。

其中释树,基于啟發(fā)式的協(xié)同過濾算法,又可以分為基于用戶的協(xié)同過濾算法(User-Based)和基于項(xiàng)目的協(xié)同過濾算法(Item-Based)擎淤。

  • 啟發(fā)式協(xié)同過濾算法主要包含3個(gè)步驟:
    1)收集用戶偏好信息奢啥;
    2)尋找相似的商品或者用戶;
    3)產(chǎn)生推薦嘴拢。

“巧婦難為無米之炊”桩盲,協(xié)同過濾的輸入數(shù)據(jù)集主要是用戶評論數(shù)據(jù)集或者行為數(shù)據(jù)集。這些數(shù)據(jù)集主要又分為顯性數(shù)據(jù)隱性數(shù)據(jù)兩種類型席吴。其中赌结,顯性數(shù)據(jù)主要是用戶打分?jǐn)?shù)據(jù),譬如用戶對商品的打分孝冒,五分制的1分柬姚,2分等。

但是庄涡,顯性數(shù)據(jù)存在一定的問題量承,譬如用戶很少參與評論,從而造成顯性打分?jǐn)?shù)據(jù)較為稀疏;用戶可能存在欺詐嫌疑或者僅給定了部分信息撕捍;用戶一旦評分拿穴,就不會(huì)去更新用戶評分分值等。

而隱性數(shù)據(jù)主要是指用戶點(diǎn)擊行為忧风、購買行為和搜索行為等默色,這些數(shù)據(jù)隱性地揭示了用戶對商品的喜好。

隱性數(shù)據(jù)也存在一定的問題狮腿,譬如如何識別用戶是為自己購買商品腿宰,還是作為禮物贈(zèng)送給朋友等。

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

用相似統(tǒng)計(jì)的方法得到具有相似愛好或者興趣的相鄰用戶蚤霞,所以稱之為以用戶為基礎(chǔ)(User-based)的協(xié)同過濾或基于鄰居的協(xié)同過濾(Neighbor-based Collaborative Filtering)酗失。

1.1方法步驟:

1.收集用戶信息
收集可以代表用戶興趣的信息。一般的網(wǎng)站系統(tǒng)使用評分的方式或是給予評價(jià)昧绣,這種方式被稱為“主動(dòng)評分”规肴。另外一種是“被動(dòng)評分”,是根據(jù)用戶的行為模式由系統(tǒng)代替用戶完成評價(jià)夜畴,不需要用戶直接打分或輸入評價(jià)數(shù)據(jù)拖刃。電子商務(wù)網(wǎng)站在被動(dòng)評分的數(shù)據(jù)獲取上有其優(yōu)勢,用戶購買的商品記錄是相當(dāng)有用的數(shù)據(jù)贪绘。
2.最近鄰搜索(Nearest neighbor search, NNS)
以用戶為基礎(chǔ)(User-based)的協(xié)同過濾的出發(fā)點(diǎn)是與用戶興趣愛好相同的另一組用戶兑牡,就是計(jì)算兩個(gè)用戶的相似度。例如:查找n個(gè)和A有相似興趣用戶税灌,把他們對M的評分作為A對M的評分預(yù)測均函。一般會(huì)根據(jù)數(shù)據(jù)的不同選擇不同的算法,目前較多使用的相似度算法有Pearson Correlation Coefficient(皮爾遜相關(guān)系數(shù))菱涤、Cosine-based Similarity(余弦相似度)苞也、Adjusted Cosine Similarity(調(diào)整后的余弦相似度)。

基于用戶(User-Based)的協(xié)同過濾算法首先要根據(jù)用戶歷史行為信息粘秆,尋找與新用戶相似的其他用戶如迟;同時(shí),根據(jù)這些相似用戶對其他項(xiàng)的評價(jià)信息預(yù)測當(dāng)前新用戶可能喜歡的項(xiàng)攻走。

給定用戶評分?jǐn)?shù)據(jù)矩陣R殷勘,基于用戶的協(xié)同過濾算法需要定義相似度函數(shù)s:U×U→R,以計(jì)算用戶之間的相似度昔搂,然后根據(jù)評分?jǐn)?shù)據(jù)和相似矩陣計(jì)算推薦結(jié)果玲销。

1.2如何選擇合適的相似度計(jì)算方法

在協(xié)同過濾中,一個(gè)重要的環(huán)節(jié)就是如何選擇合適的相似度計(jì)算方法摘符,常用的兩種相似度計(jì)算方法包括皮爾遜相關(guān)系數(shù)和余弦相似度等痒玩。皮爾遜相關(guān)系數(shù)的計(jì)算公式如下所示:

皮爾遜相關(guān)系數(shù)

其中淳附,i表示項(xiàng),例如商品蠢古;Iu表示用戶u評價(jià)的項(xiàng)集奴曙;Iv表示用戶v評價(jià)的項(xiàng)集;ru草讶,i表示用戶u對項(xiàng)i的評分洽糟;rv,i表示用戶v對項(xiàng)i的評分堕战;表示用戶u的平均評分坤溃;表示用戶v的平均評分。

另外嘱丢,余弦相似度的計(jì)算公式如下所示:

余弦相似度

1.3計(jì)算用戶u對未評分商品的預(yù)測分值

另一個(gè)重要的環(huán)節(jié)就是計(jì)算用戶u對未評分商品的預(yù)測分值薪介。首先根據(jù)上一步中的相似度計(jì)算,尋找用戶u的鄰居集N∈U越驻,其中N表示鄰居集汁政,U表示用戶集。然后缀旁,結(jié)合用戶評分?jǐn)?shù)據(jù)集记劈,預(yù)測用戶u對項(xiàng)i的評分,計(jì)算公式如下所示:

預(yù)測用戶u對項(xiàng)i的評分

其中并巍,s(u目木,u')表示用戶u和用戶u'的相似度。

1.4通過例子理解

假設(shè)有如下電子商務(wù)評分?jǐn)?shù)據(jù)集懊渡,預(yù)測用戶C對商品4的評分刽射。

電子商務(wù)評分?jǐn)?shù)據(jù)集

表中?表示評分未知剃执。根據(jù)基于用戶的協(xié)同過濾算法步驟誓禁,計(jì)算用戶C對商品4的評分,其步驟如下所示忠蝗。
(1)尋找用戶C的鄰居
從數(shù)據(jù)集中可以發(fā)現(xiàn),只有用戶A和用戶D對商品4評過分漓拾,因此候選鄰居只有2個(gè)阁最,分別為用戶A和用戶D。用戶A的平均評分為4骇两,用戶C的平均評分為3.667速种,用戶D的平均評分為3。


image.png

根據(jù)皮爾遜相關(guān)系數(shù)公式:
紅色區(qū)域計(jì)算C用戶與A用戶低千,用戶C和用戶A的相似度為:


用戶C和用戶A的相似度

藍(lán)色區(qū)域計(jì)算C用戶與D 用戶的相似度為:
C用戶與D 用戶的相似度

(2)預(yù)測用戶C對商品4的評分
根據(jù)上述評分預(yù)測公式配阵,計(jì)算用戶C對商品4的評分馏颂,如下所示:

用戶C對商品4的評分

依此類推,可以計(jì)算出其他未知的評分棋傍。

2.基于項(xiàng)目的協(xié)同過濾

以用戶為基礎(chǔ)的協(xié)同推薦算法隨著用戶數(shù)量的增多救拉,計(jì)算的時(shí)間就會(huì)變長,所以在2001年Sarwar提出了基于項(xiàng)目的協(xié)同過濾推薦算法(Item-based Collaborative Filtering Algorithms)瘫拣。以項(xiàng)目為基礎(chǔ)的協(xié)同過濾方法有一個(gè)基本的假設(shè)“能夠引起用戶興趣的項(xiàng)目亿絮,必定與其之前評分高的項(xiàng)目相似”,通過計(jì)算項(xiàng)目之間的相似性來代替用戶之間的相似性麸拄。

2.1方法步驟:

1.收集用戶信息
同以用戶為基礎(chǔ)(User-based)的協(xié)同過濾派昧。
2.針對項(xiàng)目的最近鄰搜索
先計(jì)算已評價(jià)項(xiàng)目和待預(yù)測項(xiàng)目的相似度,并以相似度作為權(quán)重拢切,加權(quán)各已評價(jià)項(xiàng)目的分?jǐn)?shù)蒂萎,得到待預(yù)測項(xiàng)目的預(yù)測值。例如:要對項(xiàng)目 A 和項(xiàng)目 B 進(jìn)行相似性計(jì)算淮椰,要先找出同時(shí)對 A 和 B 打過分的組合五慈,對這些組合進(jìn)行相似度計(jì)算,常用的算法同以用戶為基礎(chǔ)(User-based)的協(xié)同過濾实苞。
3.產(chǎn)生推薦結(jié)果
以項(xiàng)目為基礎(chǔ)的協(xié)同過濾不用考慮用戶間的差別豺撑,所以精度比較差。但是卻不需要用戶的歷史數(shù)據(jù)黔牵,或是進(jìn)行用戶識別聪轿。對于項(xiàng)目來講,它們之間的相似性要穩(wěn)定很多猾浦,因此可以離線完成工作量最大的相似性計(jì)算步驟陆错,從而降低了在線計(jì)算量,提高推薦效率金赦,尤其是在用戶多于項(xiàng)目的情形下尤為顯著音瓷。

基于項(xiàng)目(Item-Based)的協(xié)同過濾算法是常見的另一種算法。與User-Based協(xié)同過濾算法不一樣的是夹抗,Item-Based協(xié)同過濾算法計(jì)算Item之間的相似度绳慎,從而預(yù)測用戶評分。也就是說該算法可以預(yù)先計(jì)算Item之間的相似度漠烧,這樣就可提高性能杏愤。Item-Based協(xié)同過濾算法是通過用戶評分?jǐn)?shù)據(jù)和計(jì)算的Item相似度矩陣,從而對目標(biāo)Item進(jìn)行預(yù)測的已脓。

2.2相似度計(jì)算方法

和User-Based協(xié)同過濾算法類似珊楼,需要先計(jì)算Item之間的相似度。并且度液,計(jì)算相似度的方法也可以采用皮爾遜關(guān)系系數(shù)或者余弦相似度厕宗,這里給出一種電子商務(wù)系統(tǒng)常用的相似度計(jì)算方法画舌,即基于物品的協(xié)同過濾算法,其中相似度計(jì)算公式如下所示:

image.png

這里已慢,分母|N(i)|是喜歡物品i的用戶數(shù)曲聂,而分子|N(i)∩N(j)|是同時(shí)喜歡物品i和j的用戶,但是如果物品j很熱門蛇受,就會(huì)導(dǎo)致Wij很大接近于1句葵。因此避免推薦出熱門的物品,我們使用下面的公式:

基于物品的相似度

從上面的定義可以看出兢仰,在協(xié)同過濾中兩個(gè)物品產(chǎn)生相似度是因?yàn)樗麄児餐缓芏嘤脩粝矚g乍丈,也就是說每個(gè)用戶都可以通過他們的歷史興趣列表給物品“貢獻(xiàn)”相似度。

計(jì)算物品相似度首先建立用戶-物品倒排表(即對每個(gè)用戶建立一個(gè)包含他喜歡的物品的列表)把将,然后對每個(gè)用戶轻专,將他物品列表中的物品兩兩在共現(xiàn)矩陣中加1。

代碼
圖例

根據(jù)矩陣計(jì)算每兩個(gè)物品之間的相似度wij察蹲。

2.3用戶u對于物品j的興趣

得到物品之間的相似度后请垛,可以根據(jù)如下公式計(jì)算用戶u對于物品j的興趣:

用戶u對于物品j的興趣
image.png

這里N(u)是用戶喜歡的物品的集合,S(j,K)是和物品j最相似的K個(gè)物品的集合洽议,wji是物品j和i的相似度宗收,rui是用戶u對物品i的興趣。(對于隱反饋數(shù)據(jù)集亚兄,如果用戶u對物品i有過行為混稽,即可令rui=1。)該公式的含義是审胚,和用戶歷史上感興趣的物品越相似的物品匈勋,越有可能在用戶的推薦列表中獲得比較高的排名。

當(dāng)我們看到這里的時(shí)候很可能由于自己功底不足膳叨,很難看懂公式中的i∈N(u)∩S(j,K)洽洁。

我們來看另外一種計(jì)算方式:

矩陣

其中,Pa為新用戶對已有產(chǎn)品的向量菲嘴,T為物品的共現(xiàn)矩陣饿自,得到的P`a為新用戶對每個(gè)產(chǎn)品的興趣度。

那么就可以理解上述公式的i∈N(u)∩S(j,K)龄坪,我們在下面的例子中詳細(xì)講解昭雌。

2.4舉例

現(xiàn)有用戶的訪問的記錄如下圖所示:

用戶的訪問

他的共現(xiàn)矩陣為:

共現(xiàn)矩陣

通過公式計(jì)算相似度:

Wa,b

以此類推得到相似度的共現(xiàn)矩陣:

相似度的共現(xiàn)矩陣

此時(shí)若有新用戶E,訪問的a,b,d三個(gè)物品悉默,那么可以看做向量P:

向量P

那么P`為矩陣相乘:

P`

此時(shí)得到了對于用戶E城豁,c和e兩個(gè)物品的興趣度是相同的苟穆。

2.5理解公式i∈N(u)∩S(j,K)

那么現(xiàn)在我們來理解公式i∈N(u)∩S(j,K):
對于用戶E抄课,已經(jīng)訪問了a,b,d唱星,那么,N(u)={a,b,d}跟磨;還有兩個(gè)未訪問物品c,e间聊,那么j={c,e};
當(dāng)j=c時(shí)抵拘,對于和物品j最相似的K個(gè)物品的集合為{a,d,e}哎榴,那么S(j,K)={a,d,e};得出N(u)∩S(j,K)={a,d},如下圖所示:

image.png

再來看矩陣相乘中的c行僵蛛,乘以P尚蝌,實(shí)際上就是上述N(u)∩S(j,K)={a,d}的相似度求和。

image.png

同理充尉,當(dāng)j=e時(shí)飘言,對于和物品j最相似的K個(gè)物品的集合為{b,c,d},那么S(j,K)={b,c,d}驼侠;得出N(u)∩S(j,K)={b,d};如下圖所示:

image.png

再來看矩陣相乘中的e行姿鸿,乘以P,實(shí)際上就是上述N(u)∩S(j,K)={b,d}的相似度求和倒源。

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苛预,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笋熬,更是在濱河造成了極大的恐慌热某,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件突诬,死亡現(xiàn)場離奇詭異苫拍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旺隙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門绒极,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔬捷,你說我怎么就攤上這事垄提。” “怎么了周拐?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵铡俐,是天一觀的道長。 經(jīng)常有香客問我妥粟,道長审丘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任勾给,我火速辦了婚禮滩报,結(jié)果婚禮上锅知,老公的妹妹穿的比我還像新娘。我一直安慰自己脓钾,他們只是感情好售睹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著可训,像睡著了一般昌妹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上握截,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天飞崖,我揣著相機(jī)與錄音,去河邊找鬼谨胞。 笑死蚜厉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畜眨。 我是一名探鬼主播昼牛,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼康聂!你這毒婦竟也來了贰健?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤恬汁,失蹤者是張志新(化名)和其女友劉穎伶椿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氓侧,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脊另,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了约巷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎痛。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖独郎,靈堂內(nèi)的尸體忽然破棺而出踩麦,到底是詐尸還是另有隱情,我是刑警寧澤氓癌,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布谓谦,位于F島的核電站,受9級特大地震影響贪婉,放射性物質(zhì)發(fā)生泄漏反粥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望才顿。 院中可真熱鬧践剂,春花似錦、人聲如沸娜膘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竣贪。三九已至,卻和暖如春巩螃,著一層夾襖步出監(jiān)牢的瞬間演怎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工避乏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爷耀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓拍皮,卻偏偏與公主長得像歹叮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子铆帽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容