協(xié)同過濾算法研習(xí)

寫在前面

先啰嗦幾句高职,最近在看《集體智慧編程》,為了加深記憶辞州,把學(xué)習(xí)的內(nèi)容整理成文初厚,后續(xù)還會(huì)寫書中相關(guān)內(nèi)容。既然是讀書筆記孙技,且本人是推薦算法入門選手,所以內(nèi)容只能局限于此書排作。

什么是協(xié)同過濾

先舉個(gè)生活中的場(chǎng)景牵啦,你想聽歌卻不知道聽什么的時(shí)候,會(huì)向你身邊與你品位類似的朋友求助妄痪,從而獲得他的推薦哈雏。協(xié)同過濾(Collaborative Filtering,簡(jiǎn)稱CF)就像與你品味相近的朋友,通過對(duì)大量結(jié)構(gòu)化數(shù)據(jù)進(jìn)行計(jì)算裳瘪,找出與你相似的其他用戶(user)或與你喜歡的物品(item)相似的物品土浸,從而實(shí)現(xiàn)物品推薦。

協(xié)同過濾分為兩類:基于用戶的協(xié)同過濾(User-Based CF)和基于物品的協(xié)同過濾(Item-Based CF)彭羹。結(jié)合前文的介紹便不難理解分別的應(yīng)用場(chǎng)景黄伊。

計(jì)算相似度之前需要先準(zhǔn)備一些如下表所示的數(shù)據(jù)集:

用戶 戰(zhàn)爭(zhēng) 喜歡 春風(fēng)吹 迷宮
小明 4 3 - 5
小強(qiáng) 5 1 3 4
小王 2 4 3 5
小利 4 3 2 1

它是一種表達(dá)不同人對(duì)不同物品偏好的方式,例如音樂應(yīng)用可以用0和1表示喜歡不喜歡和喜歡派殷。

User-Based CF

如果你和小明對(duì)于音樂的品位相似还最,假如小明喜歡聽Adele,那么你也有可能喜歡聽毡惜。好了拓轻,問題來了:

  • 如何衡量?jī)蓚€(gè)用戶是否相似?
  • 如何根據(jù)相似用戶推薦物品经伙?

相似度計(jì)算

相似度通過如下公式計(jì)算得到:

y = f(data, user1, user2)

其中扶叉,data就是前文提到的數(shù)據(jù)集,user1和user2表示要比較的兩個(gè)用戶或物品帕膜。書中主要介紹了兩種相似度計(jì)算函數(shù):歐幾里得距離評(píng)價(jià)枣氧、皮爾遜相關(guān)度評(píng)價(jià)

歐幾里得距離
它以經(jīng)過人們一致評(píng)價(jià)的物品為坐標(biāo)軸泳叠,然后將參與評(píng)價(jià)的人繪制到圖上作瞄,并考察他們彼此間的距離遠(yuǎn)近。輸出滿足y∈[0,1]危纫,1表示user1和user2具有相同的偏好宗挥,0表示user1和user2偏好不同。

皮爾遜相關(guān)度
它是比歐幾里得距離更復(fù)雜的一種表示相似度的方法种蝶。用于判斷兩組數(shù)據(jù)與某一直線擬合程度契耿,在數(shù)據(jù)不是很規(guī)范的時(shí)候(比如,影評(píng)者對(duì)影片的評(píng)價(jià)總是相對(duì)于平均水平偏離很大時(shí))螃征,會(huì)傾向于給出更好的結(jié)果搪桂。皮爾遜可以簡(jiǎn)單理解為cos(x)函數(shù),所以其輸出滿足y∈[-1,1]盯滚,1表示user1和user2具有相同的偏好踢械,0表示user1和user2偏好不同,-1表示user1和user2偏好負(fù)相關(guān)魄藕。如果難以理解可以參考:如何理解皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)内列?

由于本人高數(shù)上下都是勉強(qiáng)及格,對(duì)于這兩個(gè)函數(shù)理解的也不深背率,所以沒辦法深入淺出的解釋话瞧,不過只要知道每種計(jì)算方法的適應(yīng)范圍和局限性就好了嫩与。

推薦物品

第一個(gè)問題解決了,來看看如何推薦物品交排。如果只是把相似用戶喜歡的物品推薦給被推薦者划滋,未免過于草率,而且又該如何選擇相似用戶呢埃篓。

推薦算法
結(jié)合前文數(shù)據(jù)集進(jìn)行說明处坪。

  • 計(jì)算出所有用戶兩兩之間的相似度;
  • 指定一個(gè)被推薦者:小明都许;
  • 找出其他用戶評(píng)價(jià)過且被推薦者未評(píng)價(jià)的物品:春風(fēng)吹稻薇;
  • 以被推薦者與他人的相似度作為權(quán),將權(quán)與其他用戶對(duì)該物品的評(píng)分相乘胶征;
  • 【x春風(fēng)吹】一列值之和除以相似度一列值之和塞椎,最終結(jié)果(2.875)便為預(yù)測(cè)的小明對(duì)于春風(fēng)吹的評(píng)分。
