推薦系統(tǒng)從入門到繼續(xù)入門(一)

1. 推薦系統(tǒng)是什么亥啦?

推薦系統(tǒng)又叫個性化推薦系統(tǒng),它會基于用戶行為數(shù)據(jù)或物品數(shù)據(jù)练链,通過一定的算法翔脱,為用戶推薦符合他需求的物品。

試想一下這樣的場景媒鼓,我們有一個電商網(wǎng)站届吁,有數(shù)千萬種商品。有一天绿鸣,進(jìn)來了三個客人瓷产,A是電子產(chǎn)品發(fā)燒友,B是化妝品愛好者枚驻,C超級愛買書濒旦。他們想買一些符合自己喜好的商品,但是看到密密麻麻的分類列表再登,大腦有點(diǎn)轉(zhuǎn)不過來尔邓。我們呢,想最快的把商品推到他們眼前锉矢,最好能讓他們第一眼就看到自己最喜歡的商品梯嗽,但是我們不知道他們喜歡什么,全都推給他們顯得太熱情了沽损,只挑一部分又有可能選不到他們喜 歡的東西灯节。

唉,怎么辦。

還好我們有推薦系統(tǒng)炎疆。

推薦系統(tǒng)是一種工具卡骂,它可以基于用戶的歷史行為數(shù)據(jù)或物品數(shù)據(jù),通過一定的算法形入,為用戶推薦符合需求的物品全跨。

它主要解決兩個問題,一個是信息過載亿遂,一個是用戶需求的多樣性浓若。(一般來說,只有同時滿足這兩個條件時蛇数,才會使用推薦系統(tǒng)挪钓,不然可能適得其反。)

2. 如何評價一個推薦系統(tǒng)好不好耳舅?

一個完整的推薦系統(tǒng)一般包含三個參與方:用戶诵原、內(nèi)容提供方、網(wǎng)站挽放。例如用戶希望看到自己喜歡的內(nèi)容绍赛,內(nèi)容提供方希望將內(nèi)容全面的推送到用戶側(cè)
,網(wǎng)站則需要平衡兩者關(guān)系辑畦,達(dá)到利益最大化吗蚌。一個好的推薦系統(tǒng)應(yīng)該能夠平衡三方的需求。

2.1 實(shí)驗(yàn)

在介紹推薦系統(tǒng)的指標(biāo)之前纯出,先說一下可以獲得這些指標(biāo)的方法蚯妇。主要有三種:離線實(shí)驗(yàn),用戶調(diào)查暂筝,在線實(shí)驗(yàn)箩言。

2.1.1 離線實(shí)驗(yàn)

離線實(shí)驗(yàn)是本次介紹推薦系統(tǒng)中用到最多的驗(yàn)證方式,簡單方便焕襟,綠色無污染陨收。

步驟:

  1. 通過日志系統(tǒng)獲得用戶行為數(shù)據(jù),按照一定的格式生成一個標(biāo)準(zhǔn)的數(shù)據(jù)集
  2. 將數(shù)據(jù)集按照一定的規(guī)則分成訓(xùn)練集的和測試集
  3. 在訓(xùn)練集上訓(xùn)練用戶興趣模型鸵赖,在測試集上進(jìn)行預(yù)測
  4. 通過事先定義的離線指標(biāo)評測算法在測試集上的預(yù)測結(jié)果

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

  • 不需要真實(shí)用戶的參與
  • 速度快务漩,可以測試大量算法

缺點(diǎn):

  • 無法計(jì)算商業(yè)關(guān)心的指標(biāo),例如點(diǎn)擊率它褪、轉(zhuǎn)化率等
2.1.2 用戶調(diào)查

由于離線試驗(yàn)的指標(biāo)與商業(yè)指標(biāo)存在差異饵骨,高準(zhǔn)確率不等于高用戶滿意度。所以茫打,想要準(zhǔn)確的評測一個算法居触,需要相對比較真實(shí)的環(huán)境妖混。最好的方法就是直接上線測試,而由于無法確定算法的影響轮洋,上線測試會有比較大的風(fēng)險制市,這時,我們的用戶調(diào)查就派上用場了砖瞧。

用戶調(diào)查是推薦系統(tǒng)評測的一個重要工具,很多離線試驗(yàn)無法獲得的主觀感受指標(biāo)都可以通過用戶調(diào)查獲得嚷狞。

