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)證方式,簡單方便焕襟,綠色無污染陨收。
步驟:
- 通過日志系統(tǒng)獲得用戶行為數(shù)據(jù),按照一定的格式生成一個標(biāo)準(zhǔn)的數(shù)據(jù)集
- 將數(shù)據(jù)集按照一定的規(guī)則分成訓(xùn)練集的和測試集
- 在訓(xùn)練集上訓(xùn)練用戶興趣模型鸵赖,在測試集上進(jìn)行預(yù)測
- 通過事先定義的離線指標(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 的主要有兩個步驟:
- 找出距離用戶最近的鄰居用戶
- 對鄰居用戶相似度和鄰居用戶感興趣的項(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 主要也是兩個步驟:
- 找到距離物品最近的鄰居物品
- 對鄰居物品的相似度和用戶興趣進(jìn)行評價,輸出推薦列表
圖和上面一樣:
ItemCF 和 UserCF 的方法很相似猿棉,其核心工作是定義物品的相似度磅叛,也是有兩種方法……(也是和上面一樣)
** 結(jié)果**
在書中對 MovieLens 數(shù)據(jù)集的實(shí)驗(yàn)中,可以看出萨赁,盡管計(jì)算過程中沒有利用任何內(nèi)容數(shù)據(jù)弊琴,具有同種屬性(例如同系列、同主角杖爽、同導(dǎo)演等)的電影仍然表現(xiàn)出較大的相似度敲董。
** 優(yōu)化**
就像 UserCF 一樣,過于活躍的用戶也會對物品的相似度判定造成影響慰安,例如一個用戶標(biāo)記了產(chǎn)品中80%的物品腋寨,那么由于這種行為,80%的物品就會產(chǎn)生兩兩之間的相似度化焕,如果物品量足夠大萄窜,很有可能形成一個很大的稠密矩陣。所以撒桨,我們可以通過懲罰活躍用戶的方式來優(yōu)化推薦結(jié)果查刻。經(jīng)驗(yàn)證,這種優(yōu)化能提高算法的覆蓋率凤类,降低流行度穗泵。
歸一化。假設(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é)同過濾的融合。
融合方式大致可以分為三類:
- 分別使用每種算法放航,得出結(jié)果后對結(jié)果進(jìn)行排序烈拒、挑選、融合广鳍;
- 使用一種主算法搭建框架荆几,將其它算法融合進(jìn)去,再進(jìn)行推薦赊时;
- 將幾種算法整合在一個框架內(nèi)吨铸,在統(tǒng)一的模型下進(jìn)行推薦。
個人感覺組合推薦效果會更好祖秒,但是沒有找到過多實(shí)例證明诞吱。待以后補(bǔ)充。