用戶 相似度 戰(zhàn)爭(zhēng) x戰(zhàn)爭(zhēng) 喜歡 x喜歡 春風(fēng)吹 x春風(fēng)吹 迷宮 x迷宮
小強(qiáng) 0.9 5 4.5 1 0.9 3 2.7 4 3.6
小王 0.5 2 1 4 2 3 1.5 5 2.5
小利 0.2 4 0.8 3 0.6 2 0.4 1 0.2
合計(jì) 1.6 - - - - - 4.6 - -

注:相似度隨便寫的睛低,并非計(jì)算所得案狠。

至此可以給出推薦算法公式:

y = f(data, user, sim)

其中,data就是前文提到的數(shù)據(jù)集钱雷,user為被推薦者骂铁,sim為相似度計(jì)算函數(shù),可以根據(jù)場(chǎng)景不同選擇不同的計(jì)算函數(shù)罩抗。從輸出總選擇評(píng)分較高的物品推薦給用戶拉庵,從而實(shí)現(xiàn)物品推薦。

Item-Based CF

基于物品的推薦思路是:根據(jù)你評(píng)價(jià)過的物品套蒂,找出與其相似的物品钞支。

相似度計(jì)算

方法與User CF相同,只是我們需要把前文數(shù)據(jù)集進(jìn)行轉(zhuǎn)置操刀,并計(jì)算所有物品兩兩之間的相似度烁挟。

推薦物品

如同User CF,我們不能簡(jiǎn)單的推薦與我們偏好物品類似的物品骨坑。
推薦算法

  • 計(jì)算出所有物品兩兩之間的相似度撼嗓;
  • 指定一個(gè)被推薦者;
  • 找出被推薦者評(píng)價(jià)過的物品欢唾;
  • 以被推薦者評(píng)價(jià)過的物品與其他物品的相似度作為權(quán)且警,將權(quán)與被推薦者對(duì)該物品的評(píng)分相乘;
  • 【xXX】一列值之和除以相似度一列值之和礁遣,最終結(jié)果便為預(yù)測(cè)的被推薦者對(duì)于其未評(píng)價(jià)過物品的評(píng)分振湾。
歌曲 評(píng)分 迷宮 x迷宮 所幸 x所幸 來不及 x來不及
戰(zhàn)爭(zhēng) 4 0.3 1.2 0.1 0.4 0.8 3.2
喜歡 3 0.5 1.5 0.4 1.2 0.7 2.1
春風(fēng)吹 5 0.4 2 0.2 1 0.5 2.5
合計(jì) - 1.2 4.7 0.7 2.6 2 7.8
歸一化結(jié)果 - - 3.92 - 3.71 - 3.9

注:相似度隨便寫的,并非計(jì)算所得亡脸;并且根據(jù)說明需要增加了一些音樂

至此可以給出推薦算法公式:

y = f(data, itemMatch, user)

其中押搪,data就是前文提到的數(shù)據(jù)集,user為被推薦者浅碾,itemMatch為所有物品兩兩之間相似度的數(shù)據(jù)集大州,計(jì)算itemMatch時(shí),可以根據(jù)場(chǎng)景不同選擇不同的計(jì)算函數(shù)垂谢。從輸出總選擇評(píng)分較高的物品推薦給用戶厦画,從而實(shí)現(xiàn)基于物品的物品推薦。

如何選擇滥朱?

  1. 基于物品進(jìn)行過濾的方式要過于基于用戶的方式根暑,不過它需要維護(hù)物品相似度表的額外開銷,這也是它快的原因徙邻;
  2. 對(duì)于稀疏數(shù)據(jù)集排嫌,Item-Based CF效果優(yōu)于User-Based CF;
  3. 對(duì)于密集數(shù)據(jù)集缰犁,兩者效果幾乎相同淳地;
  4. 最重要的是,結(jié)合應(yīng)用場(chǎng)景選擇合適的方法帅容。

一句話心得

我對(duì)于協(xié)同過濾的理解是:

計(jì)算用戶/物品相似度颇象,以相似度作為權(quán)重,對(duì)不同物品進(jìn)行評(píng)分預(yù)測(cè)并徘,從而實(shí)現(xiàn)物品遣钳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市麦乞,隨后出現(xiàn)的幾起案子蕴茴,更是在濱河造成了極大的恐慌,老刑警劉巖路幸,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荐开,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡简肴,警方通過查閱死者的電腦和手機(jī)晃听,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砰识,“玉大人能扒,你說我怎么就攤上這事”枥牵” “怎么了初斑?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)膨处。 經(jīng)常有香客問我见秤,道長(zhǎng)砂竖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任鹃答,我火速辦了婚禮乎澄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘测摔。我一直安慰自己置济,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布锋八。 她就那樣靜靜地躺著浙于,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挟纱。 梳的紋絲不亂的頭發(fā)上羞酗,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音樊销,去河邊找鬼整慎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛围苫,可吹牛的內(nèi)容都是我干的裤园。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼剂府,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拧揽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腺占,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淤袜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后衰伯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铡羡,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年意鲸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烦周。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怎顾,死狀恐怖读慎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情槐雾,我是刑警寧澤夭委,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站募强,受9級(jí)特大地震影響株灸,放射性物質(zhì)發(fā)生泄漏崇摄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一蚂且、第九天 我趴在偏房一處隱蔽的房頂上張望配猫。 院中可真熱鬧,春花似錦杏死、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至品追,卻和暖如春玄括,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肉瓦。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工遭京, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泞莉。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓哪雕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鲫趁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斯嚎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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