這個相信大家都不陌生块促,大致和產(chǎn)品的用戶調(diào)查差不多,盡量保證雙盲實(shí)驗(yàn)床未,盡量使用多樣用戶群竭翠,并保證用戶屬性的平衡。

2.1.3 在線實(shí)驗(yàn)

在線實(shí)驗(yàn)就是大殺器了薇搁,它可以統(tǒng)計(jì)到最真實(shí)的用戶反饋和商業(yè)指標(biāo)斋扰。在完成必要的離線試驗(yàn)和用戶調(diào)查后,可以采用AB測試的方式比較新舊算法啃洋。

AB測試相信大家也不陌生传货,它是一種比較常用的在線評測方法,通過一定的規(guī)則將用戶分成幾組宏娄,對不同組的用戶采用不同的算法问裕。詳細(xì)信息網(wǎng)上有大量介紹,這里先不提咯孵坚。

2.2 評測指標(biāo)

接下來就是由這些驗(yàn)證方法得出的評測指標(biāo):

2.2.1 用戶滿意度

用戶滿意度當(dāng)然是推薦系統(tǒng)最重要的指標(biāo)粮宛,用戶中心不用多說。但是卖宠,用戶滿意度無法離線計(jì)算巍杈,只能通過用戶調(diào)查或在線實(shí)驗(yàn)得到。

2.2.2 預(yù)測準(zhǔn)確度

這個是度量推薦系統(tǒng)預(yù)測用戶行為的能力扛伍,是最重要的離線評測方法筷畦。由于離線的推薦算法有不同的研究方向,因此他們的預(yù)測準(zhǔn)確度指標(biāo)也不盡相同刺洒。

2.2.2.1 評分預(yù)測

評分預(yù)測是指用戶會對一個物品產(chǎn)生怎樣的評分汁咏。例如在豆瓣電影中,用戶會給點(diǎn)擊打幾分作媚。

2.2.2.2 TopN 推薦

TopN 推薦是指攘滩,用戶會不會對物品感興趣。例如在豆瓣電影中纸泡,用戶對電影標(biāo)記了「想看」漂问。

TopN 推薦有兩個重要指標(biāo):準(zhǔn)確率和召回率赖瞒。

  • 準(zhǔn)確率(Precision)
    準(zhǔn)確率是指,為用戶推薦且用戶感興趣的物品蚤假,在推薦結(jié)果列表中所占的比例栏饮。
  • 召回率(Recall)
    召回率是指,為用戶推薦且用戶感興趣的物品磷仰,在用戶感興趣的所有物品列表中所占得比例袍嬉。

這兩個參數(shù)很重要,以后我們還會在看到的:D

**2.2.3 **覆蓋率(****coverage****)

覆蓋率描述推薦系統(tǒng)對長尾的發(fā)掘能力灶平。覆蓋率沒有唯一的定義方法伺通,一個簡單的定義是,推薦列表中的物品占總物品數(shù)的比例逢享。

** 2.2.4 **多樣性
** 2.2.5 **新穎性
** 2.2.6 **驚喜度
** 2.2.7 **實(shí)時性
** 2.2.8 **健壯性

唉好晚了……這幾個指標(biāo)稍后補(bǔ)充

3. 推薦系統(tǒng)的類別及原理

3.1 協(xié)同過濾推薦(collaborative filtering recommendation)

協(xié)同過濾可以說是推薦系統(tǒng)的鼻祖罐监,是推薦系統(tǒng)中最成功的策略,它于20世紀(jì)90年代開始研究并促進(jìn)了整個推薦系統(tǒng)研究的繁榮瞒爬。

協(xié)同過濾算法分為兩大類弓柱,分別為基于用戶的協(xié)同過濾(UserCF)和基于物品的協(xié)同過濾(ItemCF)。

** 3.1.1 基于用戶的協(xié)同過濾(UserCF)**

