主流推薦引擎技術及優缺點分析

在本文中,將詳細介紹多種類型的推薦系統,具體介紹基於近鄰算法的推薦引擎、個性化推薦引擎、基於模型的推薦系統和混合推薦引擎等,並分析介紹每種推薦系統的優缺點。

主要介紹的不同類型的推薦系統包括:

  • 近鄰算法推薦引擎:基於用戶的協同過濾和基於項目的協同過濾;
  • 個性化推薦引擎:基於內容的推薦引擎和情境感知推薦引擎;
  • 基於模型的推薦引擎:基於機器學習的推薦引擎、分類模型-SVM/KNN、矩陣分解、奇異值分解、交替最小二乘法概述、混合推薦引擎。

01

推薦引擎的發展

最近幾年,推薦系統發展迅猛。從簡單的近鄰算法到個性化推薦再到情境感知推薦,從批處理推薦到實時推薦,從啟發式的相似度計算到更準確、更復雜的機器學習方法的應用。

在推薦系統發展的早期階段,生成推薦時只能基於用戶對產品的評級。在這段時期,研究人員只能使用現有的評級數據,使用簡單的啟發式方法,例如:在計算相似度時,常採用諸如歐氏距離、皮爾遜係數、餘弦相似度等。這些計算方法雖然簡單,但是在相似度上的判斷,卻有非常好的表現,目前仍是一些推薦引擎比較常用的方法。

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

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

為了應對冷啟動問題,也有新的方法出現,比如基於內容的推薦系統。這些推薦系統的出現擴大了視野,注入了新的思路,比如個性化推薦系統,它能夠向每位用戶獨立推薦產品。在這種方法中,依賴的數據不再是評級信息,而考慮用戶個人喜好和產品特徵,如下圖所示。

主流推薦引擎技術及優缺點分析

在推薦系統發展初期,相似度計算被用於基於內容的推薦系統,隨著技術發展和硬件設備的不斷強化升級,更為先進的方法逐步被實現出來,機器學習中更為複雜的模型漸漸取代傳統的啟發式方法。機器學習模型提高了推薦信息的準確性。

雖然基於內容的推薦系統解決了很多協同過濾中的缺點,但其自身也有固有的缺點,比如新發現,換句話說,就是不能在用戶的偏好範圍之外進行新項目的推薦。但這個問題協同過濾卻可以解決。

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

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

隨著技術進步,如大數據生態系統、內存分析工具 ( 如Apache Spark ) 和實時推薦處理這些技術的發展,使處理大數據集成為可能。

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

在技術方面,正在從機器學習向更先進的神經網絡深度學習方法進行擴展。

02

基於近鄰算法的推薦引擎

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

主流推薦引擎技術及優缺點分析

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

下圖是來自亞馬遜近鄰推薦算法的展示。

主流推薦引擎技術及優缺點分析

這些基於啟發的方法是基於以下假設:

  • 在過去有相似偏好的人在未來也有相似的偏好
  • 人們的偏好在未來的時間裡將保持穩定和一致
主流推薦引擎技術及優缺點分析

協同過濾系統 ( 如上圖所示 ) 有兩種類型:

  • 基於用戶的協同過濾
  • 基於項目的協同過濾

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

1. 基於用戶的協同過濾

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

舉個例子以便我們理解基於用戶的協同過濾:

問題陳述:現有用戶對電影網站中電影作品的評級數據集。任務是向這些用戶推薦電影,數據集如下表所示:

主流推薦引擎技術及優缺點分析

在學習使用推薦方法前,我們首先要做的是:理解和分析現有的數據。現在我們按照如下步驟來分析:

  • 一個與該應用有過互動的用戶集合
  • 一個所有可用電影的目錄
  • 每位用戶對電影的評級

不是所有的用戶對所有電影都進行了評級,但是未評級的電影作品只佔少數。

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

可以歸納成兩步:

  • 利用電影評級信息計算用戶之間的相似度。
  • 對於每一個活躍用戶,將所有其未評級但其他用戶已評級電影考慮在內。為該活躍用戶預測未評級電影的評級。

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

  • 第一步尋找與Jack Mathews 相似的用戶。通過觀察數據集發現Gene Seymour和Mick LaSalle與Jack Mathews相似度較高。
  • 用戶之間的相似度可以通過用戶給定的電影評級進行計算。計算相似度最常用的方法有歐氏距離與皮爾遜相關係數。
  • 在此處可以採用歐氏距離來計算用戶相似度。利用如下公式:
主流推薦引擎技術及優缺點分析

將用戶、電影和評級的數據映射到座標軸上,用戶作為x軸,電影作為y軸,評級作為向量空間中的點。現在我們已經把數據投影到向量空間,兩個點之間的相似度或緊密度可以用歐氏距離和皮爾遜相關係數來計算。

