當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]導(dǎo)讀:在本文中,將詳細(xì)介紹多種類型的推薦系統(tǒng),具體介紹基于近鄰算法的推薦引擎、個性化推薦引擎、基于模型的推薦系統(tǒng)和混合推薦引擎等,并分析介紹每種推薦系統(tǒng)的優(yōu)缺點。 主要介紹的不同類型的推薦系統(tǒng)包括: 近鄰算法推薦引擎:基于用戶的協(xié)同過濾和基于

主流推薦引擎技術(shù)及優(yōu)缺點分析

導(dǎo)讀:在本文中,將詳細(xì)介紹多種類型的推薦系統(tǒng),具體介紹基于近鄰算法的推薦引擎、個性化推薦引擎、基于模型的推薦系統(tǒng)和混合推薦引擎等,并分析介紹每種推薦系統(tǒng)的優(yōu)缺點。

主要介紹的不同類型的推薦系統(tǒng)包括:

  • 近鄰算法推薦引擎:基于用戶的協(xié)同過濾和基于項目的協(xié)同過濾;

  • 個性化推薦引擎:基于內(nèi)容的推薦引擎和情境感知推薦引擎;

  • 基于模型的推薦引擎:基于機器學(xué)習(xí)的推薦引擎、分類模型-SVM/KNN、矩陣分解、奇異值分解、交替最小二乘法概述、混合推薦引擎。

01
推薦引擎的發(fā)展

最近幾年,推薦系統(tǒng)發(fā)展迅猛。從簡單的近鄰算法到個性化推薦再到情境感知推薦,從批處理推薦到實時推薦,從啟發(fā)式的相似度計算到更準(zhǔn)確、更復(fù)雜的機器學(xué)習(xí)方法的應(yīng)用。

在推薦系統(tǒng)發(fā)展的早期階段,生成推薦時只能基于用戶對產(chǎn)品的評級。在這段時期,研究人員只能使用現(xiàn)有的評級數(shù)據(jù),使用簡單的啟發(fā)式方法,例如:在計算相似度時,常采用諸如歐氏距離、皮爾遜系數(shù)、余弦相似度等。這些計算方法雖然簡單,但是在相似度上的判斷,卻有非常好的表現(xiàn),目前仍是一些推薦引擎比較常用的方法。

第一代推薦引擎可以稱為協(xié)同過濾或近鄰算法推薦。這些推薦算法雖然簡單易用,在數(shù)據(jù)上也有不錯的表現(xiàn),但是也有它們自身的弱點和局限性,比如對已有數(shù)據(jù)過于依賴造成的冷啟動問題,即它們無法實現(xiàn)向新用戶 ( 指未對商品等進(jìn)行過任何評價的用戶 ) 進(jìn)行商品推薦,也無法向用戶推薦沒有評級的新商品。當(dāng)用戶對產(chǎn)品的評級很少時,這些推薦系統(tǒng)無法處理這類數(shù)據(jù)十分稀疏的情形。

為了克服這些限制,一些新的方法被挖掘出來。例如,在處理大量用戶評價與處理數(shù)據(jù)稀疏性問題上,通常采用數(shù)學(xué)方法 ( 如矩陣分解和奇異值分解等 )。

為了應(yīng)對冷啟動問題,也有新的方法出現(xiàn),比如基于內(nèi)容的推薦系統(tǒng)。這些推薦系統(tǒng)的出現(xiàn)擴(kuò)大了視野,注入了新的思路,比如個性化推薦系統(tǒng),它能夠向每位用戶獨立推薦產(chǎn)品。在這種方法中,依賴的數(shù)據(jù)不再是評級信息,而考慮用戶個人喜好和產(chǎn)品特征,如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

在推薦系統(tǒng)發(fā)展初期,相似度計算被用于基于內(nèi)容的推薦系統(tǒng),隨著技術(shù)發(fā)展和硬件設(shè)備的不斷強化升級,更為先進(jìn)的方法逐步被實現(xiàn)出來,機器學(xué)習(xí)中更為復(fù)雜的模型漸漸取代傳統(tǒng)的啟發(fā)式方法。機器學(xué)習(xí)模型提高了推薦信息的準(zhǔn)確性。

雖然基于內(nèi)容的推薦系統(tǒng)解決了很多協(xié)同過濾中的缺點,但其自身也有固有的缺點,比如新發(fā)現(xiàn),換句話說,就是不能在用戶的偏好范圍之外進(jìn)行新項目的推薦。但這個問題協(xié)同過濾卻可以解決。

為了解決這個問題,研究人員開始嘗試將不同的推薦模型混合進(jìn)行使用,之后提出了混合推薦模型。這種模型比任一單個模型都更加強大。

隨著個性化推薦引擎的成功實現(xiàn),人們開始將個性化擴(kuò)展到其他的維度,稱之為情境,例如添加位置、時間、分組信息等,這些信息改變了生成推薦信息的基礎(chǔ)數(shù)據(jù)集。