初入職場侧但,很多新人都會問前輩相似的問題矢空,例如“我應(yīng)該看一些什么資料”、“我應(yīng)該朝那個方向發(fā)展”等禀横。這個時候妇多,前輩會給他們做一些推薦。這就是個性化推薦的一個栗子燕侠。在這個栗子中者祖,新人之所以問前輩,是因?yàn)樗麄冇猩鐣P(guān)系绢彤,并信任彼此七问,但更重要的是,前輩有著相似的經(jīng)驗(yàn)茫舶,他們的發(fā)展是相似的械巡。在個性化推薦系統(tǒng)中,當(dāng)為用戶 A 進(jìn)行推薦時饶氏,可以找到和用戶 A 興趣相似的用戶讥耗,把這些用戶喜歡的東西推薦給 A。這種方法就叫做 UserCF 疹启。

UserCF 的主要有兩個步驟:

  1. 找出距離用戶最近的鄰居用戶
  2. 對鄰居用戶相似度和鄰居用戶感興趣的項(xiàng)目進(jìn)行評價古程,輸出推薦列表

具體過程類似于這樣:

本地挺好的咋傳上來就這樣了呢

自己看還好好的……導(dǎo)到這里咋這樣了

其中的核心工作是定義用戶的相似度。主要有兩種方法:基于關(guān)聯(lián)的方法(correlation-based)和基于余弦距離的方法(cosine-based)喊崖。他們通過用戶對物品的歷史行為挣磨,例如評分雇逞、訪問、下單茁裙、收藏等等行為塘砸,判斷用戶之間的相似情況。具體的公式這里暫不展開晤锥,需要的同學(xué)應(yīng)該也不會看這篇文章……網(wǎng)上有很多介紹掉蔬。

結(jié)果
本地挺好的咋傳上來就這樣了呢

在書中對 MovieLens 數(shù)據(jù)集的試驗(yàn)中,相比于完全隨機(jī)推薦和完全熱門排行矾瘾,UserCF 在準(zhǔn)確率與召回率上的提升都非常顯著女轿。在覆蓋率上,UserCF 高于熱門排行霜威,符合預(yù)期谈喳。但在流行度上册烈,由于 UserCF 是在參考臨近用戶群中被喜歡的物品戈泼,而且物品越熱門,就會被更多人喜歡赏僧,從而更利于被算法推薦大猛。

** 優(yōu)化**

上文提到,越熱門的物品會越容易得到推薦淀零,如果這種情況一直發(fā)生挽绩,會導(dǎo)致更多的連鎖反應(yīng),使熱門內(nèi)容越來越熱門驾中,持續(xù)優(yōu)先出現(xiàn)在推薦結(jié)果中唉堪。同時,相對于熱門內(nèi)容肩民,用戶對冷門內(nèi)容的喜好更容易反映他們的興趣相似性唠亚。所以,我們可以降低熱門內(nèi)容的權(quán)重持痰,或過濾熱門內(nèi)容灶搜,提高推薦系統(tǒng)的性能。

** 3.1.2 基于物品的協(xié)同過濾(ItemCF)**

ItemCF 可能是目前業(yè)界應(yīng)用最多的算法工窍,無論是亞馬遜割卖,還是 Netflix、Hulu患雏、YouTube鹏溯,其算法基礎(chǔ)都是 ItemCF。(書里說的)

ItemCF 的原理是淹仑,為用戶推薦那些和他之前喜歡的物品相似的物品剿涮。例如言津,算法可能會因?yàn)橛脩糍I過《推薦系統(tǒng)實(shí)踐》而為用戶推薦《推薦系統(tǒng)》。需要注意的是取试,ItemCF 不是根據(jù)物品本身的內(nèi)容來進(jìn)行相似度匹配悬槽,而是通過用戶對物品的行為數(shù)據(jù)計(jì)算物品之間的相似度。算法認(rèn)為瞬浓,物品 A 與物品 B 相似的原因是喜歡物品 A 的用戶大多也喜歡物品 B初婆。

ItemCF 主要也是兩個步驟:

  1. 找到距離物品最近的鄰居物品
  2. 對鄰居物品的相似度和用戶興趣進(jìn)行評價,輸出推薦列表

圖和上面一樣:

ItemCF 和 UserCF 的方法很相似猿棉,其核心工作是定義物品的相似度磅叛,也是有兩種方法……(也是和上面一樣)

** 結(jié)果**

在書中對 MovieLens 數(shù)據(jù)集的實(shí)驗(yàn)中,可以看出萨赁,盡管計(jì)算過程中沒有利用任何內(nèi)容數(shù)據(jù)弊琴,具有同種屬性(例如同系列、同主角杖爽、同導(dǎo)演等)的電影仍然表現(xiàn)出較大的相似度敲董。

