什么是協(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ì)算公式如下所示:
其中淳附,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ì)算公式如下所示:
其中并巍,s(u目木,u')表示用戶u和用戶u'的相似度。
1.4通過例子理解
假設(shè)有如下電子商務(wù)評分?jǐn)?shù)據(jù)集懊渡,預(yù)測用戶C對商品4的評分刽射。
表中?表示評分未知剃执。根據(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。
根據(jù)皮爾遜相關(guān)系數(shù)公式:
紅色區(qū)域計(jì)算C用戶與A用戶低千,用戶C和用戶A的相似度為:
藍(lán)色區(qū)域計(jì)算C用戶與D 用戶的相似度為:
(2)預(yù)測用戶C對商品4的評分
根據(jù)上述評分預(yù)測公式配阵,計(jì)算用戶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ì)算公式如下所示:
這里已慢,分母|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的興趣:
這里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)矩陣為:
通過公式計(jì)算相似度:
以此類推得到相似度的共現(xiàn)矩陣:
此時(shí)若有新用戶E,訪問的a,b,d三個(gè)物品悉默,那么可以看做向量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},如下圖所示:
再來看矩陣相乘中的c行僵蛛,乘以P尚蝌,實(shí)際上就是上述N(u)∩S(j,K)={a,d}的相似度求和。
同理充尉,當(dāng)j=e時(shí)飘言,對于和物品j最相似的K個(gè)物品的集合為{b,c,d},那么S(j,K)={b,c,d}驼侠;得出N(u)∩S(j,K)={b,d};如下圖所示:
再來看矩陣相乘中的e行姿鸿,乘以P,實(shí)際上就是上述N(u)∩S(j,K)={b,d}的相似度求和倒源。