協(xié)同過濾算法原理分析

協(xié)同過濾推薦算法應(yīng)用于預(yù)測和推薦。算法通過對(duì)用戶歷史行為數(shù)據(jù)的挖掘發(fā)現(xiàn)用戶的偏好兴猩,基于不同的偏好對(duì)用戶進(jìn)行群組劃分并推薦品味相似的商品埂陆。協(xié)同過濾推薦算法分為兩類,分別是基于用戶的協(xié)同過濾算法(user-based collaboratIve filtering)呐赡,和基于物品的協(xié)同過濾算法(item-based collaborative filtering)退客。簡單的說就是:人以類聚,物以群分链嘀。

如果你現(xiàn)在想看個(gè)電影攀细,但你不知道具體看哪部捌省,你會(huì)怎么做?大部分的人會(huì)問問周圍的朋友,看看最近有什么好看的電影推薦缚态,而我們一般更傾向于從口味比較類似的朋友那里得到推薦蓝谨。這就是協(xié)同過濾的核心思想垛玻。

基于用戶的協(xié)同過濾算法(user-based collaboratIve filtering)

基于用戶的協(xié)同過濾算法是通過用戶的歷史行為數(shù)據(jù)發(fā)現(xiàn)用戶對(duì)商品或內(nèi)容的喜歡(如商品購買摹察,收藏,內(nèi)容評(píng)論或分享)碧囊,并對(duì)這些喜好進(jìn)行度量和打分树灶。根據(jù)不同用戶對(duì)相同商品或內(nèi)容的態(tài)度和偏好程度計(jì)算用戶之間的關(guān)系。在有相同喜好的用戶間進(jìn)行商品推薦糯而。簡單的說就是如果A,B兩個(gè)用戶都購買了x,y,z三本圖書天通,并且給出了5星的好評(píng)。那么A和B就屬于同一類用戶熄驼∠窈可以將A看過的圖書w也推薦給用戶B烘豹。

1、尋找偏好相似的用戶

我們模擬了5個(gè)用戶對(duì)兩件商品的評(píng)分诺祸,來說明如何通過用戶對(duì)不同商品的態(tài)度和偏好尋找相似的用戶携悯。在示例中,5個(gè)用戶分別對(duì)兩件商品進(jìn)行了評(píng)分筷笨。這里的分值可能表示真實(shí)的購買憔鬼,也可以是用戶對(duì)商品不同行為的量化指標(biāo)。例如胃夏,瀏覽商品的次數(shù)轴或,向朋友推薦商品,收藏仰禀,分享照雁,或評(píng)論等等。這些行為都可以表示用戶對(duì)商品的態(tài)度和偏好程度答恶。

從表格中很難直觀發(fā)現(xiàn)5個(gè)用戶間的聯(lián)系饺蚊,我們將5個(gè)用戶對(duì)兩件商品的評(píng)分用散點(diǎn)圖表示出來后,用戶間的關(guān)系就很容易發(fā)現(xiàn)了亥宿。在散點(diǎn)圖中卸勺,Y軸是商品1的評(píng)分,X軸是商品2的評(píng)分烫扼,通過用戶的分布情況可以發(fā)現(xiàn),A,C,D三個(gè)用戶距離較近碍庵。用戶A(3.3 6.5)和用戶C(3.6 6.3)映企,用戶D(3.4 5.8)對(duì)兩件商品的評(píng)分較為接近。而用戶E和用戶B則形成了另一個(gè)群體静浴。

散點(diǎn)圖雖然直觀堰氓,但無法投入實(shí)際的應(yīng)用,也不能準(zhǔn)確的度量用戶間的關(guān)系苹享。因此我們需要通過數(shù)字對(duì)用戶的關(guān)系進(jìn)行準(zhǔn)確的度量双絮,并依據(jù)這些關(guān)系完成商品的推薦。

歐幾里德距離評(píng)價(jià)

