在當今 DT 時代杏糙,每天都在產(chǎn)生著海量的數(shù)據(jù)痘绎,移動互聯(lián)網(wǎng)的興起更是讓我們體驗到獲取信息是如此的簡單和方便洽损。
同時吴攒,更多的選擇也帶來更多的困擾张抄,面對層出不窮的信息和服務(wù)帶來的困擾,使得個性推薦迅速崛起洼怔,并且大放異彩署惯,在金融、電商镣隶、視頻极谊、資訊诡右、直播、招聘轻猖、旅游等各個領(lǐng)域都能看到推薦系統(tǒng)的存在帆吻。
達觀數(shù)據(jù)憑借多年在推薦系統(tǒng)方面的技術(shù)積累和優(yōu)質(zhì)的大數(shù)據(jù)服務(wù),已經(jīng)有數(shù)百家公司接入達觀推薦系統(tǒng)蜕依,覆蓋多個行業(yè)桅锄,實現(xiàn)企業(yè)經(jīng)營業(yè)績的大幅提升。本次分享結(jié)合達觀數(shù)據(jù)個性化推薦引擎在各個行業(yè)的從業(yè)經(jīng)驗样眠,圍繞以下內(nèi)容展開:
1) 個性化推薦應(yīng)用場景和價值友瘤;
2) 用戶畫像和個性化推薦算法;
3) 推薦系統(tǒng)優(yōu)化方法檐束。
1.個性化推薦應(yīng)用場景和價值
首先辫秧,我們先來說說個性化推薦應(yīng)用場景和價值。
個性化推薦產(chǎn)生的初衷是為了解決信息過載和物品長尾的問題被丧。信息過載是在信息時代信息過于豐富的一種現(xiàn)象盟戏,也就是人所接受的信息超過了個人所能接受、處理或有效利用的范圍甥桂,導(dǎo)致的一種無所適從的問題柿究。
同時,如此多樣豐富的信息中黄选,大部分是屬于冷門而沒有曝光的機會蝇摸。對于處于移動互聯(lián)網(wǎng)的今天,這些問題尤其突出办陷。
對用戶而言貌夕,每天面對海量的資訊、商品民镜、視頻啡专、音樂等各種服務(wù)時,如何快速找到自己感興趣的內(nèi)容確實是件耗費時間和精力的事情制圈,尤其是在沒有明確意圖的情況下们童。
而對于企業(yè)而言,手握海量資源鲸鹦,而只有一小部分曝光在用戶面前慧库,大部分都石沉大海,資源浪費的同時亥鬓,還留不住用戶完沪。在當前各種產(chǎn)品同質(zhì)化的今天域庇,如何討好并留住用戶嵌戈,挖掘數(shù)據(jù)中存在的價值覆积,對企業(yè)也是一種極大的挑戰(zhàn)。
越來越多的事實證明熟呛,個性化推薦系統(tǒng)是解決上述問題的有效工具宽档。
美國最大的視頻網(wǎng)站 YouTube 曾做過實驗比較個性化推薦和熱門視頻的點擊率,結(jié)果顯示個性化推薦的點擊率是后者的兩倍庵朝。
美國著名視頻網(wǎng)站 Netflix 曾舉辦過全球的推薦系統(tǒng)比賽吗冤,懸賞 100 萬美元,希望參賽選手能將其推薦算法的預(yù)測準確度提升至少 10%九府。
號稱“推薦系統(tǒng)之王”的電子商務(wù)網(wǎng)站亞馬遜曾宣稱椎瘟,亞馬遜有 35% 的銷售來自于推薦系統(tǒng)。其最大優(yōu)勢就在于個性化推薦系統(tǒng)侄旬,該系統(tǒng)讓每個用戶都能有一個屬于自己的在線商店肺蔚,并且在商店中能招到自己最感興趣的商品。
日常生活當中儡羔,當我們打開各種各樣的 app 和網(wǎng)頁宣羊,首先進入視野的很多都是個性化推薦。對于企業(yè)而言汰蜘,推薦系統(tǒng)可以幫助讓更多的資源得到曝光仇冯,也改善了用戶體驗、增加了用戶的停留市場和粘性族操,最終也會提高轉(zhuǎn)化苛坚。
最后總結(jié)下,推薦系統(tǒng)的核心價值主要包括:
1)描述物品的特點坪创,并與用戶的個性化偏好進行匹配炕婶,幫用戶便捷的篩選出感興趣的內(nèi)容;
2)進行有效的信息過濾以解決用戶的過載問題莱预,面對陌生領(lǐng)域時提供參考意見柠掂;
3)根據(jù)用戶反饋迅速捕捉用戶的興趣,以及興趣的變化依沮,需求不明確時涯贞,作用戶的“貼心助手”考抄;
4)選擇合適的場景藕施、時機、表現(xiàn)方式進行推薦督暂,滿足用戶的好奇心辜限。
2.用戶畫像和個性化推薦算法
個性化推薦的兩個關(guān)鍵點:用戶畫像和個性化推薦算法皇拣。
目前普遍存在的兩種個性化推薦結(jié)果生成方法。
一是依靠人工編輯進行推薦。這種方式不僅需要大量的人力成本氧急,費時費力颗胡,最終推薦出來的結(jié)果是千篇一律,并沒有考慮到用戶個性化的差異吩坝,也沒有考慮用戶反饋毒姨。
二是通過一定邏輯生成的熱門榜單。這種方式極易導(dǎo)致馬太效應(yīng)钉寝,一些熱門物品會會一直霸占榜單弧呐,也容易造成刷單,畢竟占據(jù)著更好的流量入口嵌纲,需要引入反作弊機制才能保證推薦結(jié)果的公平公正俘枫。
高質(zhì)量的個性化推薦系統(tǒng)其實包括三大部分:
1)基于海量用戶行為數(shù)據(jù),挖掘多種多樣的高質(zhì)量推薦候選集逮走;
2)對用戶實時興趣進行精準定位崩哩,秒級更新結(jié)果滿足個性化需求;
3)基于高性能分布式計算框架言沐,快速迭代算法生成多維度用戶畫像進行千人千面的推薦邓嘹。
個性化推薦精準性的至關(guān)重要的影響因素是用戶畫像的生成。
用戶畫像通過對海量的用戶行為數(shù)據(jù)進行深入的分析和挖掘险胰,從多個維度來描述用戶的基礎(chǔ)屬性汹押、標簽及興趣點等,清晰并且準確地勾勒出用戶的輪廓概貌起便。這些數(shù)據(jù)幫助應(yīng)用方更好了解用戶行為路徑棚贾,明確用戶流失情況和原因,為應(yīng)用方的產(chǎn)品功能優(yōu)化決策提供可靠參考依據(jù)榆综。
下圖是一個小說類客戶的用戶畫像生成流程妙痹。
通過多種方式收集到用戶數(shù)據(jù),包括用戶各種行為數(shù)據(jù)鼻疮,結(jié)合書籍怯伊、用戶、作者等基礎(chǔ)數(shù)據(jù)判沟,首先進行數(shù)據(jù)預(yù)處理和用戶歸一化處理耿芹,然后進行數(shù)據(jù)統(tǒng)計與特征抽取,最后基于機器學習中的分類挪哄、聚類等方法進行智能挖掘分析吧秕,形成了用戶各個維度的屬性信息。
有了用戶畫像之后迹炼,接下來就交給個性化推薦算法了砸彬,這里主要聊下基于內(nèi)容的推薦和協(xié)同過濾。
1)基于內(nèi)容的推薦。
這個算法適合于待推薦物品帶有豐富語義信息的場景砂碉,如標題吟秩、標簽、類別绽淘、作者等信息。但是想直播這個行業(yè)闹伪,直播內(nèi)容是和主播當前的播放狀態(tài)緊密相關(guān)的沪铭,而且內(nèi)容變化也較頻繁,就不適宜使用此算法偏瓤。在資訊媒體杀怠、視頻等行業(yè)效果還是客觀的。
基于內(nèi)容的推薦主要過程是將推薦物品的信息特征和待推薦對象的特征相匹配的過程厅克,從而得到待推薦的物品集合赔退。匹配算法很多是借鑒了信息檢索領(lǐng)域中的技術(shù),如 K 最近鄰 KNN 和 Rocchio 的相關(guān)性反饋方法证舟。主要是以含有相同標簽的其它物品硕旗、同類別的其它物品等形式出現(xiàn)。
這種方法能保證推薦內(nèi)容的相關(guān)性女责,并且根據(jù)內(nèi)容特征可以解釋推薦結(jié)果漆枚。缺點是由于內(nèi)容高度匹配,導(dǎo)致推薦結(jié)果的驚喜度較差抵知,另外用戶的反饋數(shù)據(jù)也沒有使用墙基。
2)協(xié)同過濾算法
主要思想是基于群體智慧,利用已有大量用戶群過去行為數(shù)據(jù)來預(yù)測當前用戶最可能感興趣的東西刷喜。這種方法克服了基于內(nèi)容方法的一些弊端残制,最重要的是可以挖掘物品之間隱含的相關(guān)性,推薦一些內(nèi)容上差異較大但又是用戶感興趣的物品掖疮。
對于基于用戶的協(xié)同過濾初茶,首先計算用戶之間的距離,得到與當前用戶距離最近的 N 個用戶浊闪,將這些用戶喜歡的 item 進行合并和評分預(yù)測纺蛆,得到推薦結(jié)果」婢荆基于物品的協(xié)同過濾則是計算物品間的距離進行評分預(yù)測得到推薦結(jié)果
基于領(lǐng)域的方法重點關(guān)注物品之間的關(guān)系或者用戶之間的關(guān)系桥氏,基于物品的方法是根據(jù)用戶對和他感興趣的物品相似的物品評分,來對該用戶的偏好物品建立模型猛铅。
隱語義模型采用的是另外一種方法字支,把物品和用戶映射到相同的隱語義空間。這個空間試圖通過描述物品和用戶兩種實體在潛在因子上的特征來解釋評分,而這些因子是根據(jù)用戶的反饋自動判斷出來的堕伪。
用隱語義模型來進行協(xié)同過濾的目標是揭示隱藏的特征揖庄,這些特征能解釋觀測到的評分。該模型包括 pLSA(Probability Latent Semantic Analysis)模型欠雌、神經(jīng)網(wǎng)絡(luò)模型蹄梢、LDA(Latent Dirichlet Allocation)模型,以及由用戶 - 物品評分矩陣的因子分解推導(dǎo)出的模型(也叫基于 SVD 的模型富俄,Singular Value Decomposition)禁炒。
計算用戶 - 用戶距離和物品 - 物品距離有很多方法,在實際業(yè)務(wù)中會有很多的變形霍比,比如對熱門物品的降權(quán)幕袱,不然會引入一些噪聲數(shù)據(jù),因為相對一些不那么熱門的物品更能表征用戶的偏好信息
由于矩陣因子分解技術(shù)在線上業(yè)務(wù)的準確性和穩(wěn)定性的突出表現(xiàn)悠瞬,已經(jīng)成為協(xié)同過濾算法的首選们豌。
首先,對于 user-item 關(guān)系矩陣浅妆,也叫評分矩陣望迎,表示用戶對每個 item 的評分,比如 1 表示 1 分凌外,5 表示 5 分擂煞,分數(shù)越高就表示越喜歡。
通過用戶的操作行為數(shù)據(jù)我們就得了這樣一個矩陣趴乡,通過矩陣分解的方式就得到了兩個矩陣对省,分別是物品 - 潛在因子矩陣和潛在因子 - 用戶矩陣,我們的目標是預(yù)測用戶對未打分的物品的喜好程度晾捏,也就是圖中除了黃色格子之外的數(shù)據(jù)蒿涎。
對于未知的評分,可以使用分解后兩個矩陣相乘惦辛,就得到圖中空白處的評分數(shù)據(jù)劳秋,進行排序和過濾,最終就可以得到用戶對物品的喜好程度胖齐,也就得到最終的推薦結(jié)果玻淑。
原始的 SVD 并沒有考慮到用戶和物品自身的差異(bias),進行升級呀伙,我們來看看 SVD++ 是怎么的形式补履。
相對于之前的方式這里引入了
,也就是用戶本身的 bias 和物品本身的 bias剿另。對于用戶的 bias箫锤,有的用戶傾向于打高分贬蛙,有的傾向于打低分。物品的 bias谚攒,比如有的電影出自于大導(dǎo)演阳准、大公司等傾向于得到高分,有的比較小眾容易得低分馏臭。在計算中野蝇,這些 bias 信息都需要包含進來
通過對算法的升級,就可以使用各種各樣的用戶括儒、物品的 bias 信息绕沈,包括用戶和物品的 profile,同時各種屬性也可以進行組合塑崖,如用戶性別、年齡信息痛倚。
最終的模型求解問題就轉(zhuǎn)化為求解最優(yōu)化問題规婆,這個最小二乘法問題可以通過隨機梯度下降算法有效地解決。
這里是達觀數(shù)據(jù)推薦系統(tǒng)的架構(gòu)圖蝉稳,從基礎(chǔ)層的數(shù)據(jù)傳輸抒蚜、存儲和運算,到模型層的用戶畫像耘戚、物品畫像等的挖掘生成嗡髓,然后到多種推薦算法的計算得到部分初選的推薦候選集,最后交由融合層的機器學習模型進行重排序收津,生成最終的推薦結(jié)果返回給用戶饿这。整個流程在數(shù)十家客戶上都取得了卓越的推薦效果,覆蓋資訊撞秋、視頻长捧、直播、電商等多個行業(yè)吻贿。
接下來串结,聊聊個性化推薦的優(yōu)化,當然推薦系統(tǒng)的優(yōu)化方法有很多種舅列,今天挑選了三個肌割,都和當前火熱的深度學習有
3.推薦系統(tǒng)優(yōu)化方法
達觀數(shù)據(jù)接入了數(shù)百家客戶,數(shù)據(jù)量的規(guī)模之大是可想而知帐要,對于性能的要求非常高把敞,尤其在高并發(fā)的推薦場景中≌セ荩基于硬件成本和性能的綜合考慮先巴,達觀個性化推薦引擎除了使用內(nèi)存和 redis 作為緩存之外其爵,也引入了 LevelDB。
LevelDB 是 Google 的兩位大神 Jeff Dean 和 Sanjay Ghemawat 發(fā)起的開源項目伸蚯,簡而言之摩渺,LevelDb 是能夠處理十億級別規(guī)模 Key-Value 型數(shù)據(jù)持久性存儲的 C++ 程序庫。LevelDb 是一個持久化存儲的 KV 系統(tǒng)剂邮,和 Redis 這種內(nèi)存型的 KV 系統(tǒng)不同摇幻,LevelDb 不會像 Redis 一樣狂吃內(nèi)存,而是將大部分數(shù)據(jù)存儲到磁盤上挥萌。
LevelDB 在隨機寫绰姻,順序讀 / 寫方面具有很高的性能,但是隨機讀的性能很一般引瀑。換句話說狂芋,LevelDB 很適合應(yīng)用在查詢較少,而寫很多的場景憨栽。
個性化推薦引擎需要盡可能快的響應(yīng)用戶的每一次操作帜矾,以適應(yīng)用戶短期興趣的變化,進而提高推薦效果的精準性屑柔。各種推薦算法生成候選集屡萤、多算法融合、返回結(jié)果的時候掸宛,牽涉到頻繁的讀取操作死陆。
在高并發(fā)量的場景下,當內(nèi)存或者 redis 不足以完全支撐線上業(yè)務(wù)時唧瘾,使用 LevelDB 將會對性能有不錯的提升措译。畢竟 LevelDb 在寫的時候?qū)?nèi)存要求不高,讀的時候則根據(jù)性能要求的不同需要對應(yīng)的內(nèi)存饰序。
談到效果優(yōu)化瞳遍,業(yè)界都達成了一個共識:case-by-case 查看推薦結(jié)果,也就是說需要具體問題具體分析菌羽。只有通過這種方式發(fā)現(xiàn)問題掠械,才能更好地優(yōu)化推薦效果。
下面分析幾個常見的優(yōu)化方法:
1)推薦結(jié)果多樣化的優(yōu)化注祖。
在實際的推薦場景中猾蒂,抓住了用戶的喜好,但推薦出來滿屏的“相似”結(jié)果會帶來極差的用戶體驗是晨。如何在保證用戶興趣的前提下又能讓推薦結(jié)果的多樣性更好呢肚菠?
物品信息中很重要的一個特征是標簽。好的推薦系統(tǒng)不僅體現(xiàn)在精準性罩缴,還有多樣性和驚喜度方面的要求蚊逢。對物品信息進行深層度的挖掘分析层扶,進而對標簽進行拓展,也是一種實現(xiàn)上述要求行之有效的方法烙荷。
其實使用 word2vec 就可以解決這類問題镜会。
Google 于 2013 年開源推出了一個用于獲取 word vector 的工具包 word2vec,它包含了對兩種模型的訓(xùn)練终抽,如下圖戳表。在訓(xùn)練每種模型的時候又分 HS 和 NEG 兩種方法。(具體的數(shù)學原理可以參考相關(guān)論文)
在 Word2Vec 的訓(xùn)練過程中昼伴,每個 word vectors 都被要求為相鄰上下文中的 word 的出現(xiàn)作預(yù)測匾旭,所以即使隨機初始化 Word vectors,但是這些 vectors 最終仍然能通過預(yù)測行為捕獲到 word 之間的語義關(guān)系圃郊,從而訓(xùn)練到較好的 word vectors价涝。
這是僅有一個詞的 CBOW 模型。Word2Vec 盡量讓具有相同上下文的 word 的向量相似持舆,從而獲得較好的 vector representation 的相似性色瘩。這種相似性有時候是線性的,臨近的結(jié)果會與相似吏廉,即 Word2vec 可以學習到詞與詞之間語義上的聯(lián)系泞遗。
另外惰许,由于 Word2Vec 采用了非常多的方法簡化網(wǎng)絡(luò)結(jié)構(gòu)席覆,簡化訓(xùn)練流程,導(dǎo)致 Word2Vec 可以很輕易的訓(xùn)練超大的訓(xùn)練集汹买。一個優(yōu)化后的單機實現(xiàn)版的 Word2Vec 算法可以在一天時間內(nèi)訓(xùn)練 100 bililion words佩伤。
word2vec 可以把對文本內(nèi)容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度晦毙,來表示文本語義上的相似度生巡。基于得到的向量见妒,也就得到了可以擴展的詞孤荣。
從圖中可以看出,基于 word2vec 訓(xùn)練好的模型须揣,輸入“美食”盐股,返回了相似程度最高的十個詞及相似權(quán)重,從結(jié)果上看都是和美食相關(guān)的耻卡》柚基于這些相似詞召回相關(guān)推薦結(jié)果,不僅可以保證語義上的相關(guān)性卵酪,也可以大大改善推薦結(jié)果的多樣性幌蚊。
2)item embedding
20 16 年 Oren Barkan 以及 Noam Koenigstein 借鑒 word2vec 的思想谤碳,提出 item2vec,通過淺層的神經(jīng)網(wǎng)絡(luò)結(jié)合 SGNS(skip-gram with negative sampling) 訓(xùn)練之后溢豆,將 item 映射到固定維度的向量空間中蜒简,通過向量的運算來衡量 item 之間的相似性。
詞的上下文即為鄰近詞的序列沫换,很容易想到臭蚁,詞的序列其實等價于一系列連續(xù)操作的 item 序列,因此讯赏,訓(xùn)練語料只需將句子改為連續(xù)操作的 item 序列即可垮兑,item 間的共現(xiàn)為正樣本,并按照 item 的頻率分布進行負樣本采樣漱挎。
Oren Barkan and Noam Koenigstein 以 SVD 作為 baseline系枪,SVD 的隱類以及 item2vec 的維度都取 40,用 Microsoft Xbox Music service 收集的 user-artists 數(shù)據(jù)集磕谅,對結(jié)果進行聚類私爷,同一個顏色的節(jié)點表示相同類型的音樂人。
圖 a 是 item2vec 的聚合效果膊夹,圖 b 是 SVD 分解的聚合效果衬浑,很顯然 item2vec 的聚合效果更勝一籌。
想了解學習更多技術(shù)干貨放刨,掃描下方二維碼關(guān)注“達觀數(shù)據(jù)”公眾號