隨著技術(shù)進(jìn)步,如大數(shù)據(jù)生態(tài)系統(tǒng)、內(nèi)存分析工具 ( 如Apache Spark ) 和實時推薦處理這些技術(shù)的發(fā)展,使處理大數(shù)據(jù)集成為可能。

目前,推薦系統(tǒng)越來越趨向個性化方面,例如時間維度和無處不在的推薦方式。

在技術(shù)方面,正在從機器學(xué)習(xí)向更先進(jìn)的神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)方法進(jìn)行擴(kuò)展。

02
基于近鄰算法的推薦引擎

顧名思義,基于近鄰算法的推薦系統(tǒng)認(rèn)為相同或相似用戶的喜好相近,使用這種方式對活躍用戶進(jìn)行推薦。這種基于近鄰算法的推薦思想設(shè)定是非常簡單的:根據(jù)某一個給定的用戶評級,尋找所有相似用戶的歷史喜好信息,根據(jù)這些活躍用戶的歷史信息對所有未知產(chǎn)品做出預(yù)測,對沒有評級過該商品的用戶根據(jù)近鄰原則進(jìn)行推薦猜測,如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

同時考慮到鄰居的喜好或品味,我們先計算一下活躍用戶與其他用戶的相似程度,然后再向該活躍用戶進(jìn)行未評級項目的推薦。這里的活躍用戶指的是正在使用推薦系統(tǒng)提供的服務(wù)的用戶。由于涉及相似度計算,這些推薦系統(tǒng)也被稱為基于相似度的推薦系統(tǒng)。同時,由于偏好或品味都被考慮在內(nèi),這些推薦系統(tǒng)也被稱為協(xié)同過濾推薦系統(tǒng)。在這些類型的系統(tǒng)中,主要元素是用戶、產(chǎn)品和用戶的偏好信息,如評級、排名、對產(chǎn)品的喜好。

下圖是來自亞馬遜近鄰?fù)扑]算法的展示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

這些基于啟發(fā)的方法是基于以下假設(shè):

  • 在過去有相似偏好的人在未來也有相似的偏好

  • 人們的偏好在未來的時間里將保持穩(wěn)定和一致

主流推薦引擎技術(shù)及優(yōu)缺點分析

協(xié)同過濾系統(tǒng) ( 如上圖所示 ) 有兩種類型:

  • 基于用戶的協(xié)同過濾

  • 基于項目的協(xié)同過濾

近鄰算法只有當(dāng)有用戶的商品交互信息時才能工作,比如評級、喜歡/不喜歡、看過/沒看過等。與基于內(nèi)容的推薦不同,它不考慮任何產(chǎn)品特征或用戶對產(chǎn)品的個人偏好信息。

1. 基于用戶的協(xié)同過濾

如前所述,基于用戶的協(xié)同過濾系統(tǒng)的基本判斷思想是過去具有相似口味的人,在將來也會喜歡類似的物品。例如,如果用戶A和用戶B有非常相似的購物歷史,當(dāng)用戶A購買了一本用戶B還沒有看過的新書,就可以將這本新書推薦給用戶B,因為他們有相似的品味。

舉個例子以便我們理解基于用戶的協(xié)同過濾:

問題陳述:現(xiàn)有用戶對電影網(wǎng)站中電影作品的評級數(shù)據(jù)集。任務(wù)是向這些用戶推薦電影,數(shù)據(jù)集如下表所示:

主流推薦引擎技術(shù)及優(yōu)缺點分析

在學(xué)習(xí)使用推薦方法前,我們首先要做的是:理解和分析現(xiàn)有的數(shù)據(jù)?,F(xiàn)在我們按照如下步驟來分析:

  • 一個與該應(yīng)用有過互動的用戶集合

  • 一個所有可用電影的目錄

  • 每位用戶對電影的評級

不是所有的用戶對所有電影都進(jìn)行了評級,但是未評級的電影作品只占少數(shù)。

第一步是為活躍用戶找到相似的用戶,然后向活躍用戶推薦其還沒有看過但是與其相似用戶已經(jīng)看過的電影。

可以歸納成兩步:

  • 利用電影評級信息計算用戶之間的相似度。

  • 對于每一個活躍用戶,將所有其未評級但其他用戶已評級電影考慮在內(nèi)。為該活躍用戶預(yù)測未評級電影的評級。

根據(jù)上面表格的數(shù)據(jù),嘗試為活躍用戶Jack Mathews推薦新電影:

  • 第一步尋找與Jack Mathews 相似的用戶。通過觀察數(shù)據(jù)集發(fā)現(xiàn)Gene Seymour和Mick LaSalle與Jack Mathews相似度較高。

  • 用戶之間的相似度可以通過用戶給定的電影評級進(jìn)行計算。計算相似度最常用的方法有歐氏距離與皮爾遜相關(guān)系數(shù)。

  • 在此處可以采用歐氏距離來計算用戶相似度。利用如下公式:

主流推薦引擎技術(shù)及優(yōu)缺點分析