主流推薦引擎技術及優缺點分析

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

第二步,我們通過其他用戶對《Just My Luck》給出的評級,通過加權平均方法計算,預測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. 基於項目的協同過濾

基於項目的協同過濾推薦系統與基於用戶的協同過濾不同,它使用項目之間的相似度而不是用戶之間的相似度。基於項目的推薦系統的基本思想是,如果用戶的歷史數據中顯示過對項目A喜歡,如果項目B與項目A相似,那麼該用戶可能也喜歡項目B,如下圖所示。

基於用戶的協同過濾有幾個缺點:

  • 在現實生活中用戶的評級數據通常非常稀疏,用戶在一個數據龐大的分類中只會有非常少量的評級數據,這會對系統造成很大的影響。
  • 當數據量非常龐大時,計算所有用戶的相似度值的成本是非常高昂的。
主流推薦引擎技術及優缺點分析

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

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

與基於用戶的協同過濾方法步驟大致相同,基於項目的協同過濾步驟如下:

  • 計算項目間的相似度。
  • 通過利用活躍用戶之前已經評級的項目,對還沒有評級的項目進行預測評級。

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

主流推薦引擎技術及優缺點分析

在將餘弦相似度應用於推薦系統時,我們將項目列看作n維向量,並將兩個項目之間的相似度看作它們之間的夾角。角度越小,項目越相似。

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

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

主流推薦引擎技術及優缺點分析

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

現在可以通過Toby對《Lady in the Water》評級計算加權總和來進行預測。也就是說,我們使用Toby評級過的每一部電影與《Lady in the Water》的相似度分數,乘以對應的評級,並對所有已評級電影的分數求和。這個最後的總和除以《Lady in the Water》的相似度分數總和,如下所示:

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

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

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

3. 優點

  • 易於實現。
  • 在構建推薦時,無論是產品的內容信息,還是用戶的畫像信息,都不需要。
  • 新項目被推薦給用戶,往往會帶來意想不到的驚喜。

4. 缺點

  • 計算成本較高,它需要將所有的用戶、產品和評級信息全部加載到內存中進行相似度計算。
  • 這種方法對於沒有任何用戶信息的新用戶會失效,無法進行推薦。這就是常說的冷啟動問題。
  • 在只有少量數據的情況下,這種算法的效果不理想。
  • 在沒有任何用戶或者產品內容信息的情況下,無法只通過評級信息生成準確的推薦信息。

03

基於內容的推薦系統

在上一節我們看到通過僅參考用戶對產品的評級或是交互信息從而生成推薦信息,換而言之,為活躍用戶推薦新項目是基於與當前用戶相似的用戶對該項目的評級來進行的。

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

這種針對用戶自身偏好和產品內容的推薦,稱之為基於內容的推薦系統,如下圖所示。

主流推薦引擎技術及優缺點分析

構建基於內容的推薦引擎的另一個目的是想要解決協同過濾方法中新用戶面臨的冷啟動問題。當一個新用戶登錄時,可以根據個人的品味,進行新項目的推薦。

構建基於內容的推薦系統,主要有以下三個步驟:

  • 生成產品的內容信息。
  • 根據產品的特徵生成用戶畫像和偏好項。
  • 生成推薦信息,預測用戶偏好的項目列表。

項目畫像生成:該步主要將產品根據產品特徵進行抽象描述。最常見是將產品內容表示在向量空間模型中,將產品名稱作為行,特徵作為列。通常產品內容可能是結構化數據,也可能是非結構化數據。結構化數據會存儲到數據庫中,非結構化的特徵可能包含網站中相關的評論、標籤或者是文本屬性。在本步驟中,需要提取相關的特徵以及它們與產品相關的相對重要性分值。

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

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

主流推薦引擎技術及優缺點分析

首先我們要做的是使用TF—IDF創建項目畫像。詳細步驟如下:

創建一個特徵詞頻矩陣,它通常包含對每個文檔中每個特徵詞的詳細統計,引入到本例中,可以理解成每部電影是否屬於某一類型。數字1代表屬於該類型,而0代表不屬於該類型,如下表所示。

主流推薦引擎技術及優缺點分析

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

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

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

主流推薦引擎技術及優缺點分析

最後一步是通過以下公式構建TF—IDF矩陣:

tf*idf

主流推薦引擎技術及優缺點分析

1. 用戶畫像生成

本步將構建匹配產品內容的用戶畫像或偏好矩陣。一般來說,在構建用戶畫像或特徵時基於共同的產品內容,而通過比較用戶和項目畫像並計算它們之間的相似度將會更有意義。

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

主流推薦引擎技術及優缺點分析

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

DotProduct(Tf-idf, userPreference matrix)

