前言
作為推薦系統(tǒng) 這一系列的第二篇文章特铝,我們今天主要來聊一聊目前比較流行的一種推薦算法——協(xié)同過濾;
當(dāng)然壹瘟,這里我們只講理論鲫剿,并不會(huì)涉及到相關(guān)代碼或者相關(guān)框架的使用,在這一系列的后續(xù)文章稻轨,如果可能灵莲,我們可以將我們的所有理論知識(shí)整合一下,實(shí)踐一個(gè) 推薦系統(tǒng)的 實(shí)戰(zhàn)殴俱。
協(xié)同過濾是什么
顧名思義政冻,協(xié)同過濾就是指用戶可以齊心協(xié)力,通過不斷地和網(wǎng)站互動(dòng)线欲,使自己的推薦列表能夠不斷過濾掉自己不感興趣的物品明场,從而越來越滿足自己的需求。這種僅僅基于用戶行為數(shù)據(jù)設(shè)計(jì)的推薦算法一般稱為協(xié)同過濾算法李丰,一般來說可以分為以下幾種:
- 基于鄰域的方法(neighborhood-based)
- 隱語義模型(latent factor model)
- 基于圖的隨機(jī)游走算法(random walk on graph)等
而今天我們要說的 基于用戶的協(xié)同過濾 就是一種 基于鄰域的方法
;
基于鄰域的方法 又可以分為以下兩種算法:苦锨。
- 基于物品的協(xié)同過濾算法
這種算法給用戶推薦和他之前喜歡的物品相似的物品。 - 基于用戶的協(xié)同過濾算法
給用戶推薦和他興趣相似的其他用戶喜歡的物品。
基于用戶的協(xié)同過濾
原理
給用戶推薦和他興趣相似的其他用戶喜歡的物品舟舒。-
實(shí)現(xiàn)步驟:
- 找到和目標(biāo)用戶興趣相似的用戶集合拉庶。
- 找到這個(gè)集合中的用戶喜歡的,且目標(biāo)用戶沒有聽說過的物品推薦給目標(biāo)用戶秃励。
-
實(shí)踐(只是為了加深理解哈)
上面都是空洞洞的文字描述砍的,下面我們就一個(gè)列子來加深一下理解- 收集數(shù)據(jù),假設(shè)我們現(xiàn)以收集如下數(shù)據(jù)
user item1 item2 item3 A 1 1 0 B 1 1 1 C 0 1 1 這是一個(gè)簡(jiǎn)單的 user 和 item 的矩陣莺治,如果user購(gòu)買過item 則標(biāo)識(shí)為1 廓鞠,否則為 0。
- 計(jì)算用戶之間的相似度:
相似度的計(jì)算是有很多種方法的谣旁,如何準(zhǔn)確的計(jì)算出兩個(gè)用戶之間的相似度是該算法的一個(gè)最重要的環(huán)節(jié)床佳,至于相似度的計(jì)算,網(wǎng)上還是有相當(dāng)多的資料的榄审,這里就不再贅述砌们,下面我簡(jiǎn)單的列舉了一些比較常用和簡(jiǎn)單的計(jì)算方式
- 距離衡量相似度
我們可以將每一個(gè)用戶想象成特征組成的高維空間的一個(gè)點(diǎn),而他們的相似度就是這兩個(gè)點(diǎn)的距離搁进,常用的距離公式有:歐幾里得距離浪感,曼哈頓距離,明可夫斯基距離 等 - 余弦相似度計(jì)算法
我們可以將每一個(gè)用戶想象成特征組成的高維空間的一個(gè)點(diǎn)饼问,其與 高維空間中的原點(diǎn)組成一個(gè)表示其的唯一向量影兽,兩個(gè)用戶的相似度就可以用他們兩個(gè)向量之間的夾角來確定,夾角越小莱革,越相似 - 其他
可以參考一下這個(gè)文章這個(gè)文章 - 同現(xiàn)度
最后峻堰,我們?cè)賮碚f一個(gè)比較low,但是也簡(jiǎn)單的算法盅视,也是本次實(shí)踐的算法:同現(xiàn)度
即捐名,當(dāng)兩個(gè)用戶同時(shí)購(gòu)買了同一個(gè)商品,那么他們相似度 +1
那么我們就可以計(jì)算出用戶之間的相似度了闹击,可以得到如下一個(gè)列表user A B C A * 2 1 B 2 * 2 C 1 2 *
這里啰嗦一下镶蹋,雖然算法分簡(jiǎn)單 和 復(fù)雜,但是和算法的效果是沒有絕對(duì)的關(guān)系的赏半,所以不要小看那些簡(jiǎn)單的算法噢贺归。
找到和推薦用戶相似的用戶集合 ,并推薦
這里我們只有一個(gè)3個(gè)用戶除破,所以我們這個(gè)集合那就定為一個(gè)吧牧氮,如果我們要給A推薦,那么先找到與A相似的用戶集合 {B}推薦
既然我們找到了A用戶的相似用戶們是 B瑰枫,而且也可以很簡(jiǎn)單的發(fā)現(xiàn) B 買過 item3踱葛,而A沒有買過丹莲,所以我們就給 A 推薦 item3
-
總結(jié)
基于用戶的協(xié)同過濾差不多就是這個(gè)樣子,當(dāng)然實(shí)際生產(chǎn)環(huán)境你肯定得考慮很多其他因素尸诽,比如數(shù)據(jù)規(guī)模甥材,數(shù)據(jù)特征選取,特征的權(quán)重等等等等性含。當(dāng)然這些都不在討論之列洲赵,我們只要知道該算法是個(gè)什么,怎么做的商蕴,有什么用就好了叠萍。最后我們?cè)賮砜偨Y(jié)下這個(gè)算法優(yōu)劣吧:+- 因?yàn)槭钦矣脩舻南嗨贫龋愿芊从沉擞脩羲诘男⌒团d趣群體中物品的熱門程度绪商,比較社會(huì)化群體化苛谷。
- 針對(duì)用戶個(gè)人而言,其特征或者說興趣是不夠細(xì)化的格郁。
- 從實(shí)時(shí)方面來看腹殿,用戶個(gè)人的行為不一定能造成物品推薦的實(shí)時(shí)更新,當(dāng)然這里是不一定例书,很多時(shí)候锣尉,當(dāng)某個(gè)熱點(diǎn)東西進(jìn)入該用戶的圈子,這個(gè)東西的傳遞還是迅速的
- 對(duì)于物品的冷啟動(dòng)比較友好决采,一旦一個(gè)新物品被某個(gè)用戶購(gòu)買自沧,立刻就可以推薦給他圈子的其他用戶
- 對(duì)于用戶的冷啟動(dòng)不友好,因?yàn)橐粋€(gè)新用戶的加入织狐,并不會(huì)馬上被加入到某個(gè)圈子暂幼,比較用戶相似度矩陣是不可能實(shí)時(shí)計(jì)算的筏勒。
- 推薦結(jié)果不具有可解釋性移迫,我不知道推薦給你的這個(gè)物品是什么,我只知道管行,你的朋友都在用
- 對(duì)于用戶比較龐大的公司厨埋,計(jì)算用戶相似度會(huì)比較麻煩
基于物品的協(xié)同過濾
上面講完了 基于用戶的協(xié)調(diào)過濾,那么我們成熱打鐵把 基于物品的協(xié)調(diào) 過濾也一塊講了
物品的協(xié)調(diào)過濾 不同于 基于用戶的區(qū)別就在于:
- 計(jì)算相似度的時(shí)候我們是通過用戶行為計(jì)算的 物品之間 的相似度捐顷,而基于用戶 則是通過用戶行為計(jì)算的 用戶之間 的相似度荡陷。維護(hù)的是物品之間的相似度矩陣
- 當(dāng)給一個(gè)用戶作推薦的時(shí)候,基于用戶 因?yàn)橐呀?jīng)計(jì)算了 用戶之間的相似度迅涮,則可以找到推薦用戶興趣相似的用戶废赞,而基于物品,則可以找到和推薦用戶感興趣的物品相似的物品來做推薦
好像差不多也就這些東西叮姑,弄懂基于用戶的協(xié)同過濾之后唉地,基于物品的也就是那么回事了据悔,其主要特征如下:
- 推薦更加個(gè)性化,反映了用戶自己的興趣傳承
- 實(shí)時(shí)性方面耘沼,用戶實(shí)時(shí)瀏覽和喜歡极颓,都能立即造成推薦的物品的改變
- 對(duì)于物品的冷啟動(dòng)比較不友好
- 對(duì)于用戶的冷啟動(dòng)比較友好
- 推薦結(jié)果具有很好的解釋性
- 對(duì)于物品實(shí)時(shí)更新的領(lǐng)域不太適用,比如:新聞群嗤。相反菠隆,對(duì)于物品變化比較不敏感的領(lǐng)域很適用。
ok狂秘!就這樣了骇径,感謝你的觀看!U叽骸既峡!