** 優(yōu)化**
  1. 就像 UserCF 一樣,過于活躍的用戶也會對物品的相似度判定造成影響慰安,例如一個用戶標(biāo)記了產(chǎn)品中80%的物品腋寨,那么由于這種行為,80%的物品就會產(chǎn)生兩兩之間的相似度化焕,如果物品量足夠大萄窜,很有可能形成一個很大的稠密矩陣。所以撒桨,我們可以通過懲罰活躍用戶的方式來優(yōu)化推薦結(jié)果查刻。經(jīng)驗(yàn)證,這種優(yōu)化能提高算法的覆蓋率凤类,降低流行度穗泵。

  2. 歸一化。假設(shè)物品分為兩類踱蠢,A 和 B火欧,A 類的物品之間相似度為0.5,B 類物品之間的相似度為0.6茎截,而 A 類物品和 B 類物品之間的相似度為0.2苇侵。在這種情況下,如果一個用戶喜歡了5個 A 類物品和5個 B 類物品企锌,我們用 ItemCF 為其推薦榆浓,推薦的結(jié)果就會都是 B 類物品——因?yàn)?B 類物品的相似度較大。
    但這個不合理啊撕攒。
    歸一化之后陡鹃,A 類物品與 B 類物品自身的相似度都變成1烘浦,那么推薦結(jié)果中 A 類物品和 B 類物品的量就會大致相等。經(jīng)驗(yàn)證萍鲸,歸一化對推薦算法的準(zhǔn)確率和覆蓋率都有有效提升闷叉。

3.1.3 UserCF 和 ItemCF 的比較

** 從原理上看:**

UserCF 以用戶為基礎(chǔ),通過鄰居用戶來匹配物品脊阴,是一種興趣圈子內(nèi)的推薦握侧,注重于興趣圈內(nèi)的熱點(diǎn);ItemCF 以物品為基礎(chǔ)嘿期,通過鄰居物品匹配物品品擎,注重于維系用戶的歷史興趣。也就是說备徐,UserCF 更加社會化和熱門萄传,ItemCF 更加個性化和封閉。

從技術(shù)上看:

UserCF 需要維護(hù)一個用戶相似度的矩陣蜜猾,ItemCF 需要維護(hù)一個物品相似度矩陣秀菱。如果用戶很多,那么維護(hù)用戶相似度矩陣就需要很大的空間瓣铣;如果物品很多答朋,維護(hù)物品相似度矩陣也會花費(fèi)較大代價贷揽。所以 UserCF 適合用戶量較少的產(chǎn)品棠笑,ItemCF 適合物品量較少的產(chǎn)品。

具體到指標(biāo)時:

兩種算法的準(zhǔn)確率和召回率相差不大禽绪,不過在覆蓋率上蓖救,UserCF 會明顯小于 ItemCF,原因是 UserCF 會推薦小群體中的熱門物品印屁,而 ItemCF 會基于歷史興趣循捺,推薦物品關(guān)聯(lián)的結(jié)果(有可能出現(xiàn)冷門內(nèi)容)。這樣看來雄人,雖然在整體上 ItemCF 的覆蓋率較高从橘,但是對于用戶來說,物品的多樣性反而可能更低础钠。

關(guān)于冷啟動:

如果新用戶對某些產(chǎn)品產(chǎn)生了行為恰力,在 UserCF中,是不能立即更新推薦列表的旗吁,因?yàn)橛脩粝嗨贫刃枰扛粢欢螘r間離線計(jì)算踩萎;而在 ItemCF 中,用戶只要對一個物品產(chǎn)生行為很钓,就可以為他推薦類似的物品香府,例如亞馬遜的「買過 XXX 的人也買」董栽。

當(dāng)物品上線一段時間后,在 UserCF 中企孩,一旦用戶對新品產(chǎn)生行為锭碳,就可以將新品推薦給相似用戶;而在 ItemCF 中勿璃,沒有辦法在不離線更新物品相似度的情況下將物品推薦給用戶工禾。

也就是說:

兩種算法都不完美,應(yīng)該具體到每個產(chǎn)品去決定用哪種基礎(chǔ)算法蝗柔。在常見的產(chǎn)品中闻葵,個人感覺 ItemCF 的應(yīng)用比較多(如果它們用的是 CF 的話),例如淘寶的物品推薦癣丧、今日頭條的新聞推薦槽畔、百度的廣告、亞馬遜的商品推薦等胁编;似乎豆瓣電影的豆瓣猜是用的 UserCF厢钧?不太確定。