將用戶、電影和評級的數(shù)據(jù)映射到坐標(biāo)軸上,用戶作為x軸,電影作為y軸,評級作為向量空間中的點。現(xiàn)在我們已經(jīng)把數(shù)據(jù)投影到向量空間,兩個點之間的相似度或緊密度可以用歐氏距離和皮爾遜相關(guān)系數(shù)來計算。

主流推薦引擎技術(shù)及優(yōu)缺點分析

使用前面的公式,我們可以計算表中所有用戶之間的相似度,如上表所示。通過觀察該表,我們可以發(fā)現(xiàn)活躍用戶Toby與Lisa Rose最為相似。

第二步,我們通過其他用戶對《Just My Luck》給出的評級,通過加權(quán)平均方法計算,預(yù)測Jack對未評級電影《Just My Luck》的評級,方法如下:

(3×0.9285 + 1.5×0.944+3×0.755 + 2×0.327)÷(0.8934051 + 0.3812464 + 0.9912407 + 0.9244735) = 2.23

在上面的等式中,將其他用戶對《Just My Luck》的評級與他們與Jack的相似度乘積求和。然后將這個乘積之和除以所有相似度之和以得到最后的評級。同樣的方法,我們可以為其他用戶推薦他們未評級過的電影。

2. 基于項目的協(xié)同過濾

基于項目的協(xié)同過濾推薦系統(tǒng)與基于用戶的協(xié)同過濾不同,它使用項目之間的相似度而不是用戶之間的相似度?;陧椖康耐扑]系統(tǒng)的基本思想是,如果用戶的歷史數(shù)據(jù)中顯示過對項目A喜歡,如果項目B與項目A相似,那么該用戶可能也喜歡項目B,如下圖所示。

基于用戶的協(xié)同過濾有幾個缺點:

  • 在現(xiàn)實生活中用戶的評級數(shù)據(jù)通常非常稀疏,用戶在一個數(shù)據(jù)龐大的分類中只會有非常少量的評級數(shù)據(jù),這會對系統(tǒng)造成很大的影響。

  • 當(dāng)數(shù)據(jù)量非常龐大時,計算所有用戶的相似度值的成本是非常高昂的。

主流推薦引擎技術(shù)及優(yōu)缺點分析

當(dāng)用戶畫像或用戶輸入變化很快時,那么我們必須重新計算相似度,它的計算成本非常高昂。

基于項目的推薦引擎可以避免上述這些缺點,通過計算項目或產(chǎn)品之間的相似度,而不是計算用戶之間的相似度,從而降低計算成本。因為項目目錄不會經(jīng)常發(fā)生改變,我們不需要經(jīng)常重新計算相似度。

與基于用戶的協(xié)同過濾方法步驟大致相同,基于項目的協(xié)同過濾步驟如下:

  • 計算項目間的相似度。

  • 通過利用活躍用戶之前已經(jīng)評級的項目,對還沒有評級的項目進(jìn)行預(yù)測評級。

基于項目的協(xié)同過濾最常用的相似度度量是余弦相似度。余弦相似度計算的是在向量空間中兩個n維向量之間的相似度。由以下方程給出:

主流推薦引擎技術(shù)及優(yōu)缺點分析

在將余弦相似度應(yīng)用于推薦系統(tǒng)時,我們將項目列看作n維向量,并將兩個項目之間的相似度看作它們之間的夾角。角度越小,項目越相似。

例如,在前面的數(shù)據(jù)集中,如果我們想要預(yù)測Toby對電影《Lady in the Water》評級,首先我們要找出與《Lady in the Water》相似的電影。使用上面的余弦方程,我們可以計算所有項目的相似度。下表顯示所有電影的相似度值。

以項目為基礎(chǔ)的相似度計算只針對共評項目。

主流推薦引擎技術(shù)及優(yōu)缺點分析

通過觀察上面表格,可以看出《You Me and Dupree》與《Lady in the Water》相似度最高 ( 0.8897565 )。

現(xiàn)在可以通過Toby對《Lady in the Water》評級計算加權(quán)總和來進(jìn)行預(yù)測。也就是說,我們使用Toby評級過的每一部電影與《Lady in the Water》的相似度分?jǐn)?shù),乘以對應(yīng)的評級,并對所有已評級電影的分?jǐn)?shù)求和。這個最后的總和除以《Lady in the Water》的相似度分?jǐn)?shù)總和,如下所示:

計算《Lady in the Water》的電影評級:

(0.795×4.5 + 0.814×4 + 0.889×1)÷(0.795+0.814+0.889) = 3.09

同理,通過上述的計算方式可以推算出其他用戶對電影的評級。

3. 優(yōu)點

  • 易于實現(xiàn)。

  • 在構(gòu)建推薦時,無論是產(chǎn)品的內(nèi)容信息,還是用戶的畫像信息,都不需要。

  • 新項目被推薦給用戶,往往會帶來意想不到的驚喜。