歐幾里德距離評(píng)價(jià)是一個(gè)較為簡單的用戶關(guān)系評(píng)價(jià)方法得问。原理是通過計(jì)算兩個(gè)用戶在散點(diǎn)圖中的距離來判斷不同的用戶是否有相同的偏好囤攀。以下是歐幾里德距離評(píng)價(jià)的計(jì)算公式。

通過公式我們獲得了5個(gè)用戶相互間的歐幾里德系數(shù)宫纬,也就是用戶間的距離焚挠。系數(shù)越小表示兩個(gè)用戶間的距離越近,偏好也越是接近漓骚。不過這里有個(gè)問題蝌衔,太小的數(shù)值可能無法準(zhǔn)確的表現(xiàn)出不同用戶間距離的差異榛泛,因此我們對(duì)求得的系數(shù)取倒數(shù),使用戶間的距離約接近噩斟,數(shù)值越大曹锨。在下面的表格中,可以發(fā)現(xiàn)剃允,用戶A&C用戶A&D和用戶C&D距離較近沛简。同時(shí)用戶B&E的距離也較為接近。與我們前面在散點(diǎn)圖中看到的情況一致硅急。

皮爾遜相關(guān)度評(píng)價(jià)

皮爾遜相關(guān)度評(píng)價(jià)是另一種計(jì)算用戶間關(guān)系的方法覆享。他比歐幾里德距離評(píng)價(jià)的計(jì)算要復(fù)雜一些,但對(duì)于評(píng)分?jǐn)?shù)據(jù)不規(guī)范時(shí)皮爾遜相關(guān)度評(píng)價(jià)能夠給出更好的結(jié)果营袜。以下是一個(gè)多用戶對(duì)多個(gè)商品進(jìn)行評(píng)分的示例撒顿。這個(gè)示例比之前的兩個(gè)商品的情況要復(fù)雜一些,但也更接近真實(shí)的情況荚板。我們通過皮爾遜相關(guān)度評(píng)價(jià)對(duì)用戶進(jìn)行分組凤壁,并推薦商品。

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

皮爾遜相關(guān)系數(shù)的計(jì)算公式如下跪另,結(jié)果是一個(gè)在-1與1之間的系數(shù)拧抖。該系數(shù)用來說明兩個(gè)用戶間聯(lián)系的強(qiáng)弱程度。

相關(guān)系數(shù)的分類

0.8-1.0 極強(qiáng)相關(guān)

0.6-0.8 強(qiáng)相關(guān)

0.4-0.6 中等程度相關(guān)

0.2-0.4 弱相關(guān)

0.0-0.2 極弱相關(guān)或無相關(guān)

通過計(jì)算5個(gè)用戶對(duì)5件商品的評(píng)分我們獲得了用戶間的相似度數(shù)據(jù)免绿。這里可以看到用戶A&B唧席,C&D,C&E和D&E之間相似度較高嘲驾。下一步淌哟,我們可以依照相似度對(duì)用戶進(jìn)行商品推薦。

2辽故、為相似的用戶提供推薦物品

為用戶C推薦商品

當(dāng)我們需要對(duì)用戶C推薦商品時(shí)徒仓,首先我們檢查之前的相似度列表,發(fā)現(xiàn)用戶C和用戶D和E的相似度較高誊垢。換句話說這三個(gè)用戶是一個(gè)群體掉弛,擁有相同的偏好。因此喂走,我們可以對(duì)用戶C推薦D和E的商品殃饿。但這里有一個(gè)問題。我們不能直接推薦前面商品1-商品5的商品缴啡。因?yàn)檫@這些商品用戶C以及瀏覽或者購買過了壁晒。不能重復(fù)推薦。因此我們要推薦用戶C還沒有瀏覽或購買過的商品。

加權(quán)排序推薦