主流推薦引擎技術及優缺點分析

現在已經得到用戶畫像和項目畫像,接下來可以預測用戶對每個項目的喜愛程度。我們現在可以通過餘弦相似度計算用戶對項目的喜好。在本例中,通過計算用戶畫像和項目畫像的餘弦相似度得出以下結果。

cosineSimilarity(userProfile, ItemProfile)

主流推薦引擎技術及優缺點分析

從上面的表格中,我們不難發現,餘弦角越大越可能是用戶喜歡的電影,也就是可以向用戶推薦的電影。

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

  • 直接詢問式,即明確地詢問用戶對產品特徵的喜好,並進行存儲。
  • 隱式獲取,即在後臺收集用戶與產品的交互數據,如瀏覽歷史、評級歷史和購買歷史,並生成用戶對產品特徵的喜好。

到目前為止介紹的基於內容的推薦引擎,都是基於相似度計算。當然並不是只有相似度算法,也可以使用有監督的機器學習方法,如分類也可以用在推測用戶最有可能喜歡的產品上。

使用機器學習或其他數學模型、統計模型生成推薦信息的推薦系統稱為基於模型的推薦系統。基於分類的方法屬於基於模型的推薦系統,首先使用用戶畫像和項目畫像構建機器學習模型來預測用戶對項目是否喜歡。有監督分類常用的有:邏輯迴歸、KNN分類、概率方法等。基於模型的推薦引擎將在下一節中討論。

2. 優點

  • 基於內容的推薦系統以實現個性化推薦為目標。
  • 推薦信息是基於個人的喜好來進行推薦,而不像協同過濾需要通過用戶社區。
  • 可以支持實時性推薦的要求,因為不需要加載所有的數據進行處理或生成推薦信息。
  • 比協同過濾方法準確性更高,因為它處理了產品內容,而不是隻基於評級信息。
  • 能處理冷啟動問題。

3. 缺點

  • 隨著推薦系統更加個性化,當加入更多用戶信息時,只能生成用戶小範圍的喜好信息推薦。
  • 上述問題將會導致用戶信息閉塞,新產品無法推送給用戶。
  • 用戶敏感度降低,對其周圍的信息或是趨勢無法得到感知。

04

情境感知推薦系統

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

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

主流推薦引擎技術及優缺點分析

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

主流推薦引擎技術及優缺點分析

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

1. 情境定義

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

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

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

Recommendations = User x Item x Context

主流推薦引擎技術及優缺點分析

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

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

主流推薦引擎技術及優缺點分析

通過對用戶數據的分析,參考所有的電影內容類型,可以為用戶TOBY構建一個基於內容情境的用戶畫像。

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

Dotproduct(user profile, context matrix) for TOBY:

主流推薦引擎技術及優缺點分析

現在計算得到了TOBY關於電影內容的各個情境的偏好。下一步是計算TOBY在全部情境中對每部電影的排序,如下表所示。

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

主流推薦引擎技術及優缺點分析

現在得到了TOBY的情境級電影排序,可以在此基礎上進行電影推薦了。

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

  • 根據用戶的喜好,為每位用戶生成產品推薦列表,也就是基於內容的推薦。
  • 根據特定的情境,篩選出推薦信息。

常用的構建情境感知系統的方法如下:

  • 前置過濾法
  • 後置過濾法

2. 前置過濾法

在前置過濾法中,情境信息會被應用到用戶畫像和產品內容上。這一步會過濾掉所有非相關的特徵,最終的個性化推薦會通過剩餘的特徵集生成。因為特徵過濾是在生成個性化推薦之前進行的,所以稱這種方法為前置過濾法。如下圖所示。

主流推薦引擎技術及優缺點分析

3. 後置過濾法

在後置過濾法中,首先會基於用戶畫像和產品特徵生成個性化推薦,之後再根據當前情境過濾出相關產品。如下圖所示。

主流推薦引擎技術及優缺點分析

4. 優點

  • 情境感知系統在進行推薦時加入了情境,這種推薦引擎參考了用戶的動態並不斷地同步更新用戶數據,所以由它生成的推薦信息更能貼近用戶的真實需求,與個性化的基於內容的推薦系統相比,情境感知系統在推薦信息上更具有先進性。
  • 情境感知系統具有更強的實時性。

5. 缺點

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

05

混合推薦系統

協同過濾推薦系統與基於內容的推薦系統都很有效,適用範圍也很廣。它們都有很成功的實現,但也有各自的侷限性。目前的研究已經開始朝著如何結合協同過濾和基於內容的推薦的方向發展。將這兩種推薦系統相結合,產生的新型推薦系統,被稱之為混合推薦系統。