4. 缺點

  • 計算成本較高,它需要將所有的用戶、產(chǎn)品和評級信息全部加載到內(nèi)存中進(jìn)行相似度計算。

  • 這種方法對于沒有任何用戶信息的新用戶會失效,無法進(jìn)行推薦。這就是常說的冷啟動問題。

  • 在只有少量數(shù)據(jù)的情況下,這種算法的效果不理想。

  • 在沒有任何用戶或者產(chǎn)品內(nèi)容信息的情況下,無法只通過評級信息生成準(zhǔn)確的推薦信息。

03

基于內(nèi)容的推薦系統(tǒng)

在上一節(jié)我們看到通過僅參考用戶對產(chǎn)品的評級或是交互信息從而生成推薦信息,換而言之,為活躍用戶推薦新項目是基于與當(dāng)前用戶相似的用戶對該項目的評級來進(jìn)行的。

回憶一下前面介紹到的電影評級數(shù)據(jù),其中有個用戶給某部電影打了4星,在協(xié)同過濾中,算法只需要考慮根據(jù)評級去生成推薦。而在現(xiàn)實世界中,真實用戶之間進(jìn)行推薦時會根據(jù)電影特點或者內(nèi)容來評級,比如電影的類型、演員、導(dǎo)演、故事情節(jié)和劇本。真實用戶會根據(jù)個人喜好有選擇性地進(jìn)行觀看。根據(jù)這些現(xiàn)實情況,想要達(dá)到最大化實現(xiàn)商業(yè)目的,在構(gòu)建推薦引擎時,需要通過考慮如何根據(jù)個人的品味和產(chǎn)品內(nèi)容來進(jìn)行推薦,而不是單純地將目標(biāo)設(shè)定在尋找相似用戶的品味以進(jìn)行推薦。

這種針對用戶自身偏好和產(chǎn)品內(nèi)容的推薦,稱之為基于內(nèi)容的推薦系統(tǒng),如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

構(gòu)建基于內(nèi)容的推薦引擎的另一個目的是想要解決協(xié)同過濾方法中新用戶面臨的冷啟動問題。當(dāng)一個新用戶登錄時,可以根據(jù)個人的品味,進(jìn)行新項目的推薦。

構(gòu)建基于內(nèi)容的推薦系統(tǒng),主要有以下三個步驟:

  • 生成產(chǎn)品的內(nèi)容信息。

  • 根據(jù)產(chǎn)品的特征生成用戶畫像和偏好項。

  • 生成推薦信息,預(yù)測用戶偏好的項目列表。

項目畫像生成:該步主要將產(chǎn)品根據(jù)產(chǎn)品特征進(jìn)行抽象描述。最常見是將產(chǎn)品內(nèi)容表示在向量空間模型中,將產(chǎn)品名稱作為行,特征作為列。通常產(chǎn)品內(nèi)容可能是結(jié)構(gòu)化數(shù)據(jù),也可能是非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)會存儲到數(shù)據(jù)庫中,非結(jié)構(gòu)化的特征可能包含網(wǎng)站中相關(guān)的評論、標(biāo)簽或者是文本屬性。在本步驟中,需要提取相關(guān)的特征以及它們與產(chǎn)品相關(guān)的相對重要性分值。

對項目進(jìn)行畫像生成時可以使用詞頻—逆文檔頻率 ( 簡稱TF—IDF ),它可以計算出項目相關(guān)的較為重要特征。由于該推薦系統(tǒng)需要將項目的特征使用向量進(jìn)行表示,所以可以使用TF—IDF。

舉個例子以方便大家更好地理解這種思想。上面提到基于內(nèi)容的推薦引擎需要更多關(guān)于電影內(nèi)容的信息,如下表所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

首先我們要做的是使用TF—IDF創(chuàng)建項目畫像。詳細(xì)步驟如下:

創(chuàng)建一個特征詞頻矩陣,它通常包含對每個文檔中每個特征詞的詳細(xì)統(tǒng)計,引入到本例中,可以理解成每部電影是否屬于某一類型。數(shù)字1代表屬于該類型,而0代表不屬于該類型,如下表所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

接下來通過逆文檔頻率 ( IDF ) 的公式計算出每個電影類型的頻率。公式如下:

Idf = log ( 文檔總數(shù)/文檔頻率 )

本例中,文檔的總數(shù)是電影的總數(shù),文檔頻率指的是它們在所有文檔中出現(xiàn)的總次數(shù),如下表所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

最后一步是通過以下公式構(gòu)建TF—IDF矩陣:

tf*idf

主流推薦引擎技術(shù)及優(yōu)缺點分析

1. 用戶畫像生成

本步將構(gòu)建匹配產(chǎn)品內(nèi)容的用戶畫像或偏好矩陣。一般來說,在構(gòu)建用戶畫像或特征時基于共同的產(chǎn)品內(nèi)容,而通過比較用戶和項目畫像并計算它們之間的相似度將會更有意義。

考慮下表中的數(shù)據(jù)集,該數(shù)據(jù)集記錄了每位用戶的歷史觀影記錄。單元格中為1表示用戶觀看過該部電影。這些信息清晰地說明了用戶對電影的偏好。

主流推薦引擎技術(shù)及優(yōu)缺點分析

根據(jù)前面的信息,我們將創(chuàng)建一個可以用來與項目畫像比較的用戶畫像,也就是說,我們現(xiàn)在要構(gòu)建一個用戶畫像,其中包含用戶對項目特征 ( 這里是電影類型信息 ) 的偏好。將TF—IDF和用戶偏好矩陣求點積,從而得到用戶對每種類型電影的親和度,如下表所示。

DotProduct(Tf-idf, userPreference matrix)

主流推薦引擎技術(shù)及優(yōu)缺點分析

現(xiàn)在已經(jīng)得到用戶畫像和項目畫像,接下來可以預(yù)測用戶對每個項目的喜愛程度。我們現(xiàn)在可以通過余弦相似度計算用戶對項目的喜好。在本例中,通過計算用戶畫像和項目畫像的余弦相似度得出以下結(jié)果。

cosineSimilarity(userProfile, ItemProfile)

主流推薦引擎技術(shù)及優(yōu)缺點分析

從上面的表格中,我們不難發(fā)現(xiàn),余弦角越大越可能是用戶喜歡的電影,也就是可以向用戶推薦的電影。

現(xiàn)在我們已經(jīng)完成了推薦,讓我們回頭看一下如何收集用戶喜好數(shù)據(jù)。通常有兩種獲取用戶數(shù)據(jù)的方法,如下所示:

  • 直接詢問式,即明確地詢問用戶對產(chǎn)品特征的喜好,并進(jìn)行存儲。

  • 隱式獲取,即在后臺收集用戶與產(chǎn)品的交互數(shù)據(jù),如瀏覽歷史、評級歷史和購買歷史,并生成用戶對產(chǎn)品特征的喜好。

到目前為止介紹的基于內(nèi)容的推薦引擎,都是基于相似度計算。當(dāng)然并不是只有相似度算法,也可以使用有監(jiān)督的機器學(xué)習(xí)方法,如分類也可以用在推測用戶最有可能喜歡的產(chǎn)品上。

使用機器學(xué)習(xí)或其他數(shù)學(xué)模型、統(tǒng)計模型生成推薦信息的推薦系統(tǒng)稱為基于模型的推薦系統(tǒng)?;诜诸惖姆椒▽儆诨谀P偷耐扑]系統(tǒng),首先使用用戶畫像和項目畫像構(gòu)建機器學(xué)習(xí)模型來預(yù)測用戶對項目是否喜歡。有監(jiān)督分類常用的有:邏輯回歸、KNN分類、概率方法等。基于模型的推薦引擎將在下一節(jié)中討論。

2. 優(yōu)點

  • 基于內(nèi)容的推薦系統(tǒng)以實現(xiàn)個性化推薦為目標(biāo)。

  • 推薦信息是基于個人的喜好來進(jìn)行推薦,而不像協(xié)同過濾需要通過用戶社區(qū)。

  • 可以支持實時性推薦的要求,因為不需要加載所有的數(shù)據(jù)進(jìn)行處理或生成推薦信息。

  • 比協(xié)同過濾方法準(zhǔn)確性更高,因為它處理了產(chǎn)品內(nèi)容,而不是只基于評級信息。

  • 能處理冷啟動問題。

3. 缺點

  • 隨著推薦系統(tǒng)更加個性化,當(dāng)加入更多用戶信息時,只能生成用戶小范圍的喜好信息推薦。

  • 上述問題將會導(dǎo)致用戶信息閉塞,新產(chǎn)品無法推送給用戶。

  • 用戶敏感度降低,對其周圍的信息或是趨勢無法得到感知。

04
情境感知推薦系統(tǒng)

隨著時間的推移,推薦系統(tǒng)一直在不斷地快速發(fā)展變化,從最初的基于近鄰算法的推薦引擎到針對單個用戶的個性化推薦系統(tǒng)的出現(xiàn)。這些個性化推薦系統(tǒng)在商業(yè)上的應(yīng)用取得了巨大的成功,它為用戶提供了較合理的推薦信息,提高了用戶的購買可能性,使企業(yè)獲得更多利益。

盡管個性化推薦系統(tǒng)定位在單個用戶級別,推薦的信息是根據(jù)個人喜好得出,但仍然有可以改進(jìn)的地方。比如,同一個人在不同的地方可能有不同的需求。又或者,同一個人在不同的時間也會有不同的需求。如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

我們的推薦引擎需要足夠智能,它需要進(jìn)化到能夠滿足用戶在不同時間、不同地點的需求。比如冬天推薦用戶購買皮夾克,夏天推薦人們購買襯衫。又或是,根據(jù)一天的不同時段,為用戶推薦好的餐廳進(jìn)行早餐或者晚餐,這樣的推薦信息對于用戶來說是非常有幫助的。這種可以考慮到位置、時間、情緒等相關(guān)因素,定義用戶的情境并進(jìn)行推薦的系統(tǒng),被稱為情境感知推薦系統(tǒng),如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

