老板問(wèn)我,什么是協(xié)同過(guò)濾?
工程架構(gòu)方向的程序員,看到推薦/搜索/廣告等和算法相關(guān)的技術(shù),心中或多或少有一絲膽怯。但認(rèn)真研究之后,發(fā)現(xiàn)其實(shí)沒(méi)有這么難。
今天給大家介紹下推薦系統(tǒng)中的“協(xié)同過(guò)濾”,絕無(wú)任何公式,保證大伙弄懂。
什么是協(xié)同過(guò)濾(Collaborative Filtering)?
答:通過(guò)找到興趣相投,或者有共同經(jīng)驗(yàn)的群體,來(lái)向用戶推薦感興趣的信息。
舉例,如何協(xié)同過(guò)濾,來(lái)對(duì)用戶A進(jìn)行電影推薦?
答:簡(jiǎn)要步驟如下:
(1)找到用戶A(user_id_1)的興趣愛(ài)好;
(2)找到與用戶A(user_id_1)具有相同電影興趣愛(ài)好的用戶群體集合Set
(3)找到該群體喜歡的電影集合Set
(4)將這些電影Set
具體實(shí)施步驟如何?
答:簡(jiǎn)要步驟如下:
(1)畫(huà)一個(gè)大表格,橫坐標(biāo)是所有的movie_id,縱坐標(biāo)所有的user_id,交叉處代表這個(gè)用戶喜愛(ài)這部電影;
如上表:
- 橫坐標(biāo),假設(shè)有10w部電影,所以橫坐標(biāo)有10w個(gè)movie_id,數(shù)據(jù)來(lái)源自數(shù)據(jù)庫(kù)
- 縱坐標(biāo),假設(shè)有100w個(gè)用戶,所以縱坐標(biāo)有100w個(gè)user_id,數(shù)據(jù)也來(lái)自數(shù)據(jù)庫(kù)
- 交叉處,“1”代表用戶喜愛(ài)這部電影,數(shù)據(jù)來(lái)自日志
畫(huà)外音:什么是“喜歡”,需要人為定義,例如瀏覽過(guò),查找過(guò),點(diǎn)贊過(guò),反正日志里有這些數(shù)據(jù)。
(2)找到用戶A(user_id_1)的興趣愛(ài)好;
如上表,可以看到,用戶A喜歡電影{m1, m2, m3}
(3)找到與用戶A(user_id_1)具有相同電影興趣愛(ài)好的用戶群體集合Set<user_id>
如上表,可以看到,喜歡{m1, m2, m3}的用戶,除了u1,還有{u2, u3}
(4)找到該群體喜歡的電影集合Set<user_id>
如上表,具備相同喜好的用戶群里{u2, u3},還喜好的電影集合是{m4, m5}
畫(huà)外音:“協(xié)同”就體現(xiàn)在這里。
(5)未來(lái)用戶A(use_id_1)來(lái)訪問(wèn)網(wǎng)站時(shí),要推薦電影{m4, m5}給ta。
協(xié)同過(guò)濾大致原理如上,希望大家有收獲。
【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】