一文說明白推薦引擎
推薦引擎是什么?
綜合利用用戶的行為、屬性,對象的屬性、內(nèi)容、分類,用戶對內(nèi)容或商品的喜好,以及用戶之間的社交關(guān)系等等,挖掘用戶的喜好和需求,主動(dòng)向用戶推薦其感興趣或者需要的內(nèi)容和商品。
輸出
為用戶推薦其感興趣或者需要的對象
數(shù)據(jù)源
用戶:行為、屬性
對象:屬性、內(nèi)容、分類用戶、對象間:偏好
用戶間:社交關(guān)系、信任
處理
挖掘用戶喜好
推薦引擎工作原理圖
將推薦引擎看作黑盒,它接受的輸入是推薦的數(shù)據(jù)源,一般情況下,推薦引擎所需要的數(shù)據(jù)源包括:
要推薦物品或內(nèi)容的元數(shù)據(jù),例如關(guān)鍵字,基因描述等;
系統(tǒng)用戶的基本信息,例如性別,年齡等
用戶對物品或者信息的偏好,根據(jù)應(yīng)用本身的不同,可能包括用戶對物品的評分,用戶查看物品的記錄,用戶的購買記錄等。
用戶的偏好信息可以分為兩類:
顯式的用戶反饋:這類是用戶在網(wǎng)站上自然瀏覽或者使用網(wǎng)站以外,顯式的提供反饋信息,例如用戶對物品的評分,或者對物品的評論。
隱式的用戶反饋:這類是用戶在使用網(wǎng)站是產(chǎn)生的數(shù)據(jù),隱式的反應(yīng)了用戶對物品的喜好,例如用戶購買了某物品,用戶查看了某物品的信息等等。
顯式的用戶反饋能準(zhǔn)確的反應(yīng)用戶對物品的真實(shí)喜好,但需要用戶付出額外的代價(jià)。
隱式的用戶行為,通過一些分析和處理,也能反映用戶的喜好,只是數(shù)據(jù)不是很精確,有些行為的分析存在較大的噪音。
但只要選擇正確的行為特征,隱式的用戶反饋也能得到很好的效果,只是行為特征的選擇可能在不同的應(yīng)用中有很大的不同,
例如:電子商務(wù)的網(wǎng)站上,購買行為其實(shí)就是一個(gè)能很好表現(xiàn)用戶喜好的隱式反饋。
推薦引擎根據(jù)不同的推薦機(jī)制可能用到數(shù)據(jù)源中的一部分,然后根據(jù)這些數(shù)據(jù),分析出一定的規(guī)則或者直接對用戶對其他物品的喜好進(jìn)行預(yù)測計(jì)算。
這樣推薦引擎可以在用戶進(jìn)入的時(shí)候給他推薦他可能感興趣的物品。
推薦引擎的兩大核心內(nèi)容
1. 用戶畫像
使用信息流產(chǎn)品其實(shí)就是一個(gè)對其不斷進(jìn)行用戶畫像的過程。
用戶在APP中的操作行為,如:搜索、點(diǎn)擊內(nèi)容、瀏覽內(nèi)容、收藏內(nèi)容、評論、點(diǎn)贊等行為都是對用戶畫像的不斷完善。
通過對這些用戶行為的分析而生成用戶的偏好,不斷為用戶推薦高相似度內(nèi)容的文章或視頻,來達(dá)到不斷增加用戶粘性的目的。
用戶畫像的維護(hù)是一個(gè)循序漸進(jìn)的過程,首次使用APP時(shí)會對用戶進(jìn)行冷啟動(dòng),常用的冷啟動(dòng)方式比較簡單,做好內(nèi)容分類,然后讓用戶進(jìn)行選擇興趣標(biāo)簽。
2. 數(shù)據(jù)分類
主要是指對數(shù)據(jù)的處理。
對于原始內(nèi)容數(shù)據(jù),我們要進(jìn)行大量的數(shù)據(jù)處理,包括添加標(biāo)簽,主題分類等,這些數(shù)據(jù)的處理動(dòng)輒達(dá)到億級千萬級的量級,需要借助hadoop、hive、spark、strom等工具實(shí)現(xiàn)。
標(biāo)簽的構(gòu)建主要通過對文章進(jìn)行分詞、通過TF-IDF等算法找出文章可以由哪些標(biāo)簽來抽象表達(dá);主題分類由LDA模型通過spark框架計(jì)算實(shí)現(xiàn)。
主題比如:體育新聞、it新聞、娛樂新聞等構(gòu)成。
個(gè)性化推薦系統(tǒng)其實(shí)就是在做排序。
通過spark、hive等工具,對離線的數(shù)據(jù)進(jìn)行排序處理,排序特征包含:
曝光量
點(diǎn)擊量
點(diǎn)擊率
作者權(quán)重
文章內(nèi)容權(quán)重等
對幾十個(gè)特征進(jìn)行綜合排序。除了離線計(jì)算,現(xiàn)在的推薦系統(tǒng)也會通過實(shí)時(shí)的線上特征對內(nèi)容排序進(jìn)行更新。
例如對于高曝光率已經(jīng)高轉(zhuǎn)化為點(diǎn)擊率的內(nèi)容,進(jìn)行降維處理,以保障其他優(yōu)質(zhì)內(nèi)容的曝光機(jī)會。
由此,通過將離線計(jì)算分類好的優(yōu)質(zhì)內(nèi)容,面向用戶畫像精確地推送給用戶受眾,達(dá)到了用戶刷不停,離不開的目的。
推薦引擎的分類
推薦引擎的分類可以根據(jù)很多指標(biāo):
1. 推薦引擎是否為不同的用戶推薦不同的數(shù)據(jù):根據(jù)這個(gè)指標(biāo),推薦引擎可以分為基于大眾行為的推薦引擎和個(gè)性化推薦引擎
大眾行為的推薦引擎:
對每個(gè)用戶都給出同樣的推薦,這些推薦可以是靜態(tài)的由系統(tǒng)管理員人工設(shè)定的,或者基于系統(tǒng)所有用戶的反饋統(tǒng)計(jì)計(jì)算出的當(dāng)下比較流行的物品。
個(gè)性化推薦引擎:
對不同的用戶,根據(jù)他們的口味和喜好給出更加精確的推薦,這時(shí),系統(tǒng)需要了解需推薦內(nèi)容和用戶的特質(zhì),或者基于社會化網(wǎng)絡(luò),通過找到與當(dāng)前用戶相同喜好的用戶,實(shí)現(xiàn)推薦。
這是最基本的推薦引擎分類,大部分人們討論的推薦引擎都是將個(gè)性化的推薦引擎,
因?yàn)閺母旧险f,只有個(gè)性化的推薦引擎才是更加智能的信息發(fā)現(xiàn)過程。
2. 根據(jù)推薦引擎的數(shù)據(jù)源:指如何發(fā)現(xiàn)數(shù)據(jù)的相關(guān)性,大部分推薦引擎的工作原理還是基于物品或者用戶的相似集進(jìn)行推薦。那么根據(jù)不同的數(shù)據(jù)源發(fā)現(xiàn)數(shù)據(jù)相關(guān)性的方法可以分為以下幾種:
根據(jù)系統(tǒng)用戶的基本信息發(fā)現(xiàn)用戶的相關(guān)程度,這種被稱為基于人口統(tǒng)計(jì)學(xué)的推薦(Demographic-based Recommendation)
根據(jù)推薦物品或內(nèi)容的元數(shù)據(jù),發(fā)現(xiàn)物品或者內(nèi)容的相關(guān)性,這種被稱為基于內(nèi)容的推薦(Content-based Recommendation)
根據(jù)用戶對物品或者信息的偏好,發(fā)現(xiàn)物品或者內(nèi)容本身的相關(guān)性,或者是發(fā)現(xiàn)用戶的相關(guān)性,這種被稱為基于協(xié)同過濾的推薦(Collaborative Filtering-based Recommendation)。
3. 根據(jù)推薦模型的建立方式:想象在海量物品和用戶的系統(tǒng)中,推薦引擎的計(jì)算量相當(dāng)大,實(shí)現(xiàn)實(shí)時(shí)的推薦務(wù)必需要建立推薦模型,關(guān)于推薦模型的建立方式可以分為以下幾種:
基于物品和用戶本身:
這種推薦引擎將每個(gè)用戶和每個(gè)物品都當(dāng)作獨(dú)立的實(shí)體,預(yù)測每個(gè)用戶對于每個(gè)物品的喜好程度,這些信息往往是用一個(gè)二維矩陣描述的。
基于關(guān)聯(lián)規(guī)則的推薦(Rule-based Recommendation):
聯(lián)規(guī)則的挖掘已經(jīng)是數(shù)據(jù)挖掘中的一個(gè)經(jīng)典的問題,主要是挖掘一些數(shù)據(jù)的依賴關(guān)系,典型的場景就是“購物籃問題”,通過關(guān)聯(lián)規(guī)則的挖掘,我們可以找到哪些物品經(jīng)常被同時(shí)購買,或者用戶購買了一些物品后通常會購買哪些其他的物品,當(dāng)我們挖掘出這些關(guān)聯(lián)規(guī)則之后,我們可以基于這些規(guī)則給用戶進(jìn)行推薦。
基于模型的推薦(Model-based Recommendation):
這是一個(gè)典型的機(jī)器學(xué)習(xí)的問題,可以將已有的用戶喜好信息作為訓(xùn)練樣本,訓(xùn)練出一個(gè)預(yù)測用戶喜好的模型,這樣以后用戶在進(jìn)入系統(tǒng),可以基于此模型計(jì)算推薦。這種方法的問題在于如何將用戶實(shí)時(shí)或者近期的喜好信息反饋給訓(xùn)練好的模型,從而提高推薦的準(zhǔn)確度。
產(chǎn)品中,很少只使用了一個(gè)推薦策略的推薦引擎,一般都是在不同的場景下使用不同的推薦策略從而達(dá)到最好的推薦效果,
例如 Amazon 的推薦,它將基于用戶本身歷史購買數(shù)據(jù)的推薦,和基于用戶當(dāng)前瀏覽的物品的推薦,以及基于大眾喜好的當(dāng)下比較流行的物品都在不同的區(qū)域推薦給用戶,讓用戶可以從全方位的推薦中找到自己真正感興趣的物品。
案例:電商產(chǎn)品推薦引擎設(shè)計(jì)
1. 關(guān)聯(lián)推薦
關(guān)聯(lián)規(guī)則的挖掘主要是挖掘一些數(shù)據(jù)的依賴關(guān)系
通過關(guān)聯(lián)規(guī)則的挖掘,我們可以找到哪些物品經(jīng)常被同時(shí)購買,或者用戶購買了一些物品后通常會購買哪些其他的物品,當(dāng)我們挖掘出這些關(guān)聯(lián)規(guī)則之后,我們可以基于這些規(guī)則給用戶進(jìn)行推薦。
關(guān)聯(lián)推薦幫助用戶在滿足某一類需求之后發(fā)現(xiàn)其他的潛在需求,從而帶動(dòng)網(wǎng)站其他產(chǎn)品的銷售,
關(guān)聯(lián)推薦在營銷上分為兩種:向上營銷和交叉營銷。
向上營銷是同類產(chǎn)品線或升級產(chǎn)品的推薦。
交叉營銷是基于相似但不同類產(chǎn)品的推薦。
關(guān)聯(lián)規(guī)則中有兩個(gè)關(guān)鍵指標(biāo):支持度(support)和信任度(confidence)
支持度=購買A和B商品(集合G)的人數(shù)/所有購買過商品(集合U)的人數(shù)
置信度=購買A和B商品(集合G)的人數(shù)/購買A商品(集合A)的人數(shù)
商品A、B是否值得關(guān)聯(lián)銷售,網(wǎng)站需要設(shè)置一個(gè)最小支持度和最小信任度,當(dāng)支持度、信任度達(dá)到一定值時(shí)就可以判定商品A、B可以關(guān)聯(lián)銷售。
在用戶的購買行為中,用戶A不僅購買了商品B,還有可能購買商品C、D、E等一些列產(chǎn)品。有置信度大于最小置信度的這些商品組合才是有關(guān)聯(lián)的,是值得推薦的,也可以認(rèn)為關(guān)聯(lián)購買率最高的寶貝是值得關(guān)聯(lián)推薦的。
2. 協(xié)同過濾推薦
根據(jù)所有用戶對物品或者信息的偏好,發(fā)現(xiàn)與當(dāng)前用戶口味和偏好相似的“鄰居”用戶群,然后,基于鄰居的歷史偏好信息,為當(dāng)前用戶進(jìn)行推薦。
基本原理:
假設(shè)四名用戶A、B、C、D對C、D、E、F四本書的評分如下:
A=(3,4,4,4,5)
B=(4,4,2,5,3)
C=(4,5,3,3,3)
D=(3,4,5,2,2)
用戶B、C對四本書的評分很接近,我們可以推斷,用戶B、C具有相同或相似的口味和便好,當(dāng)用戶B購買了書籍G時(shí),我們可以向用戶C推薦書籍G。
這種推薦的前提是基于大量的用戶參與,一旦缺乏用戶對物品的評價(jià),那么這種推薦就失效,并且如果數(shù)據(jù)較少,推薦本身是不準(zhǔn)確的。