上圖展示了一個在寒冷的天氣向用戶推薦熱咖啡的推薦引擎。

1. 情境定義

那么到底什么是情境呢?一般來說,情境指的是用戶所處的當(dāng)前狀態(tài)。用戶的情境可以是用戶所處的任何狀態(tài),比如地點、時間、日期、季節(jié)、心情、計劃、用戶是否一個人、是在辦公室、在度假、與家人或朋友在一起、是否面臨人生大事等。正是因為用戶在不同的情境下會有不同的需求,所以推薦系統(tǒng)可以捕捉用戶的情境信息,從而為用戶提供更為有效的推薦。

例如,旅游度假推薦引擎可以考慮把季節(jié)、地點和時間作為情境以改善推薦。又或者在電子商務(wù)網(wǎng)站的推薦引擎中,可以把用戶是否面臨人生大事和用戶的購買行為考慮為推薦情境。又或是一個食品網(wǎng)站推薦引擎可以考慮用餐時間、地點等信息。

情境感知推薦系統(tǒng)需要如何設(shè)計?到現(xiàn)在為止,書中已經(jīng)介紹的推薦引擎最多是在二維空間中建模,主要是基于用戶的偏好和項目特征數(shù)據(jù)而進(jìn)行的。而對于情境感知推薦系統(tǒng)來說,它在建模的時候加入了一個新的維度,即分析用戶的情境。使推薦引擎從解決二維問題擴(kuò)展到三維問題,如下圖所示。

Recommendations = User x Item x Context

主流推薦引擎技術(shù)及優(yōu)缺點分析

回顧一下基于內(nèi)容的推薦系統(tǒng)中涉及的例子。基于內(nèi)容的推薦引擎考慮用戶畫像和項目畫像,通過計算用戶畫像和項目畫像的相似度并基于用戶偏好以為每個項目生成用戶評級。而在情境感知推薦系統(tǒng)中,需要考慮加入情境,對應(yīng)用戶偏好和情境生成項目排序。

舉例說明,假設(shè)推薦系統(tǒng)已經(jīng)收集到用戶在不同時間觀影的歷史數(shù)據(jù),類型包括weekday、weekend和Holiday。通過該情境信息,可以分析出每位用戶與電影內(nèi)容之間的關(guān)系。如下表所示,表中數(shù)據(jù)顯示用戶TOBY在以觀影時間類型為情境的前提下,會對哪種電影內(nèi)容比較感興趣。

主流推薦引擎技術(shù)及優(yōu)缺點分析

通過對用戶數(shù)據(jù)的分析,參考所有的電影內(nèi)容類型,可以為用戶TOBY構(gòu)建一個基于內(nèi)容情境的用戶畫像。

將得到情境矩陣和用戶畫像矩陣求點積,從而得出關(guān)于所有情境的用戶畫像,如下表所示。

Dotproduct(user profile, context matrix) for TOBY:

主流推薦引擎技術(shù)及優(yōu)缺點分析

現(xiàn)在計算得到了TOBY關(guān)于電影內(nèi)容的各個情境的偏好。下一步是計算TOBY在全部情境中對每部電影的排序,如下表所示。

Cosine similarity (contextual movie content preference matrix, item profile):

主流推薦引擎技術(shù)及優(yōu)缺點分析

現(xiàn)在得到了TOBY的情境級電影排序,可以在此基礎(chǔ)上進(jìn)行電影推薦了。

從上面的例子中,不難看出現(xiàn)在接觸到的這種情境感知推薦系統(tǒng),其實是在基于內(nèi)容的推薦系統(tǒng)的基礎(chǔ)上加入了一個新的維度,即情境。情境感知系統(tǒng)在生成推薦信息時,主要過程分為兩步,如下所述:

  • 根據(jù)用戶的喜好,為每位用戶生成產(chǎn)品推薦列表,也就是基于內(nèi)容的推薦。

  • 根據(jù)特定的情境,篩選出推薦信息。

常用的構(gòu)建情境感知系統(tǒng)的方法如下:

  • 前置過濾法

  • 后置過濾法

2. 前置過濾法

在前置過濾法中,情境信息會被應(yīng)用到用戶畫像和產(chǎn)品內(nèi)容上。這一步會過濾掉所有非相關(guān)的特征,最終的個性化推薦會通過剩余的特征集生成。因為特征過濾是在生成個性化推薦之前進(jìn)行的,所以稱這種方法為前置過濾法。如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

3. 后置過濾法

在后置過濾法中,首先會基于用戶畫像和產(chǎn)品特征生成個性化推薦,之后再根據(jù)當(dāng)前情境過濾出相關(guān)產(chǎn)品。如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