我們提取了用戶D和用戶E評(píng)價(jià)過的另外5件商品A—商品F的商品秒咐。并對(duì)不同商品的評(píng)分進(jìn)行相似度加權(quán)谬晕。按加權(quán)后的結(jié)果對(duì)5件商品進(jìn)行排序,然后推薦給用戶C携取。這樣攒钳,用戶C就獲得了與他偏好相似的用戶D和E評(píng)價(jià)的商品。而在具體的推薦順序和展示上我們依照用戶D和用戶E與用戶C的相似度進(jìn)行排序雷滋。

以上是基于用戶的協(xié)同過濾算法不撑。這個(gè)算法依靠用戶的歷史行為數(shù)據(jù)來計(jì)算相關(guān)度。也就是說必須要有一定的數(shù)據(jù)積累(冷啟動(dòng)問題)晤斩。對(duì)于新網(wǎng)站或數(shù)據(jù)量較少的網(wǎng)站焕檬,還有一種方法是基于物品的協(xié)同過濾算法。

基于物品的協(xié)同過濾算法(item-based collaborative filtering)

基于物品的協(xié)同過濾算法與基于用戶的協(xié)同過濾算法很像澳泵,將商品和用戶互換实愚。通過計(jì)算不同用戶對(duì)不同物品的評(píng)分獲得物品間的關(guān)系⊥酶ǎ基于物品間的關(guān)系對(duì)用戶進(jìn)行相似物品的推薦腊敲。這里的評(píng)分代表用戶對(duì)商品的態(tài)度和偏好。簡單來說就是如果用戶A同時(shí)購買了商品1和商品2维苔,那么說明商品1和商品2的相關(guān)度較高碰辅。當(dāng)用戶B也購買了商品1時(shí),可以推斷他也有購買商品2的需求介时。

1没宾、尋找相似的物品

表格中是兩個(gè)用戶對(duì)5件商品的評(píng)分。在這個(gè)表格中我們用戶和商品的位置進(jìn)行了互換沸柔,通過兩個(gè)用戶的評(píng)分來獲得5件商品之間的相似度情況榕吼。單從表格中我們依然很難發(fā)現(xiàn)其中的聯(lián)系,因此我們選擇通過散點(diǎn)圖進(jìn)行展示勉失。

在散點(diǎn)圖中,X軸和Y軸分別是兩個(gè)用戶的評(píng)分原探。5件商品按照所獲的評(píng)分值分布在散點(diǎn)圖中乱凿。我們可以發(fā)現(xiàn),商品1,3,4在用戶A和B中有著近似的評(píng)分咽弦,說明這三件商品的相關(guān)度較高徒蟆。而商品5和2則在另一個(gè)群體中。

歐幾里德距離評(píng)價(jià)

在基于物品的協(xié)同過濾算法中型型,我們依然可以使用歐幾里德距離評(píng)價(jià)來計(jì)算不同商品間的距離和關(guān)系段审。以下是計(jì)算公式。

通過歐幾里德系數(shù)可以發(fā)現(xiàn)闹蒜,商品間的距離和關(guān)系與前面散點(diǎn)圖中的表現(xiàn)一致寺枉,商品1,3,4距離較近關(guān)系密切抑淫。商品2和商品5距離較近。

皮爾遜相關(guān)度評(píng)價(jià)

我們選擇使用皮爾遜相關(guān)度評(píng)價(jià)來計(jì)算多用戶與多商品的關(guān)系計(jì)算姥闪。下面是5個(gè)用戶對(duì)5件商品的評(píng)分表始苇。我們通過這些評(píng)分計(jì)算出商品間的相關(guān)度。

皮爾遜相關(guān)度計(jì)算公式

通過計(jì)算可以發(fā)現(xiàn)筐喳,商品1&2催式,商品3&4,商品3&5和商品4&5相似度較高避归。下一步我們可以依據(jù)這些商品間的相關(guān)度對(duì)用戶進(jìn)行商品推薦荣月。

2、為用戶提供基于相似物品的推薦

這里我們遇到了和基于用戶進(jìn)行商品推薦相同的問題梳毙,當(dāng)需要對(duì)用戶C基于商品3推薦商品時(shí)哺窄,需要一張新的商品與已有商品間的相似度列表。在前面的相似度計(jì)算中顿天,商品3與商品4和商品5相似度較高堂氯,因此我們計(jì)算并獲得了商品4,5與其他商品的相似度列表。

以下是通過計(jì)算獲得的新商品與已有商品間的相似度數(shù)據(jù)牌废。

加權(quán)排序推薦

這里是用戶C已經(jīng)購買過的商品4,5與新商品A,B,C直接的相似程度咽白。我們將用戶C對(duì)商品4,5的評(píng)分作為權(quán)重。對(duì)商品A,B,C進(jìn)行加權(quán)排序鸟缕。用戶C評(píng)分較高并且與之相似度較高的商品被優(yōu)先推薦晶框。

算法總結(jié)

優(yōu)點(diǎn):

(1)能夠過濾機(jī)器難以自動(dòng)內(nèi)容分析的信息,如藝術(shù)品懂从,音樂等授段。

(2)共用其他人的經(jīng)驗(yàn),避免了內(nèi)容分析的不完全或不精確番甩,并且能夠基于一些復(fù)雜的侵贵,難以表述的概念(如信息質(zhì)量、個(gè)人品味)進(jìn)行過濾缘薛。

(3)有推薦新信息的能力窍育。可以發(fā)現(xiàn)內(nèi)容上完全不相似的信息宴胧,用戶對(duì)推薦信息的內(nèi)容事先是預(yù)料不到的漱抓。可以發(fā)現(xiàn)用戶潛在的但自己尚未發(fā)現(xiàn)的興趣偏好恕齐。

(4)推薦個(gè)性化乞娄、自動(dòng)化程度高、能夠有效的利用其他相似用戶的回饋信息、加快個(gè)性化學(xué)習(xí)的速度仪或。

缺點(diǎn):

(1)系統(tǒng)開始時(shí)推薦質(zhì)量較差确镊;

(2)質(zhì)量取決于歷史數(shù)據(jù)集;

(3)稀疏性問題(Sparsity)溶其;

(4)系統(tǒng)延伸性問題(Scalability)骚腥;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓶逃,隨后出現(xiàn)的幾起案子束铭,更是在濱河造成了極大的恐慌,老刑警劉巖厢绝,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件契沫,死亡現(xiàn)場離奇詭異,居然都是意外死亡昔汉,警方通過查閱死者的電腦和手機(jī)懈万,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶病,“玉大人会通,你說我怎么就攤上這事÷χ埽” “怎么了涕侈?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長煤辨。 經(jīng)常有香客問我裳涛,道長,這世上最難降的妖魔是什么众辨? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任端三,我火速辦了婚禮,結(jié)果婚禮上鹃彻,老公的妹妹穿的比我還像新娘郊闯。我一直安慰自己,他們只是感情好蛛株,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布虚婿。 她就那樣靜靜地躺著,像睡著了一般泳挥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上至朗,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天屉符,我揣著相機(jī)與錄音,去河邊找鬼。 笑死矗钟,一個(gè)胖子當(dāng)著我的面吹牛唆香,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吨艇,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躬它,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了东涡?” 一聲冷哼從身側(cè)響起冯吓,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疮跑,沒想到半個(gè)月后组贺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祖娘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年失尖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渐苏。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掀潮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出琼富,到底是詐尸還是另有隱情仪吧,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布公黑,位于F島的核電站邑商,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凡蚜。R本人自食惡果不足惜人断,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朝蜘。 院中可真熱鬧恶迈,春花似錦、人聲如沸谱醇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽副渴。三九已至奈附,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煮剧,已是汗流浹背斥滤。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工将鸵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人佑颇。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓顶掉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挑胸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痒筒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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