3.2 基于內(nèi)容的推薦(content-based recommendation)

基于內(nèi)容的推薦是指根據(jù)用戶選擇的物品嬉橙,推薦其他有類似屬性的物品早直。它不同于 ItemCF,通過物品的特征屬性來判定物品之間的相似度市框,再根據(jù)用戶歷史行為的特征分析霞扬,得到推薦結(jié)果。例如在進(jìn)行電影的推薦時枫振,分析用戶之前選擇的電影的共性喻圃,得到用戶的興趣特征,再與電影的特征作匹配粪滤。

此種推薦算法的關(guān)鍵工作有兩項(xiàng)斧拍,一是物品特征的描述,二是用戶模型的確定杖小。

目前肆汹,對于物品特征描述,對文字的特征提取方法比較成熟予权,但對于多媒體的提取仍然不理想昂勉。幸好,我們還可以采用專家標(biāo)記特征和用戶標(biāo)記特征的方法伟件。據(jù)說 Spotify 成立時硼啤,就采用了專家標(biāo)記特征的方式,做基于內(nèi)容的推薦,同時還可以解決冷啟動問題谴返;豆瓣的物品標(biāo)簽是用戶標(biāo)記特征的一個例子煞肾,通過用戶標(biāo)記的標(biāo)簽,組織內(nèi)容推薦嗓袱。

3.3 基于知識的推薦(knowledge-based recommendation)

這部分還沒太看懂籍救,個人認(rèn)為基于知識的推薦就像一個有限狀態(tài)機(jī),需要對每種場景定制推薦規(guī)則渠抹。以后完善蝙昙。

3.4 組合推薦(hybrid recommendation)

由于每種推薦算法都存在各自的優(yōu)缺點(diǎn),如果能把他們的優(yōu)點(diǎn)相融合梧却,有可能得到優(yōu)于每種單一算法的結(jié)果奇颠。其中研究最多的是內(nèi)容推薦和協(xié)同過濾的融合。

融合方式大致可以分為三類:

  1. 分別使用每種算法放航,得出結(jié)果后對結(jié)果進(jìn)行排序烈拒、挑選、融合广鳍;
  2. 使用一種主算法搭建框架荆几,將其它算法融合進(jìn)去,再進(jìn)行推薦赊时;
  3. 將幾種算法整合在一個框架內(nèi)吨铸,在統(tǒng)一的模型下進(jìn)行推薦。

個人感覺組合推薦效果會更好祖秒,但是沒有找到過多實(shí)例證明诞吱。待以后補(bǔ)充。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狈涮,一起剝皮案震驚了整個濱河市狐胎,隨后出現(xiàn)的幾起案子鸭栖,更是在濱河造成了極大的恐慌歌馍,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晕鹊,死亡現(xiàn)場離奇詭異松却,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)溅话,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門晓锻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人飞几,你說我怎么就攤上這事砚哆。” “怎么了屑墨?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵躁锁,是天一觀的道長纷铣。 經(jīng)常有香客問我,道長战转,這世上最難降的妖魔是什么搜立? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮槐秧,結(jié)果婚禮上啄踊,老公的妹妹穿的比我還像新娘。我一直安慰自己刁标,他們只是感情好颠通,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膀懈,像睡著了一般蒜哀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吏砂,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天撵儿,我揣著相機(jī)與錄音,去河邊找鬼狐血。 笑死淀歇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匈织。 我是一名探鬼主播浪默,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缀匕!你這毒婦竟也來了纳决?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤乡小,失蹤者是張志新(化名)和其女友劉穎阔加,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體满钟,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胜榔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了湃番。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夭织。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吠撮,靈堂內(nèi)的尸體忽然破棺而出尊惰,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布弄屡,位于F島的核電站戴卜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琢岩。R本人自食惡果不足惜投剥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望担孔。 院中可真熱鬧江锨,春花似錦、人聲如沸糕篇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拌消。三九已至挑豌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間墩崩,已是汗流浹背氓英。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹦筹,地道東北人铝阐。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像铐拐,于是被迫代替她去往敵國和親徘键。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

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