4. 優(yōu)點

  • 情境感知系統(tǒng)在進(jìn)行推薦時加入了情境,這種推薦引擎參考了用戶的動態(tài)并不斷地同步更新用戶數(shù)據(jù),所以由它生成的推薦信息更能貼近用戶的真實需求,與個性化的基于內(nèi)容的推薦系統(tǒng)相比,情境感知系統(tǒng)在推薦信息上更具有先進(jìn)性。

  • 情境感知系統(tǒng)具有更強的實時性。

5. 缺點

  • 與其他的個性化推薦系統(tǒng)一樣,額外的亮點因素也會在這類推薦系統(tǒng)中缺失。

05
混合推薦系統(tǒng)

協(xié)同過濾推薦系統(tǒng)與基于內(nèi)容的推薦系統(tǒng)都很有效,適用范圍也很廣。它們都有很成功的實現(xiàn),但也有各自的局限性。目前的研究已經(jīng)開始朝著如何結(jié)合協(xié)同過濾和基于內(nèi)容的推薦的方向發(fā)展。將這兩種推薦系統(tǒng)相結(jié)合,產(chǎn)生的新型推薦系統(tǒng),被稱之為混合推薦系統(tǒng)。

如何選擇要混合的推薦系統(tǒng)呢?這要根據(jù)需要解決什么類型的現(xiàn)實問題或是基于什么樣的業(yè)務(wù)需求考慮,當(dāng)然還要取決于一個經(jīng)驗豐富的開發(fā)人員對問題的判斷。

構(gòu)建混合推薦系統(tǒng)最常見的方法有:加權(quán)法、混合法、變換法、層疊法、特征組合法、特征擴(kuò)充法、元級別 ( Meta-level )。

1. 加權(quán)法

在這種方法中,最終的推薦將是所有可用的推薦引擎的推薦結(jié)果的組合,通常是線性的。在部署這種加權(quán)混合推薦引擎之初,對各個推薦引擎的結(jié)果賦予的權(quán)重是相等的,然后通過評估用戶對推薦的響應(yīng),逐漸調(diào)整權(quán)重。

2. 混合法

當(dāng)可以混合所有可用的推薦引擎的有效推薦結(jié)果時,就可以應(yīng)用混合法。這種方法主要應(yīng)用在因為數(shù)據(jù)稀疏導(dǎo)致不能通過所有可用的推薦系統(tǒng)獲得產(chǎn)品評分的情況。因此在采用這種方式生成推薦信息時,推薦是獨立生成的,并在發(fā)送給用戶之前先進(jìn)行混合。

3. 層疊法

在這種方法中,推薦信息通常采用協(xié)同過濾的方式生成。之后應(yīng)用基于內(nèi)容的推薦技術(shù),將最終的推薦信息或排序列表進(jìn)行輸出。

4. 特征組合法

特征組合法組合不同推薦系統(tǒng)的特征并將最終推薦方法應(yīng)用于組合的特征集。在這種技術(shù)中,我們組合來自基于內(nèi)容的推薦系統(tǒng)的用戶—項目偏好特征和用戶—項目評級信息,并考慮一個新的策略來構(gòu)建混合推薦系統(tǒng) ( 如下圖所示 )。

主流推薦引擎技術(shù)及優(yōu)缺點分析

5. 優(yōu)點

  • 混合推薦系統(tǒng)可以處理冷啟動問題和數(shù)據(jù)稀疏問題。

  • 混合推薦系統(tǒng)的健壯性和可擴(kuò)展性比任何單獨的推薦模型要好很多。

  • 混合推薦系統(tǒng)將各種方法進(jìn)行組合,使推薦的準(zhǔn)確率得到了提高。

06
基于模型的推薦系統(tǒng)

到目前為止,我們都專注于用于協(xié)同過濾方法的包含用戶或產(chǎn)品之間相似度計算的近鄰方法,或是將用戶和項目內(nèi)容在一個向量空間模型表示,并尋找相似度度量以識別相似于用戶偏好的項目?;谙嗨贫鹊姆椒ǖ闹饕繕?biāo)是計算出產(chǎn)品或者產(chǎn)品內(nèi)容的用戶偏好權(quán)重,然后使用這些特征權(quán)重來推薦項目。

這些方法一直很成功,但它們也有自身的局限性。因為相似度計算時,所有的數(shù)據(jù)都必須加載到環(huán)境中,這些方法也被稱為基于內(nèi)存的模型。這些基于內(nèi)存的模型當(dāng)數(shù)據(jù)量非常大時在實時場景中響應(yīng)速度非常慢,因為所有數(shù)據(jù)都需要被加載。另一個局限是權(quán)重的計算并不是像機器學(xué)習(xí)應(yīng)用一樣自動學(xué)習(xí)的。第三個局限是,冷啟動問題對系統(tǒng)的限制,基于近鄰的方法與基于內(nèi)存的方法都存在這個問題。