如何選擇要混合的推薦系統呢?這要根據需要解決什麼類型的現實問題或是基於什麼樣的業務需求考慮,當然還要取決於一個經驗豐富的開發人員對問題的判斷。

構建混合推薦系統最常見的方法有:加權法、混合法、變換法、層疊法、特徵組合法、特徵擴充法、元級別 ( Meta-level )。

1. 加權法

在這種方法中,最終的推薦將是所有可用的推薦引擎的推薦結果的組合,通常是線性的。在部署這種加權混合推薦引擎之初,對各個推薦引擎的結果賦予的權重是相等的,然後通過評估用戶對推薦的響應,逐漸調整權重。

2. 混合法

當可以混合所有可用的推薦引擎的有效推薦結果時,就可以應用混合法。這種方法主要應用在因為數據稀疏導致不能通過所有可用的推薦系統獲得產品評分的情況。因此在採用這種方式生成推薦信息時,推薦是獨立生成的,並在發送給用戶之前先進行混合。

3. 層疊法

在這種方法中,推薦信息通常採用協同過濾的方式生成。之後應用基於內容的推薦技術,將最終的推薦信息或排序列表進行輸出。

4. 特徵組合法

特徵組合法組合不同推薦系統的特徵並將最終推薦方法應用於組合的特徵集。在這種技術中,我們組合來自基於內容的推薦系統的用戶—項目偏好特徵和用戶—項目評級信息,並考慮一個新的策略來構建混合推薦系統 ( 如下圖所示 )。

主流推薦引擎技術及優缺點分析

5. 優點

  • 混合推薦系統可以處理冷啟動問題和數據稀疏問題。
  • 混合推薦系統的健壯性和可擴展性比任何單獨的推薦模型要好很多。
  • 混合推薦系統將各種方法進行組合,使推薦的準確率得到了提高。

06

基於模型的推薦系統

到目前為止,我們都專注於用於協同過濾方法的包含用戶或產品之間相似度計算的近鄰方法,或是將用戶和項目內容在一個向量空間模型表示,並尋找相似度度量以識別相似於用戶偏好的項目。基於相似度的方法的主要目標是計算出產品或者產品內容的用戶偏好權重,然後使用這些特徵權重來推薦項目。

這些方法一直很成功,但它們也有自身的侷限性。因為相似度計算時,所有的數據都必須加載到環境中,這些方法也被稱為基於內存的模型。這些基於內存的模型當數據量非常大時在實時場景中響應速度非常慢,因為所有數據都需要被加載。另一個侷限是權重的計算並不是像機器學習應用一樣自動學習的。第三個侷限是,冷啟動問題對系統的限制,基於近鄰的方法與基於內存的方法都存在這個問題。

為了突破上述這些侷限,相關研究人員已經開始採用更為先進的方法來提升推薦引擎處理問題的能力。如引入概率模型、機器學習模型和矩陣方法等,機器學習常用的有:有監督模型和無監督模型,矩陣方法常用的有:矩陣分解和奇異值分解。在基於模型的方法中,可以利用現有的歷史數據,通過自動學習得到的權重進行建模。根據得到的權重信息進行針對產品的預測,將得到的最終結果按照特定需求進行排序,最後得到推薦結果。

1. 概率法

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

2. 機器學習法

如在基於內容的推薦系統中所述,我們可以將推薦問題轉變成機器學習的問題進行思考。使用已有的歷史用戶和產品數據,我們可以從中提取出特徵和輸出類,然後構建機器學習模型。再使用生成的模型,生成最終的產品推薦列表。常用的機器學習方法有:邏輯迴歸、KNN分類、決策樹、SVM ( 支持向量機 )、聚類等。這些方法在協同過濾、基於內容的推薦系統、情境感知系統和混合推薦系統中都有應用。在第4章中將詳細講解每種機器學習方法。

3. 數學法

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

主流推薦引擎技術及優缺點分析

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

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

4. 優點

  • 基於模型的方法比基於啟發式的方法 ( 如近鄰算法 ) 更為準確。
  • 在啟發式方法中,產品或者產品內容的權重更為靜態,而在基於模型的推薦引擎中,權重是通過自動學習得到的。
  • 基於模型的方法使用數據驅動的方法可以提取出很多我們沒有發現的模式。

07

總結

通過本文的學習,我們已經瞭解到很多流行的推薦引擎技術,如協同過濾、基於內容的推薦系統、情境感知系統、混合推薦系統、基於模型的推薦系統,還有這些系統自身存在的優缺點。本文還介紹了多種相似度計算的方法,如餘弦相似度、歐氏距離和皮爾遜係數。對每個推薦系統的子分類也進行了說明。

作者:蘇雷什·庫馬爾·戈拉卡拉 《自己動手做推薦引擎》作者


分享到:


相關文章: