-- 原創(chuàng),未經(jīng)授權(quán),禁止轉(zhuǎn)載 2017.11.15 --
推薦系統(tǒng)實(shí)踐
對(duì)于推薦系統(tǒng),本文總結(jié)內(nèi)容,如下圖所示:
推薦系統(tǒng).png
文章很長(zhǎng),你可以跳著看你感興趣的部分。
一、什么是推薦系統(tǒng)
1. 為什么需要推薦系統(tǒng)
結(jié)論是,為了解決互聯(lián)網(wǎng)時(shí)代下的信息超載問題。
看個(gè)數(shù)據(jù):
據(jù)IDC《數(shù)字宇宙》的研究報(bào)告表明,2020 年全球新建和復(fù)制的信息量將超過40ZB,是2012年的12倍;中國(guó)的數(shù)據(jù)量在2020年超過8ZB,比2012年增長(zhǎng)22倍。
單位換算是這樣的:
1ZB = 1024 EB;
1EB = 1024 PB;
1PB = 1024 TB;
1TB = 1024 GB;
1GB = 1024 MB;
即便坐擁海量信息,用戶卻無法找到真正對(duì)自己有用的,可見效率之低。
從前,人們是這樣解決信息超載問題的:
現(xiàn)實(shí)中,我有個(gè)東西想買(有明確目的)
- 小便利店 --> 憑經(jīng)驗(yàn)瀏覽所有貨架;
- 大型超市 --> 借助分類指示牌;
不知道買啥(沒有明確目的)
- 空間大,隨便逛
引申到互聯(lián)網(wǎng),有明確目的時(shí)
- 電商網(wǎng)站 --> 搜索引擎,信息檢索;
沒有明確目的時(shí)
- 巴掌大的地兒,靠個(gè)性化推薦
信息超載,不是互聯(lián)網(wǎng)獨(dú)有的,在現(xiàn)實(shí)生活也會(huì)存在這樣的問題,畢竟人的大腦同時(shí)能夠處理的信息只有4-7個(gè),我們面對(duì)的問題從來沒有變過,區(qū)別在于當(dāng)下的情況,所處的環(huán)境。
正如《大數(shù)據(jù)時(shí)代》中作者所言,這僅僅是一個(gè)開始,人們與世界的交流方式,從原來對(duì)因果關(guān)系的渴求,轉(zhuǎn)變?yōu)楝F(xiàn)在對(duì)相關(guān)關(guān)系的發(fā)現(xiàn)和使用上。
2. 搜索引擎與推薦系統(tǒng)
眾所周知,解決信息過載問題,最有代表性的解決方案是【分類目錄】和【搜索引擎】,這兩種解決方案分別催生了互聯(lián)網(wǎng)領(lǐng)域的兩家著名公司--雅虎和谷歌。
搜索引擎
- 分類目錄,是將著名網(wǎng)站分門別類,從而方便用戶根據(jù)類別查找公司。
但隨著互聯(lián)網(wǎng)規(guī)模不斷擴(kuò)大,分類目錄網(wǎng)站只能涵蓋少數(shù)熱門網(wǎng)站,已無法滿足用戶需求。因此,搜索引擎誕生了。
- 搜索引擎,用戶通過輸入關(guān)鍵字,查找自己需要的信息。
但是,用戶必須主動(dòng)提供準(zhǔn)確的關(guān)鍵詞,才能找到信息。所以用戶的其他需求,比如用戶無法找到準(zhǔn)確描述自己需求的關(guān)鍵詞時(shí),搜索引擎就無能為力了。
- 推薦系統(tǒng),和搜索引擎一樣,是一種幫助用戶快速發(fā)展有用信息的工具。通過分析用戶的歷史行為,給用戶的興趣建模,從而主動(dòng)給用戶推薦能夠滿足他們興趣和需求的信息。
并且,推薦系統(tǒng)能夠很好的發(fā)掘物品的長(zhǎng)尾,挑戰(zhàn)傳統(tǒng)的2/8原則(80%的銷售額來自20%的熱門品牌)。
從技術(shù)角度來看,搜索引擎和推薦系統(tǒng)的區(qū)別在于:
1)搜索引擎,注重搜索結(jié)果之間的關(guān)系和排序;
2)推薦系統(tǒng),需要研究用戶的興趣模型,利用社交網(wǎng)絡(luò)的信息進(jìn)行個(gè)性化的計(jì)算;
3)搜索引擎,由用戶主導(dǎo),需要輸入關(guān)鍵詞,自行選擇結(jié)果。如果結(jié)果不滿意,需要修改關(guān)鍵詞,再次搜索;
4)推薦系統(tǒng),由系統(tǒng)主導(dǎo),根據(jù)用戶的瀏覽順序,引導(dǎo)用戶發(fā)現(xiàn)自己感興趣的信息;
3. 推薦系統(tǒng)的定義
推薦系統(tǒng)通過發(fā)掘用戶的行為,找到用戶的個(gè)性化需求,從而將長(zhǎng)尾物品準(zhǔn)確推薦給需要它的用戶,幫助用戶找到他們感興趣但很難發(fā)現(xiàn)的物品。
高質(zhì)量的推薦系統(tǒng)會(huì)使用戶對(duì)系統(tǒng)產(chǎn)生依賴,因此,推薦系統(tǒng)不僅能為用戶提供個(gè)性化服務(wù),還能與用戶建立長(zhǎng)期穩(wěn)定的關(guān)系,提高用戶忠誠(chéng)度,防止用戶流失。
二、推薦系統(tǒng)評(píng)測(cè)
如何判定什么是好的推薦系統(tǒng)?這是評(píng)測(cè)需要解決的首要問題。
一般推薦系統(tǒng)的參與方有3個(gè):
- 用戶
- 物品提供商
- 推薦系統(tǒng)提供網(wǎng)站
因此,評(píng)測(cè)一個(gè)推薦系統(tǒng)時(shí),需要考慮3方的利益,一個(gè)好的推薦系統(tǒng)是能夠令三方共贏的系統(tǒng)。
推薦系統(tǒng)評(píng)測(cè),總結(jié)圖如下:
推薦系統(tǒng)評(píng)測(cè).png
1. 實(shí)驗(yàn)方法
獲得評(píng)測(cè)指標(biāo)的實(shí)驗(yàn)方法,通常分3種:
- 離線實(shí)驗(yàn)(offline experiment)
- 用戶調(diào)查(user study)
- 在線實(shí)驗(yàn)(online experiment)
我們分別介紹3種實(shí)驗(yàn)方法的優(yōu)缺點(diǎn)。
1)離線實(shí)驗(yàn)
離線實(shí)驗(yàn)的方法的步驟如下:
a)通過日志系統(tǒng)獲得用戶行為數(shù)據(jù),并按照一定格式生成一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)集;
b)將數(shù)據(jù)集按照一定的規(guī)則分成訓(xùn)練集和測(cè)試集;
c)在訓(xùn)練集上訓(xùn)練用戶興趣模型,在測(cè)試集上進(jìn)行預(yù)測(cè);
d)通過事先定義的離線指標(biāo),評(píng)測(cè)算法在測(cè)試集上的預(yù)測(cè)結(jié)果。
從以上步驟看出,離線實(shí)驗(yàn)的都是在數(shù)據(jù)集上完成的。意味著,它不需要一個(gè)實(shí)際的系統(tǒng)作為支撐,只需要有一個(gè)從日志中提取的數(shù)據(jù)集即可。
離線實(shí)驗(yàn)的優(yōu)點(diǎn)是:
- 不需要有對(duì)實(shí)際系統(tǒng)的控制權(quán);
- 不需要用戶參與實(shí)踐;
- 速度快,可以測(cè)試大量算法;
缺點(diǎn)是:
- 數(shù)據(jù)集的稀疏性限制了適用范圍,例如一個(gè)數(shù)據(jù)集中沒有包含某用戶的歷史行為,則無法評(píng)價(jià)對(duì)該用戶的推薦結(jié)果;
- 評(píng)價(jià)結(jié)果的客觀性,無法得到用戶主觀性的評(píng)價(jià);
- 難以找到離線評(píng)價(jià)指標(biāo)和在線真實(shí)反饋(如 點(diǎn)擊率、轉(zhuǎn)化率、點(diǎn)擊深度、購(gòu)買客單價(jià)、購(gòu)買商 品類別等)之間的關(guān)聯(lián)關(guān)系;
2)用戶調(diào)查
用戶調(diào)查需要一些真實(shí)的用戶,讓他們?cè)谛枰獪y(cè)試的推薦系統(tǒng)上完成一些任務(wù)。在他們完成任務(wù)時(shí),需要觀察和記錄用戶的行為,并讓他們回答一些問題。
最后,我們通過分析他們的行為和答案,了解測(cè)試系統(tǒng)的性能。
用戶調(diào)查的優(yōu)點(diǎn)是:
- 可以獲得用戶主觀感受的指標(biāo),出錯(cuò)后容易彌補(bǔ);
缺點(diǎn)是:
- 招募測(cè)試用戶代價(jià)較大;
- 無法組織大規(guī)模的測(cè)試用戶,統(tǒng)計(jì)意義不足;
3)在線實(shí)驗(yàn)
在完成離線實(shí)驗(yàn)和用戶調(diào)查之后,可以將系統(tǒng)上線做AB測(cè)試,將它和舊算法進(jìn)行比較。
在線實(shí)驗(yàn)最常用的評(píng)測(cè)算法是【A/B測(cè)試】,它通過一定的規(guī)則將用戶隨機(jī)分成幾組,對(duì)不同組的用戶采用不同的算法,然后通過統(tǒng)計(jì)不同組的評(píng)測(cè)指標(biāo),比較不同算法的好壞。
它的核心思想是:
a) 多個(gè)方案并行測(cè)試;
b) 每個(gè)方案只有一個(gè)變量不同;
c) 以某種規(guī)則優(yōu)勝劣汰。
其中第2點(diǎn)暗示了A/B 測(cè)試的應(yīng)用范圍:A/B測(cè)試必須是單變量。
對(duì)于推薦系統(tǒng)的評(píng)價(jià)中,唯一變量就是--推薦算法。
有個(gè)很棒的網(wǎng)站,http://www.abtests.com,里面有很多通過實(shí)際AB測(cè)試提高網(wǎng)站用戶滿意度的例子。
AB測(cè)試的優(yōu)點(diǎn)是:
- 可以公平獲得不同算法實(shí)際在線時(shí)的性能指標(biāo),包括商業(yè)上關(guān)注的指標(biāo);
缺點(diǎn)是:
- 周期較長(zhǎng),必須進(jìn)行長(zhǎng)期的實(shí)驗(yàn)才能得到可靠的結(jié)果;
大型網(wǎng)站做AB測(cè)試,可能會(huì)因?yàn)椴煌瑘F(tuán)隊(duì)同時(shí)進(jìn)行各種測(cè)試對(duì)結(jié)果造成干擾,所以切分流量是AB測(cè)試中的關(guān)鍵。
不同的層以及控制這些層的團(tuán)隊(duì),需要從一個(gè)統(tǒng)一的地方獲得自己AB測(cè)試的流量,而不同層之間的流量應(yīng)該是正交的。
AB測(cè)試系統(tǒng).png
4)總結(jié)
一般來說,一個(gè)新的推薦算法最終上線,需要完成上述的3個(gè)實(shí)驗(yàn)。
- 首先,通過離線實(shí)驗(yàn)證明它在很多離線指標(biāo)上優(yōu)于現(xiàn)有的算法;
- 其次,通過用戶調(diào)查確定用戶滿意度不低于現(xiàn)有的算法;
- 最后,通過在線AB測(cè)試確定它在我們關(guān)心的指標(biāo)上優(yōu)于現(xiàn)有的算法;
2. 評(píng)測(cè)指標(biāo)
評(píng)測(cè)指標(biāo)用于評(píng)測(cè)推薦系統(tǒng)的性能,有些可以定量計(jì)算,有些只能定性描述。
1)用戶滿意度
用戶滿意度是評(píng)測(cè)推薦系統(tǒng)的重要指標(biāo),無法離線計(jì)算,只能通過用戶調(diào)查或者在線實(shí)驗(yàn)獲得。
調(diào)查問卷,需要考慮到用戶各方面的感受,用戶才能針對(duì)問題給出準(zhǔn)確的回答。
在線系統(tǒng)中,用戶滿意度通過統(tǒng)計(jì)用戶行為得到。比如用戶如果購(gòu)買了推薦的商品,就表示他們?cè)谝欢ǔ潭壬蠞M意,可以用購(gòu)買率度量用戶滿意度。
一般情況,我們可以用用戶點(diǎn)擊率、停留時(shí)間、轉(zhuǎn)化率等指標(biāo)度量用戶的滿意度。
2)預(yù)測(cè)準(zhǔn)確度
預(yù)測(cè)準(zhǔn)確度,度量的是推薦系統(tǒng)預(yù)測(cè)用戶行為的能力。 是推薦系統(tǒng)最重要的離線評(píng)測(cè)指標(biāo)。
大部分的關(guān)于推薦系統(tǒng)評(píng)測(cè)指標(biāo)的研究,都是針對(duì)預(yù)測(cè)準(zhǔn)確度的。因?yàn)樵撝笜?biāo)可以通過離線實(shí)驗(yàn)計(jì)算,方便了學(xué)術(shù)界的研究人員。
由于離線的推薦算法有不同的研究方向,準(zhǔn)確度指標(biāo)也不同,根據(jù)研究方向,可分為:預(yù)測(cè)評(píng)分準(zhǔn)確度和TopN推薦。
a)預(yù)測(cè)評(píng)分準(zhǔn)確度
預(yù)測(cè)評(píng)分的準(zhǔn)確度,衡量的是算法預(yù)測(cè)的評(píng)分與用戶的實(shí)際評(píng)分的貼近程度。
這針對(duì)于一些需要用戶給物品評(píng)分的網(wǎng)站。
預(yù)測(cè)評(píng)分的準(zhǔn)確度指標(biāo),一般通過以下指標(biāo)計(jì)算:
平均絕對(duì)誤差(MAE)
MAE.pngMAE因其計(jì)算簡(jiǎn)單、通俗易懂得到了廣泛的應(yīng)用。但MAE指標(biāo)也有一定的局限性,因?yàn)閷?duì)MAE指標(biāo)貢獻(xiàn)比較大的往往是那種很難預(yù)測(cè)準(zhǔn)確的低分商品。
所以即便推薦系統(tǒng)A的MAE值低于系統(tǒng)B,很可能只是由于系統(tǒng)A更擅長(zhǎng)預(yù)測(cè)這部分低分商品的評(píng)分,即系統(tǒng)A比系統(tǒng)B能更好的區(qū)分用戶非常討厭和一般討厭的商品,顯然這樣區(qū)分的意義不大。
均方根誤差(RMSE)
RMSE.pngNetflix認(rèn)為RMSE加大了對(duì)預(yù)測(cè)不準(zhǔn)的用戶物品評(píng)分的懲罰(平方項(xiàng)的懲罰),因而對(duì)系統(tǒng)的評(píng)測(cè)更加苛刻。
研究表明,如果評(píng)分系統(tǒng)是基于整數(shù)建立的(即用戶給的評(píng)分都是整數(shù)),那么對(duì)預(yù)測(cè)結(jié)果取整數(shù)會(huì)降低MAE的誤差。
b)TopN推薦
網(wǎng)站提供推薦服務(wù)時(shí),一般是給用戶一個(gè)個(gè)性化的推薦列表,這種推薦叫做TopN推薦。
TopN推薦的預(yù)測(cè)準(zhǔn)確率,一般通過2個(gè)指標(biāo)度量:
準(zhǔn)確率(precision)
召回率(recall)
R(u)是根據(jù)用戶在訓(xùn)練集上的行為給用戶做出的推薦列表,T(u)是用戶在測(cè)試集上的行為列表。
TopN推薦更符合實(shí)際的應(yīng)用需求,比如預(yù)測(cè)用戶是否會(huì)看一部電影,比預(yù)測(cè)用戶看了電影之后會(huì)給它什么評(píng)分更重要。
3)覆蓋率
覆蓋率(coverage)是描述一個(gè)推薦系統(tǒng)對(duì)物品長(zhǎng)尾的發(fā)掘能力。
最簡(jiǎn)單的定義是,推薦系統(tǒng)推薦出來的物品占總物品的比例。
假設(shè)系統(tǒng)的用戶集合為U,推薦系統(tǒng)給每個(gè)用戶推薦一個(gè)長(zhǎng)度為N的物品列表R(u),覆蓋率公式為:
覆蓋率是內(nèi)容提供者關(guān)心的指標(biāo),覆蓋率為100%的推薦系統(tǒng)可以將每個(gè)物品都推薦給至少一個(gè)用戶。
除了推薦物品的占比,還可以通過研究物品在推薦列表中出現(xiàn)的次數(shù)分布,更好的描述推薦系統(tǒng)的挖掘長(zhǎng)尾的能力。
如果分布比較平,說明推薦系統(tǒng)的覆蓋率很高;如果分布陡峭,說明分布系統(tǒng)的覆蓋率較低。
信息論和經(jīng)濟(jì)學(xué)中有兩個(gè)著名指標(biāo),可以定義覆蓋率:
- 信息熵
p(i)是物品i的流行度除以所有物品流行度之和。
基尼系數(shù)(Gini Index)
p(ij)是按照物品流行度p()從小到大排序的物品列表中第j個(gè)物品。
- 評(píng)測(cè)馬太效應(yīng)
馬太效應(yīng),是指強(qiáng)者越強(qiáng),弱者越弱的效應(yīng)。推薦系統(tǒng)的初衷是希望消除馬太效應(yīng),使得各物品都能被展示給對(duì)它們感興趣的人群。
但是,很多研究表明,現(xiàn)在的主流推薦算法(協(xié)同過濾)是具有馬太效應(yīng)的。評(píng)測(cè)推薦系統(tǒng)是否具有馬太效應(yīng)可以使用基尼系數(shù)。
如,G1是從初始用戶行為中計(jì)算出的物品流行度的基尼系數(shù),G2是從推薦列表中計(jì)算出的物品流行度的基尼系數(shù),那么如果G1>G2,就說明推薦算法具有馬太效應(yīng)。
4)多樣性
為了滿足用戶廣泛的興趣,推薦列表需要能夠覆蓋用戶不同興趣的領(lǐng)域,即需要具有多樣性。
多樣性描述了推薦列表中物品兩兩之間的不相似性。假設(shè)s(i,j)在[0,1]區(qū)間定義了物品i和j之間的相似度,那么用戶u的推薦列表R(u)的多樣性定義如下:
推薦系統(tǒng)整體多樣性可以定義為所有用戶推薦列表多樣性的平均值:
5)新穎性
新穎性也是影響用戶體驗(yàn)的重要指標(biāo)之一。它指的是向用戶推薦非熱門非流行物品的能力。
評(píng)測(cè)新穎度最簡(jiǎn)單的方法,是利用推薦結(jié)果的平均流行度,因?yàn)樵讲粺衢T的物品,越可能讓用戶覺得新穎。
此計(jì)算比較粗糙,需要配合用戶調(diào)查準(zhǔn)確統(tǒng)計(jì)新穎度。
6)驚喜度
推薦結(jié)果和用戶的歷史興趣不相似,但卻讓用戶滿意,這樣就是驚喜度很高。
目前驚喜度還沒有公認(rèn)的指標(biāo)定義方式,最近幾年研究的人很多,深入研究可以參考一些論文。
7)信任度
如果用戶信任推薦系統(tǒng),就會(huì)增加用戶和推薦系統(tǒng)的交互。
提高信任度的方式有兩種:
增加系統(tǒng)透明度
提供推薦解釋,讓用戶了解推薦系統(tǒng)的運(yùn)行機(jī)制。利用社交網(wǎng)絡(luò),通過好友信息給用戶做推薦
通過好友進(jìn)行推薦解釋
度量信任度的方式,只能通過問卷調(diào)查。
8)實(shí)時(shí)性
推薦系統(tǒng)的實(shí)時(shí)性,包括兩方面:
- 實(shí)時(shí)更新推薦列表滿足用戶新的行為變化;
- 將新加入系統(tǒng)的物品推薦給用戶;
9)健壯性
任何能帶來利益的算法系統(tǒng)都會(huì)被攻擊,最典型的案例就是搜索引擎的作弊與反作弊斗爭(zhēng)。
健壯性(robust,魯棒性)衡量了推薦系統(tǒng)抗擊作弊的能力。
2011年的推薦系統(tǒng)大會(huì)專門有一個(gè)推薦系統(tǒng)健壯性的教程,作者總結(jié)了很多作弊方法,最著名的是行為注入攻擊(profile injection attack)。
就是注冊(cè)很多賬號(hào),用這些賬號(hào)同時(shí)購(gòu)買A和自己的商品。此方法針對(duì)亞馬遜的一種推薦方法,“購(gòu)買商品A的用戶也經(jīng)常購(gòu)買的其他商品”。
評(píng)測(cè)算法的健壯性,主要利用模擬攻擊:
a)給定一個(gè)數(shù)據(jù)集和算法,用算法給數(shù)據(jù)集中的用戶生成推薦列表;
b)用常用的攻擊方法向數(shù)據(jù)集中注入噪聲數(shù)據(jù);
c)利用算法在有噪聲的數(shù)據(jù)集上再次生成推薦列表;
d)通過比較攻擊前后推薦列表的相似度評(píng)測(cè)算法的健壯性。
提高系統(tǒng)健壯性的方法:
- 選擇健壯性高的算法;
- 選擇代價(jià)較高的用戶行為,如購(gòu)買行為比瀏覽行為代價(jià)高;
- 在使用數(shù)據(jù)前,進(jìn)行攻擊檢測(cè),從而對(duì)數(shù)據(jù)進(jìn)行清理。
10)商業(yè)目標(biāo)
設(shè)計(jì)推薦系統(tǒng)時(shí),需要考慮最終的商業(yè)目標(biāo)。不同網(wǎng)站具有不同的商業(yè)目標(biāo),它與網(wǎng)站的盈利模式息息相關(guān)。
總結(jié):
作者認(rèn)為,對(duì)于可以離線優(yōu)化的指標(biāo),在給定覆蓋率、多樣性、新穎性等限制條件下,應(yīng)盡量?jī)?yōu)化預(yù)測(cè)準(zhǔn)確度。
3. 評(píng)測(cè)維度
增加評(píng)測(cè)維度的目的,就是知道一個(gè)算法在什么情況下性能最好。
一般評(píng)測(cè)維度分3種:
- 用戶維度
主要包括用戶的人口統(tǒng)計(jì)學(xué)信息、活躍度以及是不是新用戶等; - 物品維度
包括物品的屬性信息、流行度、平均分以及是不是新加入的物品等; - 時(shí)間維度
包括季節(jié),是工作日還是周末,白天還是晚上等;
如果推薦系統(tǒng)的評(píng)測(cè)報(bào)告中,包含了不同維度下的系統(tǒng)評(píng)測(cè)指標(biāo),就能幫我們?nèi)媪私庀到y(tǒng)性能。
三、推薦算法通用模型
1. 推薦算法通用模型
推薦系統(tǒng)有3個(gè)重要的模塊:
- 用戶建模模塊
- 推薦對(duì)象建模模塊
- 推薦算法模塊
通用的推薦系統(tǒng)模型流程如圖,技術(shù)一點(diǎn)的描述過程如下:
a)推薦系統(tǒng)通過用戶行為,建立用戶模型;
b)通過物品的信息,建立推薦對(duì)象模型;
c)通過用戶興趣匹配物品的特征信息,再經(jīng)過推薦算法計(jì)算篩選,找到用戶可能感興趣的推薦對(duì)象,然后推薦給用戶。
用戶建模模塊
建立用戶模型之前,需要考慮下面幾個(gè)問題:
(1)模型的輸入數(shù)據(jù)有哪些,如何獲取模型的輸入數(shù)據(jù)。
(2)如何考慮用戶的興趣及需求的變化。
(3)建模的對(duì)象是誰。
(4)如何建模。
(5)模型的輸出是什么。獲取用戶信息就是解決模型輸入數(shù)據(jù)的問題,輸入數(shù)據(jù)主要有以下幾種:
(1)用戶屬性:人口統(tǒng)計(jì)學(xué)信息;(2)用戶手動(dòng)輸入的信息:包括用戶在搜索引擎中輸入的關(guān)鍵詞,用戶反饋的信息,對(duì)推薦對(duì)象的喜好程度等;
(3)用戶的瀏覽行為和瀏覽內(nèi)容:包括瀏覽次數(shù)、頻率、停留時(shí)間等,瀏覽頁(yè)面時(shí)的操作(收藏、保存、復(fù)制等)等。服務(wù)器端保存的日志也能較好地記錄用戶的瀏覽行為和內(nèi)容。
(4)推薦對(duì)象的屬性特征:不同的推薦對(duì)象,用戶建模的輸入數(shù)據(jù)也不同。網(wǎng)頁(yè)等推薦對(duì)象通常考慮對(duì)象的內(nèi)容和用戶之間的相似性,而產(chǎn)品等推薦對(duì)象通常考慮用戶對(duì)產(chǎn)品的評(píng)價(jià)。
為提高推薦質(zhì)量,推薦對(duì)象的相關(guān)的屬性也要考慮進(jìn)去,比如除網(wǎng)頁(yè)內(nèi)容以外,還要考慮網(wǎng)頁(yè)的發(fā)布人、時(shí)間等。
產(chǎn)品類的對(duì)象還要考慮產(chǎn)品的品牌、價(jià)格、出售時(shí)間等。
獲取模型輸入數(shù)據(jù)的方式有顯式獲取、隱式獲取和啟發(fā)式獲取三種方式。
用戶模型的建模方法主要有遺傳算法、基于機(jī)器學(xué)習(xí)的 方法,例如 TF-IDF、自動(dòng)聚類、貝葉斯分類器、決策樹歸納和神經(jīng)網(wǎng)絡(luò)方法等。
- 推薦對(duì)象建模
考慮以下幾個(gè)問題:
(1)提取推薦對(duì)象的什么特征,如何提取,提取的特征用于什么目的。
(2)對(duì)象的特征描述和用戶文件描述之間有關(guān)聯(lián)。
(3)提取到的每個(gè)對(duì)象特征對(duì)推薦結(jié)果會(huì)有什么影響。
(4)對(duì)象的特征描述文件能否自動(dòng)更新。
2. 算法模塊
目前主要的推薦算法,如下圖所示。
推薦算法是整個(gè)推薦系統(tǒng)中最核心的部分,在很大程度上決定了推薦系統(tǒng)類型和性能的優(yōu)劣。
四、推薦算法詳述
1)基于內(nèi)容的推薦
原理是基于用戶感興趣的物品A,找到和A內(nèi)容信息相近的物品B。
利用用戶和物品本身的內(nèi)容特征,如用戶的地理位置、性別、年齡,電影物品的導(dǎo)演、演員、發(fā)布時(shí)間等。
比如你喜歡看《怪奇物語I》,系統(tǒng)會(huì)給你推薦《怪奇物語II》。
所以提取推薦對(duì)象的特征,是內(nèi)容推薦算法的關(guān)鍵。但是對(duì)于多媒體內(nèi)容,如視頻、音樂,很難找到它們之間的特性關(guān)聯(lián)性。
基于內(nèi)容的推薦的優(yōu)點(diǎn)如下:
(1) 簡(jiǎn)單、有效,推薦結(jié)果直觀,容易理解,不需要領(lǐng)域知識(shí)。
(2) 不需要用戶的歷史數(shù)據(jù),如對(duì)對(duì)象的評(píng)價(jià)等。
(3) 沒有關(guān)于新推薦對(duì)象出現(xiàn)的冷啟動(dòng)問題。
(4) 沒有稀疏問題。
(5) 算法成熟,如數(shù)據(jù)挖掘、聚類分析等。
基于內(nèi)容的推薦的缺點(diǎn)如下:
(1) 受到了推薦對(duì)象特征提取能力的限制。
比如圖像、視頻,沒有有效的特征提取方法。即便是文本資源,特征提取也只能反應(yīng)一部分內(nèi)容,難以提取內(nèi)容質(zhì)量,會(huì)影響用戶滿意度。
(2) 很難出現(xiàn)新的推薦結(jié)果。
根據(jù)用戶興趣的喜好進(jìn)行推薦,很難出現(xiàn)驚喜。對(duì)于時(shí)間敏感的內(nèi)容,如新聞,推薦內(nèi)容基本相同,體驗(yàn)度較差。
(3)存在新用戶出現(xiàn)時(shí)的冷啟動(dòng)問題。
當(dāng)新用戶出現(xiàn)時(shí), 系統(tǒng)較難獲得該用戶的興趣偏好,無法進(jìn)行有效推薦。
(4) 推薦對(duì)象內(nèi)容分類方法需要的數(shù)據(jù)量較大。
2)協(xié)同過濾算法
僅僅基于用戶行為數(shù)據(jù)設(shè)計(jì)的推薦算法,稱為協(xié)同過濾算法。此方法主要根據(jù)用戶對(duì)物品的歷史行為,尋找用戶或物品的近鄰集合,以此計(jì)算用戶對(duì)物品的偏好。
主要的算法分3種,最廣泛應(yīng)用的是基于領(lǐng)域的方法:
a) 基于領(lǐng)域的模型算法
主要包含兩種算法:
i) 基于用戶的協(xié)同過濾算法(UserCF)
這種算法給用戶推薦和他興趣相似的其他用戶喜歡的物品。
- 算法步驟:
(1) 找到和目標(biāo)用戶興趣相似的用戶集合;
(2) 找到這個(gè)集合中的用戶喜歡的,且目標(biāo)用戶沒有聽說過的物品,推薦給目標(biāo)用戶。
算法的關(guān)鍵是計(jì)算兩個(gè)用戶的興趣相似度。協(xié)同過濾計(jì)算用戶興趣相似度是利用用戶行為的相似度。
UserCF
- 計(jì)算用戶相似度的方法有3種:
- 余弦相似性
- 相關(guān)相似性(皮爾森系數(shù)相關(guān))
- 修正的余弦相似性
計(jì)算用戶興趣相似度時(shí),要避免熱門物品自帶馬太效應(yīng)的影響。換句話說,兩個(gè)用戶對(duì)冷門物品采取過同樣行為,更能說明他們的興趣相似。
- 缺點(diǎn):
- 用戶數(shù)目越大,計(jì)算用戶興趣相似度越復(fù)雜,時(shí)間、空間復(fù)雜度的增長(zhǎng)和用戶數(shù)的增長(zhǎng)近似于平方關(guān)系。
- 解釋性不強(qiáng)
ii) 基于物品的協(xié)同過濾算法(ItemCF)
這種算法給用戶推薦和他之前喜歡的物品相似的物品。
該算法是目前業(yè)界應(yīng)用最多的算法,如亞馬遜、Netflix、YouTube,都是以該算法為基礎(chǔ)。
ItemCF 與 基于內(nèi)容的推薦算法的區(qū)別
- 基于內(nèi)容的推薦算法,計(jì)算的是物品內(nèi)容屬性之間的相似度。如,電影的導(dǎo)演是不是同一個(gè)人;
- ItemCF是通過用戶的行為計(jì)算物品之間的相似度。如,物品A、B具有很大相似度,是因?yàn)橄矚g物品A的用戶也大都喜歡物品B。
算法步驟:
(1) 根據(jù)用戶的歷史行為,計(jì)算物品之間的相似度;
(2) 根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表。
兩個(gè)物品產(chǎn)生相似度,是因?yàn)樗鼈児餐缓芏嘤脩粝矚g,也就是說,每個(gè)用戶都可以通過它們的歷史興趣列表給物品“貢獻(xiàn)”相似度。
ItemCF
用戶活躍度對(duì)物品相似度的影響
IUF(Inverse User Frequence),用戶活躍度對(duì)數(shù)的倒數(shù)的參數(shù)。
論文提出的觀點(diǎn)是,活躍用戶對(duì)物品相似度的貢獻(xiàn)應(yīng)該小于不活躍的用戶。用IUF修正物品相似度的計(jì)算。物品相似度的歸一化
研究表明,將ItemCF的相似度矩陣按最大值歸一,可以提高推薦的準(zhǔn)確率。UserCF 與 ItemCF 的優(yōu)缺點(diǎn)
b) 隱語義模型算法
LFM(latent factor model)隱語義模型是最近幾年推薦系統(tǒng)領(lǐng)域最熱門的話題,它的核心思想是通過隱含特征聯(lián)系用戶興趣和物品。
i)隱語義模型解決了什么問題
比如,用戶A的興趣列表里,有關(guān)于偵探小說、科普?qǐng)D書和計(jì)算機(jī)技術(shù)圖書。用戶B的興趣列表集中在數(shù)學(xué)和機(jī)器學(xué)習(xí)方面。
如何給用戶A和B推薦圖書?
除了UserCF與ItemCF,還可以對(duì)書和物品的興趣進(jìn)行分類。對(duì)于某個(gè)用戶,首先得到他的興趣分類,然后從分類中挑選他可能喜歡的物品。
基于興趣分類的方法,大概需要解決的問題:
- 如何給物品進(jìn)行分類?
- 如何確定用戶對(duì)哪類物品感興趣,以及感興趣程度?
- 對(duì)于一個(gè)給定的分類,選擇哪些屬于這個(gè)類的物品推薦給用戶,以及如何確定這些物品在一個(gè)類中的權(quán)重?
人工編輯分類存在的問題:
- 編輯的意見不能代表各種用戶的意見。
- 編輯很難控制分類的粒度。
- 編輯很難給一個(gè)物品多個(gè)分類。
- 編輯很難給出多維度的分類。
- 編輯很難決定一個(gè)物品在某一個(gè)分類的權(quán)重。
隱語義分析技術(shù)解決了上述5個(gè)問題:
- 用戶的行為代表了用戶對(duì)物品分類的看法。比如,如果兩個(gè)物品被很多用戶同時(shí)喜歡,這個(gè)兩個(gè)物品很可能屬于同一類。
- 隱語義技術(shù)允許我們指定最終的分類數(shù)目,分類數(shù)越多,分類粒度越細(xì)。
- 隱語義技術(shù)可以計(jì)算出物品屬于每個(gè)類的權(quán)重,因?yàn)槊總€(gè)物品不是硬性地被分到一個(gè)類目中。
- 隱語義技術(shù)給出的每個(gè)分類都不是一個(gè)維度,它根據(jù)用戶的共同興趣計(jì)算得出。
- 隱語義技術(shù)可以通過統(tǒng)計(jì)用戶行為決定物品在每個(gè)類中的權(quán)重,如果喜歡某個(gè)類的用戶都會(huì)喜歡某個(gè)物品,那么這個(gè)物品在這個(gè)類中的權(quán)重就可能較高。
隱語義技術(shù)有很多著名的模型和方法,其中耳熟能詳?shù)拿~有pLSA、LDA、隱含類別模型、隱含主題模型、矩陣分解。這些技術(shù)和方法在本質(zhì)上是相同的,都可以用于個(gè)性化推薦系統(tǒng)。
ii)LFM算法詳解
LFM公式
推薦系統(tǒng)的用戶行為分為顯性反饋和隱性反饋,LFM在顯性反饋數(shù)據(jù)(評(píng)分?jǐn)?shù)據(jù))上解決評(píng)分預(yù)測(cè)問題達(dá)到了很好的精度。
對(duì)于隱性反饋數(shù)據(jù),這種數(shù)據(jù)集的特點(diǎn)是,只有正樣本(用戶喜歡什么物品),沒有負(fù)樣本(用戶對(duì)什么物品不感興趣)。
在隱性反饋數(shù)據(jù)集上應(yīng)用LFM解決TopN推薦,第一個(gè)關(guān)鍵問題是如何給每個(gè)用戶生成負(fù)樣本。
- 對(duì)于這個(gè)問題,Rong Pan在文章中做了很多探討,對(duì)比了如下幾種方法:
- 1)對(duì)于一個(gè)用戶,用他所有沒有過行為的物品作為負(fù)樣本。
- 2)對(duì)于一個(gè)用戶,從他沒有過行為的物品中均勻采樣出一些物品作為負(fù)樣本。
- 3)對(duì)于一個(gè)用戶,從他沒有過行為的物品中采樣出一些物品作為負(fù)樣本,但采樣時(shí),保證每個(gè)用戶的正負(fù)樣本數(shù)目相當(dāng)。
- 4)對(duì)于一個(gè)用戶,從他沒有過行為的物品中采樣出一些物品作為負(fù)樣本,但采樣時(shí),偏重采樣不熱門的物品。
對(duì)于1),它的明顯缺點(diǎn)是負(fù)樣本太多,正負(fù)樣本數(shù)目相差懸殊,因而計(jì)算復(fù)雜度很高,最終結(jié)果的精度也很差。另外三種方法的效果,作者表示,3)> 2)> 4)。
- 對(duì)負(fù)樣本的采樣還應(yīng)該遵循以下原則:
- 對(duì)每個(gè)用戶,要保證負(fù)樣本的平衡(數(shù)目相似)
- 對(duì)每個(gè)用戶采樣負(fù)樣本時(shí),要選取那些很熱門,而用戶卻沒有行為的物品。
通過離線實(shí)驗(yàn)對(duì)比LFM在TopN推薦中的性能,在LFM中,有4個(gè)重要參數(shù):
- 隱特征的個(gè)數(shù)F;
- 學(xué)習(xí)速率alpha;
- 正則化參數(shù)lambda;
- 負(fù)樣本/正樣本比例ratio;
實(shí)驗(yàn)表明,ratio參數(shù)對(duì)LFM的性能影響最大。
iii)基于LMF的實(shí)際系統(tǒng)的例子
雅虎的研究人員公布過一個(gè)使用LFM進(jìn)行雅虎首頁(yè)個(gè)性化設(shè)計(jì)的方案。
LFM的缺點(diǎn)是,很難實(shí)現(xiàn)實(shí)時(shí)的推薦。
經(jīng)典的LFM模型每次訓(xùn)練時(shí),需要掃描所有用戶的行為記錄,這樣才能計(jì)算出用戶隱類向量和物品隱類向量。所以一般每天只訓(xùn)練一次。
雅虎的解決方案是:
- 利用新聞鏈接的內(nèi)容屬性(關(guān)鍵詞、類別等)得到鏈接的內(nèi)容特征向量;
- 實(shí)時(shí)收集用戶對(duì)鏈接的行為,并用這些數(shù)據(jù)得到鏈接的隱特征向量;
- 利用公式預(yù)測(cè)用戶是否會(huì)單擊鏈接。
iiii)LFM和基于領(lǐng)域的方法區(qū)別
總結(jié)如下圖:
c) 基于圖的模型
用戶行為很容易用二分圖表示,因此很多圖的算法都可以用到推薦系統(tǒng)中。也可以把基于領(lǐng)域的模型看做是基于圖的模型的簡(jiǎn)單形式。
i)用戶行為數(shù)據(jù)的二分圖表示
基于圖的模型(graph-based model)是推薦系統(tǒng)中的重要內(nèi)容,其基本思想是將用戶行為數(shù)據(jù)表示為一系列的二元組。
每一個(gè)二元組(u,i)代表用戶u對(duì)物品 i 產(chǎn)生過行為,這樣便可以將這個(gè)數(shù)據(jù)集表示為一個(gè)二分圖。
下圖是一個(gè)簡(jiǎn)單的用戶物品二分圖模型,其中圓形節(jié)點(diǎn)代表用戶,方形節(jié)點(diǎn)代表物品,圓形節(jié)點(diǎn)和方形節(jié)點(diǎn)之間的邊代表用戶對(duì)物品的行為。比如圖中用戶節(jié)點(diǎn)A和物品節(jié)點(diǎn)a、b、d相連,說明用戶A對(duì)物品a、b、d產(chǎn)生過行為。
ii)基于圖的推薦算法
基于用戶行為二分圖,給用戶u推薦物品,可以轉(zhuǎn)化為計(jì)算用戶頂點(diǎn)u和與所有物品頂點(diǎn)之間的相關(guān)性,然后取與用戶沒有直接邊相連的物品,按照相關(guān)性的高低生成推薦列表。
其實(shí),這是一個(gè)圖上的排名問題,最著名的就是Google的pageRank算法。
度量圖中兩個(gè)頂點(diǎn)之間相關(guān)性,一般取決于3個(gè)因素:
- 兩個(gè)頂點(diǎn)之間的路徑數(shù);
- 兩個(gè)頂點(diǎn)之間的路徑長(zhǎng)度;
- 兩個(gè)頂點(diǎn)之間的路徑經(jīng)過的頂點(diǎn);
相關(guān)性高的兩個(gè)頂點(diǎn),一般具有以下特征:
- 兩個(gè)頂點(diǎn)之間有很多路徑相連;
- 鏈接兩個(gè)頂點(diǎn)之間的路徑長(zhǎng)度都比較短;
- 鏈接兩個(gè)頂點(diǎn)之間的路徑不會(huì)經(jīng)過出度比較大的頂點(diǎn)。
iii)PageRank算法簡(jiǎn)介
PageRank是Larry Page 和 Sergey Brin設(shè)計(jì)的,用來衡量特定網(wǎng)頁(yè)相對(duì)于搜索引擎中其他網(wǎng)頁(yè)的重要性的算法,其計(jì)算結(jié)果作為Google搜索結(jié)果中網(wǎng)頁(yè)排名的重要指標(biāo)。
網(wǎng)頁(yè)之間通過超鏈接相互連接,互聯(lián)網(wǎng)上不計(jì)其數(shù)的網(wǎng)頁(yè)就構(gòu)成了一張超大的圖。
PageRank假設(shè)用戶從所有網(wǎng)頁(yè)中隨機(jī)選擇一個(gè)網(wǎng)頁(yè)進(jìn)行瀏覽,然后通過超鏈接在網(wǎng)頁(yè)直接不斷跳轉(zhuǎn)。到達(dá)每個(gè)網(wǎng)頁(yè)后,用戶有兩種選擇:到此結(jié)束或者繼續(xù)選擇一個(gè)鏈接瀏覽。
算法令用戶繼續(xù)瀏覽的概率為d,用戶以相等的概率在當(dāng)前頁(yè)面的所有超鏈接中隨機(jī)選擇一個(gè)繼續(xù)瀏覽。
這是一個(gè)隨機(jī)游走的過程。
當(dāng)經(jīng)過很多次這樣的游走之后,每個(gè)網(wǎng)頁(yè)被訪問用戶訪問到的概率就會(huì)收斂到一個(gè)穩(wěn)定值。這個(gè)概率就是網(wǎng)頁(yè)的重要性指標(biāo),被用于網(wǎng)頁(yè)排名。算法迭代關(guān)系式如下所示:
上式中PR(i)是網(wǎng)頁(yè)i的訪問概率(也就是重要度),d是用戶繼續(xù)訪問網(wǎng)頁(yè)的概率,N是網(wǎng)頁(yè)總數(shù)。in(i)表示指向網(wǎng)頁(yè)i的網(wǎng)頁(yè)集合,out(j)表示網(wǎng)頁(yè)j指向的網(wǎng)頁(yè)集合。
iiii)PersonalRank算法簡(jiǎn)介
對(duì)于推薦系統(tǒng),我們需要計(jì)算的是物品節(jié)點(diǎn)相對(duì)于某一個(gè)用戶節(jié)點(diǎn)u的相關(guān)性。
Standford的Haveliwala于2002年在他《Topic-sensitive pagerank》一文中提出了PersonalRank算法,該算法能夠?yàn)橛脩魝€(gè)性化的對(duì)所有物品進(jìn)行排序。它的迭代公式如下:
我們發(fā)現(xiàn)PersonalRank跟PageRank的區(qū)別只是用ri替換了1/N,也就是說從不同點(diǎn)開始的概率不同。
我們重新描述一下算法的過程:
假設(shè)要給用戶u進(jìn)行個(gè)性化推薦,可以從用戶u對(duì)應(yīng)的節(jié)點(diǎn)Vu開始在用戶物品二分圖上進(jìn)行隨機(jī)游走。
游走到任何一個(gè)節(jié)點(diǎn)時(shí),首先按照概率α決定是繼續(xù)游走,還是停止這次游走并從Vu節(jié)點(diǎn)開始重新游走。如果決定繼續(xù)游走,那么就從當(dāng)前節(jié)點(diǎn)指向的節(jié)點(diǎn)中按照均勻分布隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為游走下次經(jīng)過的節(jié)點(diǎn)。
這樣,經(jīng)過很多次隨機(jī)游走后,每個(gè)物品節(jié)點(diǎn)被訪問到的概率會(huì)收斂到一個(gè)數(shù)。最終的推薦列表中物品的權(quán)重就是物品節(jié)點(diǎn)的訪問概率。
- 缺點(diǎn)
PersonalRank每次都需要在全圖迭代,所以時(shí)間復(fù)雜度非常高。
解決辦法是,- 減少迭代次數(shù),在收斂前停止。會(huì)影響精度,但影響不大。
- 從矩陣論出發(fā),重新設(shè)計(jì)算法。
3)基于關(guān)聯(lián)規(guī)則的推薦
主要用于購(gòu)物車分析。
(以下內(nèi)容摘自網(wǎng)絡(luò))
關(guān)聯(lián)規(guī)則是反映一個(gè)事物與其他事物之間的相互依存性和關(guān)聯(lián)性,常用于實(shí)體商店或在線電商的推薦系統(tǒng):通過對(duì)顧客的購(gòu)買記錄數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián)規(guī)則挖掘,最終目的是發(fā)現(xiàn)顧客群體的購(gòu)買習(xí)慣的內(nèi)在共性。
例如購(gòu)買產(chǎn)品A的同時(shí)也連帶購(gòu)買產(chǎn)品B的概率,根據(jù)挖掘結(jié)果,調(diào)整貨架的布局陳列、設(shè)計(jì)促銷組合方案,實(shí)現(xiàn)銷量的提升,最經(jīng)典的應(yīng)用案例莫過于<啤酒和尿布>。
關(guān)聯(lián)規(guī)則分析中的關(guān)鍵概念包括:支持度(Support)、置信度(Confidence)與提升度(Lift)。首先,我們簡(jiǎn)單溫故下這3個(gè)關(guān)鍵指標(biāo)~
1、支持度 (Support):支持度是兩件商品(A∩B)在總銷售筆數(shù)(N)中出現(xiàn)的概率,即A與B同時(shí)被購(gòu)買的概率。類似于中學(xué)學(xué)的交集,需要原始同時(shí)滿足條件。
公式:
例子說明:
比如某超市2016年有100w筆銷售,顧客購(gòu)買可樂又購(gòu)買薯片有20w筆,顧客購(gòu)買可樂又購(gòu)買面包有10w筆,那可樂和薯片的關(guān)聯(lián)規(guī)則的支持度是20%,可樂和面包的支持度是10%。
2、置信度 (Confidence):置信度是購(gòu)買A后再購(gòu)買B的條件概率。簡(jiǎn)單來說就是交集部分C在A中比例,如果比例大說明購(gòu)買A的客戶很大期望會(huì)購(gòu)買B商品。
公式:
例子說明:
某超市2016年可樂購(gòu)買次數(shù)40w筆,購(gòu)買可樂又購(gòu)買了薯片是30w筆,顧客購(gòu)買可樂又購(gòu)買面包有10w筆,則購(gòu)買可樂又會(huì)購(gòu)買薯片的置信度是75%,購(gòu)買可樂又購(gòu)買面包的置信度是25%,這說明買可樂也會(huì)買薯片的關(guān)聯(lián)性比面包強(qiáng),營(yíng)銷上可以做一些組合策略銷售。
3、提升度 (Lift):提升度表示先購(gòu)買A對(duì)購(gòu)買B的概率的提升作用,用來判斷規(guī)則是否有實(shí)際價(jià)值,即使用規(guī)則后商品在購(gòu)物車中出現(xiàn)的次數(shù)是否高于商品單獨(dú)出現(xiàn)在購(gòu)物車中的頻率。如果大于1說明規(guī)則有效,小于1則無效。
公式:
例子說明:
可樂和薯片的關(guān)聯(lián)規(guī)則的支持度是20%,購(gòu)買可樂的支持度是3%,購(gòu)買薯片的支持度是5%,則提升度是1.33>1, A-B規(guī)則對(duì)于商品B有提升效果。
4)基于知識(shí)推薦
基于知識(shí)的推薦(Knowledge-based Recommendation),主要應(yīng)用于知識(shí)型的產(chǎn)品中,主要解決的問題是,為你量身定制升級(jí)打怪的進(jìn)階路線圖。
比如你想學(xué)習(xí)鋼琴,如果你是剛?cè)腴T的小白,那你最好從簡(jiǎn)單的譜子學(xué)起。但這樣帶來一個(gè)問題,是因?yàn)槟愕臍v史行為都在初級(jí)范圍之內(nèi),根據(jù)興趣偏好,推薦給你的信息也都在初級(jí)范圍。無法滿足你的升級(jí)需求。
這個(gè)時(shí)候就需要基于知識(shí)的推薦。推薦系統(tǒng)知道你現(xiàn)在所處的知識(shí)級(jí)別(用戶知識(shí)),也知道學(xué)習(xí)鋼琴所有的級(jí)別(產(chǎn)品知識(shí)),然后根據(jù)你現(xiàn)在的情況為你推薦適合你進(jìn)階的信息。
以上為個(gè)人理解,百度百科的解釋為:
使用用戶知識(shí)和產(chǎn)品知識(shí), 通過推理什么產(chǎn)品能滿足用戶需求來產(chǎn)生推薦。這種推薦系統(tǒng)不依賴于用戶評(píng)分等關(guān)于用戶偏好的歷史數(shù)據(jù), 故其不存在冷啟動(dòng)方面的問題?;谥R(shí)的推薦系統(tǒng)響應(yīng)用戶的即時(shí)需求, 當(dāng)用戶偏好發(fā)生變化時(shí)不需要任何訓(xùn)練。
舉例:
針對(duì)海量習(xí)題帶來的信息過載導(dǎo)致學(xué)習(xí)針對(duì)性不強(qiáng)、效率不高等問題,提出了基于知識(shí)點(diǎn)層次圖的個(gè)性化習(xí)題推薦算法(A Personalized Exercises Recommendation Algorithm based on Knowledge Hierarchical Graph,ReKHG)。
首先,借鑒課程知識(shí)點(diǎn)體系結(jié)構(gòu)的特點(diǎn),構(gòu)建了表征知識(shí)點(diǎn)層次關(guān)系的權(quán)重圖,該權(quán)重圖有效反映知識(shí)點(diǎn)間的層次關(guān)系。
然后,根據(jù)學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況,在知識(shí)點(diǎn)層次圖的基礎(chǔ)上提出了一種個(gè)性化習(xí)題推薦算法。該算法通過更新學(xué)生-知識(shí)點(diǎn)失分率矩陣,獲取學(xué)生掌握薄弱的知識(shí)點(diǎn),以此實(shí)現(xiàn)習(xí)題推薦。
ps:以上舉例來自于某論文,沒有用于實(shí)際案例中。關(guān)于知識(shí)推薦,沒有找到太多實(shí)際案例,國(guó)外的論文論述的比較多一些。
5)混合推薦
每個(gè)算法都不是完美的,因此實(shí)際應(yīng)用中,可以混合使用各種推薦算法,各取所長(zhǎng)。
五、推薦算法數(shù)據(jù)來源
1. 利用用戶行為信息
用戶行為數(shù)據(jù)一般存于日志中。
用戶行為可以分為:顯性反饋行為和隱性反饋行為。
互聯(lián)網(wǎng)上的很多數(shù)據(jù)分布滿足一種稱為Power Law的分布,稱為長(zhǎng)尾分布。
2. 利用用戶標(biāo)簽數(shù)據(jù)
推薦系統(tǒng)聯(lián)系用戶和物品的幾種途徑
推薦系統(tǒng)的目的是聯(lián)系用戶的興趣和物品,這種聯(lián)系需要依賴不同的媒介。目前流行的有3種方式:物品、用戶、特征。
前兩種我們都很熟悉,特征有不同的表現(xiàn)形式,可以是物品的屬性集合,可以是隱語義向量,這里我們用標(biāo)簽表示。
- 標(biāo)簽分兩類
- 讓作者或者專家給物品打標(biāo)簽
- 讓普通用戶給物品打標(biāo)簽,即UGC標(biāo)簽應(yīng)用,既描述了用戶的興趣又將表達(dá)了物品的語義。
以豆瓣為例,打標(biāo)簽作為一種用戶重要的行為,蘊(yùn)含了豐富的用戶興趣信息。
標(biāo)簽推薦系統(tǒng)算法
- 統(tǒng)計(jì)每個(gè)用戶最常用的標(biāo)簽
- 對(duì)于每個(gè)標(biāo)簽,統(tǒng)計(jì)被打過這個(gè)標(biāo)簽次數(shù)最多的物品
- 對(duì)于一個(gè)用戶,首先找到他常用的標(biāo)簽,然后找到具有這些標(biāo)簽的最熱門物品推薦給這個(gè)用戶
算法改進(jìn):
- TF-IDF,降低熱門標(biāo)簽的權(quán)重,使推薦結(jié)果更準(zhǔn)確
- 數(shù)據(jù)稀疏性:對(duì)于新用戶或者新物品來說,其標(biāo)簽數(shù)量可能過少,需要對(duì)標(biāo)簽進(jìn)行擴(kuò)展,即對(duì)每個(gè)標(biāo)簽找到和它相似的標(biāo)簽,也就是計(jì)算標(biāo)簽相似度。(拓展方法--話題模型)
- 標(biāo)簽清理:清理掉同義詞、無義詞,方便做出推薦解釋
給用戶推薦標(biāo)簽
推薦的好處
- 方便用戶輸入標(biāo)簽
- 提高標(biāo)簽質(zhì)量
推薦方法
- 推薦系統(tǒng)中最熱門的標(biāo)簽(PopularTags)
- 推薦物品最熱門的標(biāo)簽(Item PopularTags)
- 推薦用戶經(jīng)常使用的標(biāo)簽(User PopularTags)
- 前面兩種融合(Hybrid PopularTags)
冷啟動(dòng)物品的推薦方法
- 從物品的內(nèi)容數(shù)據(jù)中抽取關(guān)鍵詞作為標(biāo)簽
- 根據(jù)僅有的標(biāo)簽做拓展
3. 利用上下文信息
用戶所處的上下文,包括用戶訪問推薦系統(tǒng)的時(shí)間、地點(diǎn)、心情等,有助于提高推薦系統(tǒng)的性能。
比如,用戶夏天喜歡過的T恤,冬天再推薦就不合適了。
用戶在中關(guān)村,打開美食推薦,如果給的結(jié)果是國(guó)貿(mào)是不合適了。
1) 時(shí)間上下文信息
時(shí)間對(duì)用戶興趣的影響:
- 用戶興趣是變化的
- 物品也是有生命周期的
- 季節(jié)效應(yīng)
推薦系統(tǒng)的實(shí)時(shí)性
用戶興趣是不斷變化的,其變化體現(xiàn)在用戶不斷增加的新行為中。一個(gè)實(shí)時(shí)的推薦系統(tǒng)需要能夠?qū)崟r(shí)響應(yīng)用戶新的行為,讓推薦列表不斷變化,從而滿足用戶不斷變化的興趣。實(shí)現(xiàn)推薦系統(tǒng)的實(shí)時(shí)性除了對(duì)用戶行為的存取有實(shí)時(shí)性要求,還要求推薦算法本身具有實(shí)時(shí)性,而推薦算法本身的實(shí)時(shí)性意味著:
- 實(shí)時(shí)推薦系統(tǒng)不能每天都給所有用戶離線計(jì)算推薦結(jié)果,然后在線展示昨天計(jì)算出來的結(jié)果。所以,要求在每個(gè)用戶訪問推薦系統(tǒng)時(shí),都根據(jù)用戶這個(gè)時(shí)間點(diǎn)前的行為實(shí)時(shí)計(jì)算推薦列表
- 推薦算法需要平衡考慮用戶的近期行為和長(zhǎng)期行為,即要讓推薦列表反應(yīng)出用戶近期行為所體現(xiàn)的興趣變化,又不能讓推薦列表完全受用戶近期行為的影響,要保證推薦列表對(duì)用戶興趣預(yù)測(cè)的延續(xù)性。
推薦算法的時(shí)間多樣性
推薦系統(tǒng)每天推薦結(jié)果的變化程度被定義為推薦系統(tǒng)的時(shí)間多樣性。時(shí)間多樣性高的推薦系統(tǒng)中用戶會(huì)經(jīng)常看到不同的推薦結(jié)果。提高推薦結(jié)果的時(shí)間多樣性需要分兩步解決:
- 首先,需要保證推薦系統(tǒng)能夠在用戶有了新的行為后及時(shí)調(diào)整推薦結(jié)果,使推薦結(jié)果滿足用戶最近的興趣;
- 其次,需要保證推薦系統(tǒng)在用戶沒有新的行為時(shí)也能經(jīng)常變化一下結(jié)果,具有一定的時(shí)間多樣性
如果用戶沒有行為,推薦思路:
- 在生成推薦結(jié)果時(shí)加入一定的隨機(jī)性。比如從推薦列表前20個(gè)結(jié)果中隨機(jī)挑選10個(gè)結(jié)果展示給用戶,或者按照推薦物品的權(quán)重采樣10個(gè)結(jié)果展示給用戶。
- 記錄用戶每天看到的推薦結(jié)果,然后在每天給用戶進(jìn)行推薦時(shí),對(duì)他前幾天看到過很多次的推薦結(jié)果進(jìn)行適當(dāng)?shù)亟禉?quán)。
- 每天給用戶使用不同的推薦算法??梢栽O(shè)計(jì)很多推薦算法,比如協(xié)同過濾算法、內(nèi)容過濾算法等,然后在每天用戶訪問推薦系統(tǒng)時(shí)隨機(jī)挑選一種算法給他進(jìn)行推薦。
協(xié)同過濾算法可以利用時(shí)間信息提高預(yù)測(cè)的準(zhǔn)確度。
時(shí)間上下文相關(guān)的ItemCF算法
- 物品相似度
用戶在相隔很短的時(shí)間內(nèi)喜歡的物品具有更高相似度。 - 在線推薦
用戶近期的行為比用戶很久之前的行為,更能體現(xiàn)用戶現(xiàn)在的興趣。
- 物品相似度
時(shí)間上下文相關(guān)的UserCF算法
- 用戶興趣相似度
如果兩個(gè)用戶【同時(shí)】喜歡相同的物品,則他們有更大的興趣相似度。 - 相似興趣用戶的最近行為
給用戶推薦和他興趣相似的用戶最近喜歡的物品。
- 用戶興趣相似度
2)地點(diǎn)上下文信息
- 用戶興趣和地點(diǎn)相關(guān)的兩種特征:
- 興趣本地化,不同地方的用戶興趣存在著很大的差別,不同國(guó)家和地區(qū)用戶的興趣存在著一定的差異性。
- 活動(dòng)本地化,一個(gè)用戶往往在附近的地區(qū)活動(dòng)。因此,在基于位置的推薦中我們需要考慮推薦地點(diǎn)和用戶當(dāng)前地點(diǎn)的距離,不能給用戶推薦太遠(yuǎn)的地方。
4. 利用社交網(wǎng)絡(luò)數(shù)據(jù)
獲取社交網(wǎng)絡(luò)數(shù)據(jù)的途徑
- 電子郵件
- 用戶注冊(cè)信息
- 用戶位置數(shù)據(jù)
- 論壇和討論組
- 即時(shí)聊天工具
- 社交網(wǎng)站
- Facebook中的絕大多數(shù)用戶聯(lián)系基于社交圖譜:由于人們之間的親屬關(guān)系、工作關(guān)系而形成;
- Twitter中的絕大多數(shù)用戶聯(lián)系基于興趣圖譜:通過人們之間的共同興趣和信念形成;
社交網(wǎng)絡(luò)數(shù)據(jù)的分類
- 雙向確認(rèn)的社交網(wǎng)絡(luò)數(shù)據(jù),以Facebook和人人網(wǎng)為代表,用戶之間形成好友關(guān)系需要通過雙方的確認(rèn);
- 單向關(guān)注的社交網(wǎng)絡(luò)數(shù)據(jù),以Twitter和新浪微博為代表,用戶A可以關(guān)注用戶B,而不用得到用戶B的允許;
- 基于社區(qū)的社交網(wǎng)絡(luò)數(shù)據(jù),用戶之間并沒有明確的關(guān)系,但是這種數(shù)據(jù)包含了用戶屬于不同社區(qū)的數(shù)據(jù)。比如豆瓣小組,屬于同一個(gè)小組可能代表了用戶興趣的相似性;
社會(huì)化推薦的優(yōu)點(diǎn)
- 好友推薦可以增加推薦的信任度
- 社交網(wǎng)絡(luò)可以解決冷啟動(dòng)問題
六、冷啟動(dòng)問題
1)冷啟動(dòng)主要分3類:
- 用戶冷啟動(dòng)
一個(gè)新用戶,沒有任何歷史行為數(shù)據(jù),怎么做推薦。 - 物品冷啟動(dòng)
一個(gè)新上線的物品,沒有用戶對(duì)它產(chǎn)生過行為,怎么推薦給感興趣的用戶。 - 系統(tǒng)冷啟動(dòng)
一個(gè)新開發(fā)的網(wǎng)站,沒有用戶數(shù)據(jù),怎么做個(gè)性化推薦。
2)解決方案:
- 提供非個(gè)性化推薦,如熱門排行。等有了數(shù)據(jù)之后再推薦。
- 利用用戶注冊(cè)信息,做粗粒度的個(gè)性化。
- 利用用戶的社交網(wǎng)絡(luò)賬號(hào),導(dǎo)入用戶的好友,推薦好友喜歡的物品。
- 用戶初次登錄時(shí),對(duì)一些物品進(jìn)行反饋,根據(jù)這些信息做個(gè)性化。
- 對(duì)于新上線的物品,利用內(nèi)容信息,推薦給喜歡類似物品的用戶。
- 系統(tǒng)冷啟動(dòng),可以引入外部資源,如專家知識(shí),建立起物品的相關(guān)度。
3)冷啟動(dòng),啟動(dòng)用戶興趣的物品需要具有以下特點(diǎn):
- 比較熱門
- 具有代表性和區(qū)分性
- 啟動(dòng)物品集合需要有多樣性
4)選擇啟動(dòng)物品集合的系統(tǒng)
如何設(shè)計(jì)一個(gè)選擇啟動(dòng)物品集合的系統(tǒng)?Nadav Golbandi在論文中提出用一個(gè)決策樹解決。
首先,給定一群用戶,用這群用戶對(duì)物品評(píng)分的方差度量這群用戶興趣的一致程度。如果方差很小,說明這一群用戶的興趣不太一致,也就是物品具有比較大的區(qū)分度,反之則說明這群用戶的興趣比較一致。
再根據(jù)用戶的評(píng)分方差計(jì)算物品的區(qū)分度。
也就是說,對(duì)于物品i,將用戶分為3類--喜歡物品i的用戶,不喜歡物品i的用戶和不知道物品i的用戶。如果這3類用戶集合內(nèi)的用戶對(duì)其他的物品興趣很不一致,說明物品i具有較高的區(qū)分度。
算法首先從所有用戶中找到具有最高區(qū)分度的物品i,然后將用戶分成3類。然后在每類用戶中再找到最具區(qū)分度的物品,然后將每一類用戶又各自分為3類,也就是將總用戶分為9類,然后繼續(xù)這樣下去,最終可以通過對(duì)一系列物品的看法將用戶進(jìn)行分類。
在冷啟動(dòng)時(shí),從根節(jié)點(diǎn)開始詢問用戶對(duì)該節(jié)點(diǎn)物品的看法,然后根據(jù)用戶的選擇將用戶放到不同的分枝,直到進(jìn)入最后的葉子節(jié)點(diǎn),此時(shí)對(duì)用戶的興趣有了比較清楚的了解,從而可以開始對(duì)用戶進(jìn)行比較準(zhǔn)確地個(gè)性化推薦。
5)利用物品的內(nèi)容信息
就是基于內(nèi)容的推薦,很適合解決物品冷啟動(dòng)問題。
物品冷啟動(dòng)對(duì)諸如新聞網(wǎng)站等時(shí)效性很強(qiáng)的網(wǎng)站的推薦非常重要,因?yàn)槟切┚W(wǎng)站中時(shí)時(shí)刻刻都有新加入的物品,而且每個(gè)物品必須能夠在第一時(shí)間展現(xiàn)給用戶,否則經(jīng)過一段時(shí)間后,物品的價(jià)值就大大降低了。
一般來說,物品的內(nèi)容可以通過向量空間模型表示,該模型會(huì)將物品表示成一個(gè)關(guān)鍵詞向量。
如果物品的內(nèi)容是諸如導(dǎo)演、演員等實(shí)體,可以直接將實(shí)體作為關(guān)鍵詞。
如果內(nèi)容是文本,需要引入自然語言的技術(shù)抽取關(guān)鍵詞。如何建立文章、話題和關(guān)鍵詞的關(guān)系是話題模型研究的重點(diǎn),代表性的話題模型有LDA。
LDA有3種元素,文檔、話題、詞語。詳細(xì)內(nèi)容可參考相關(guān)論文。
向量空間模型的優(yōu)點(diǎn)是簡(jiǎn)單,缺點(diǎn)是丟失了一些信息,比如關(guān)鍵詞之間的關(guān)系信息。
七、推薦系統(tǒng)實(shí)例
推薦系統(tǒng)和其他系統(tǒng)之間的關(guān)系
3種聯(lián)系用戶和物品的推薦系統(tǒng)
3)推薦系統(tǒng)架構(gòu)
推薦系統(tǒng)需要由多個(gè)推薦引擎組成,每個(gè)推薦引擎負(fù)責(zé)一類特性和一種任務(wù),推薦系統(tǒng)的任務(wù)是將推薦引擎的結(jié)果按照一定權(quán)重或者優(yōu)先級(jí)合并,排序然后返回。如下圖:
推薦系統(tǒng)架構(gòu)圖
- 優(yōu)點(diǎn):
- 方便增加或刪除引擎,控制不同引擎對(duì)推薦結(jié)果的影響。
- 可以實(shí)現(xiàn)推薦引擎級(jí)別的用戶反饋。對(duì)不同用戶給出不同引擎組合權(quán)重。
4)推薦引擎架構(gòu)
- 推薦引擎架構(gòu)主要包括三部分:
- 圖中A部分負(fù)責(zé)從數(shù)據(jù)庫(kù)或緩存中拿到用戶行為數(shù)據(jù),通過分析不同行為,生成當(dāng)前用戶的特征向量,如果使用非行為特征,就不需要行為提取和分析模塊了,該模塊的輸出就是用戶特征向量。
- 圖中B部分負(fù)責(zé)將用戶的特征向量通過特征-物品相關(guān)矩陣轉(zhuǎn)化為初始推薦物品列表。
- 圖中C部分負(fù)責(zé)對(duì)初始的推薦列表進(jìn)行過濾、排名等處理,從而生成該引擎的最終推薦結(jié)果。
推薦引擎架構(gòu)圖
生成用戶特性向量
- 用戶行為的種類
- 用戶行為產(chǎn)生的時(shí)間
- 用戶行為的次數(shù)
- 物品的熱門程度
過濾模塊過濾掉以下物品
- 用戶已經(jīng)產(chǎn)生過行為的物品
- 候選物品以外的物品(不符合用戶篩選條件的物品)
- 某些質(zhì)量很差的物品
以上,就是所有內(nèi)容的總結(jié)。內(nèi)容主要來自于《推薦系統(tǒng)實(shí)踐》,以及相關(guān)論文、博客。
《推薦系統(tǒng)實(shí)踐》中提到的papaer總結(jié):
https://book.douban.com/review/5514664/
參考論文:
http://t.cn/RjXktmC
http://t.cn/RjXkiFP
http://blog.csdn.net/qingqingpiaoguo/article/details/60882309
https://www.zhihu.com/question/27141495/answer/161027882
最后:
我的目的是成為一名人工智能相關(guān)的產(chǎn)品經(jīng)理。我建了一個(gè)AI產(chǎn)品群,如果你和我一樣,愿意分享你的學(xué)習(xí)過程,留言交流,掃我拉你進(jìn)群,記得準(zhǔn)備簡(jiǎn)短的自我介紹~~
-- 原創(chuàng),未經(jīng)授權(quán),禁止轉(zhuǎn)載 2017.11.15 --