為了突破上述這些局限,相關(guān)研究人員已經(jīng)開始采用更為先進(jìn)的方法來提升推薦引擎處理問題的能力。如引入概率模型、機器學(xué)習(xí)模型和矩陣方法等,機器學(xué)習(xí)常用的有:有監(jiān)督模型和無監(jiān)督模型,矩陣方法常用的有:矩陣分解和奇異值分解。在基于模型的方法中,可以利用現(xiàn)有的歷史數(shù)據(jù),通過自動學(xué)習(xí)得到的權(quán)重進(jìn)行建模。根據(jù)得到的權(quán)重信息進(jìn)行針對產(chǎn)品的預(yù)測,將得到的最終結(jié)果按照特定需求進(jìn)行排序,最后得到推薦結(jié)果。

1. 概率法

在概率法中,根據(jù)來自可用數(shù)據(jù)的先驗概率構(gòu)建一個概率模型,并根據(jù)計算每個用戶對產(chǎn)品的偏好概率,如喜歡/不喜歡的概率值,生成推薦排序列表。其中最常用的有樸素貝葉斯算法,這種技術(shù)的特點是簡單易用,但是功能強大。

2. 機器學(xué)習(xí)法

如在基于內(nèi)容的推薦系統(tǒng)中所述,我們可以將推薦問題轉(zhuǎn)變成機器學(xué)習(xí)的問題進(jìn)行思考。使用已有的歷史用戶和產(chǎn)品數(shù)據(jù),我們可以從中提取出特征和輸出類,然后構(gòu)建機器學(xué)習(xí)模型。再使用生成的模型,生成最終的產(chǎn)品推薦列表。常用的機器學(xué)習(xí)方法有:邏輯回歸、KNN分類、決策樹、SVM ( 支持向量機 )、聚類等。這些方法在協(xié)同過濾、基于內(nèi)容的推薦系統(tǒng)、情境感知系統(tǒng)和混合推薦系統(tǒng)中都有應(yīng)用。在第4章中將詳細(xì)講解每種機器學(xué)習(xí)方法。

3. 數(shù)學(xué)法

在這些方法中,我們假設(shè)產(chǎn)品的用戶評級或交互信息是簡單的矩陣。在這些矩陣中,我們使用數(shù)學(xué)方法來預(yù)測用戶對缺失項的評級。最常用的方法是矩陣分解模型和奇異值分解模型,如下圖所示。

主流推薦引擎技術(shù)及優(yōu)缺點分析

通過應(yīng)用矩陣分解方法,假設(shè)將原有的評級矩陣R分解成兩個新的矩陣 ( U,V ),分別代表用戶和電影的潛在特征。

使用數(shù)學(xué)方法,我們可以把矩陣分解為兩個低秩矩陣。在上面的例子中,矩陣R分解成矩陣U和V,現(xiàn)在當(dāng)我們將U和V進(jìn)行乘法運算時,將會得到原來的矩陣R。這個概念常被用在推薦引擎中以對原始評級矩陣中的未知評級進(jìn)行填充。然后對推薦信息進(jìn)行排序,并向用戶進(jìn)行推薦。

4. 優(yōu)點

  • 基于模型的方法比基于啟發(fā)式的方法 ( 如近鄰算法 ) 更為準(zhǔn)確。

  • 在啟發(fā)式方法中,產(chǎn)品或者產(chǎn)品內(nèi)容的權(quán)重更為靜態(tài),而在基于模型的推薦引擎中,權(quán)重是通過自動學(xué)習(xí)得到的。

  • 基于模型的方法使用數(shù)據(jù)驅(qū)動的方法可以提取出很多我們沒有發(fā)現(xiàn)的模式。

07
總結(jié)

通過本文的學(xué)習(xí),我們已經(jīng)了解到很多流行的推薦引擎技術(shù),如協(xié)同過濾、基于內(nèi)容的推薦系統(tǒng)、情境感知系統(tǒng)、混合推薦系統(tǒng)、基于模型的推薦系統(tǒng),還有這些系統(tǒng)自身存在的優(yōu)缺點。本文還介紹了多種相似度計算的方法,如余弦相似度、歐氏距離和皮爾遜系數(shù)。對每個推薦系統(tǒng)的子分類也進(jìn)行了說明。

今天的分享就到這里,謝謝大家。

——本文摘自《自己動手做推薦引擎》

經(jīng)出版方授權(quán)發(fā)布。

作者介紹

?

蘇雷什·庫馬爾·戈拉卡拉 ( Suresh Kumar Gorakala ) 是一位專注于人工智能方向的數(shù)據(jù)科學(xué)家。他擁有近10年的專業(yè)經(jīng)驗,曾為多個領(lǐng)域的全球客戶服務(wù),并幫助他們使用先進(jìn)的大數(shù)據(jù)分析技術(shù)解決業(yè)務(wù)問題。他主要從事推薦引擎、自然語言處理、高級機器學(xué)習(xí)和圖數(shù)據(jù)庫等方面的工作。


特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

主流推薦引擎技術(shù)及優(yōu)缺點分析

長按訂閱更多精彩▼

主流推薦引擎技術(shù)及優(yōu)缺點分析

如有收獲,點個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