推薦系統基礎知識

一、推薦系統是什麼?算法

推薦系統本質上是銷售系統的一部分。網絡

爲了解決信息過載和用戶無明確需求的問題,找到用戶感興趣的物品,纔有了個性化推薦系統。架構

推薦系統普遍存在於各種網站中,做爲一個應用爲用戶提供個性化的推薦。它須要一些用戶的歷史數據,通常由三個部分組成:基礎數據、推薦算法系統、前臺展現。dom

基礎數據包括不少維度,包括用戶的訪問、瀏覽、下單、收藏,用戶的歷史訂單信息,評價信息等不少信息;機器學習

推薦算法系統主要是根據不一樣的推薦訴求由多個算法組成的推薦模型;學習

前臺展現主要是對客戶端系統進行響應,返回相關的推薦信息以供展現。測試

 

二、推薦引擎的分類網站

根據目標用戶進行區分:根據這個指標能夠分爲基於大衆行爲的推薦引擎和個性化推薦引擎。編碼

  • 根據大衆行爲的推薦引擎,對每一個用戶都給出一樣的推薦,這些推薦能夠是靜態的由系統管理員人工設定的,或者基於系統全部用戶的反饋統計計算出的當下比較流行的物品。(銷售排行榜 關注排行榜 好評排行榜
  • 個性化推薦引擎,對不一樣的用戶,根據他們的口味和喜愛給出更加精確的推薦,這時,系統須要瞭解需推薦內容和用戶的特質,或者基於社會化網絡,經過找到與當前用戶相同喜愛的用戶,實現推薦。

這是一個最基本的推薦引擎分類,其實大部分人們討論的推薦引擎都是將個性化的推薦引擎,由於從根本上說,只有個性化的推薦引擎纔是更加智能的信息發現過程。spa

根據數據源進行區分:主要是根據數據之間的相關性進行推薦,由於大部分推薦引擎的工做原理仍是基於物品或者用戶的類似集進行推薦。

  • 根據系統用戶的基本信息發現用戶的相關程度,這種被稱爲基於人口統計學的推薦(Demographic-based Recommendation
  • 根據推薦物品或內容的元數據,發現物品或者內容的相關性,這種被稱爲基於內容的推薦(Content-based Recommendation
  • 根據用戶對物品或者信息的偏好,發現物品或者內容自己的相關性,或者是發現用戶的相關性,這種被稱爲基於協同過濾的推薦(Collaborative Filtering-based Recommendation)。

根根據推薦模型進行區分:能夠想象在海量物品和用戶的系統中,推薦引擎的計算量是至關大的,要實現實時的推薦務必須要創建一個推薦模型,關於推薦模型的創建方式能夠分爲如下幾種:

  • 基於物品和用戶自己的,這種推薦引擎將每一個用戶和每一個物品都看成獨立的實體,預測每一個用戶對於每一個物品的喜愛程度,這些信息每每 是用一個二維矩陣描述的。因爲用戶感興趣的物品遠遠小於總物品的數目,這樣的模型致使大量的數據空置,即咱們獲得的二維矩陣每每是一個很大的稀疏矩陣。同 時爲了減少計算量,咱們能夠對物品和用戶進行聚類, 而後記錄和計算一類用戶對一類物品的喜愛程度,但這樣的模型又會在推薦的準確性上有損失。
  • 基於關聯規則的推薦(Rule-based Recommendation):關聯規則的挖掘已是數據挖掘中的一個經典的問題,主要是挖掘一些數據的依賴關係,典型的場景就是「購物籃問題」,經過關聯規則的挖掘,咱們能夠找到哪些物品常常被同時購買,或者用戶購買了一些物品後一般會購買哪些其餘的物品,當咱們挖掘出這些關聯規則以後,咱們能夠基於這些規則給用戶進行推薦。
  • 基於模型的推薦(Model-based Recommendation):這是一個典型的機器學習的問題,能夠將已有的用戶喜愛信息做爲訓練樣本,訓練出一個預測用戶喜愛的模型,這樣之後用戶在 進入系統,能夠基於此模型計算推薦。這種方法的問題在於如何將用戶實時或者近期的喜愛信息反饋給訓練好的模型,從而提升推薦的準確度。

三、常見的推薦算法

基於用戶的協同過濾算法

第一代協同過濾技術是基於用戶的協同過濾算法,基於用戶的協同過濾算法在推薦系統中得到了極大的成功,但它有自身的侷限性。由於基於用戶的協同過濾算法先計算的是用戶與用戶的類似度(興趣相投,人以羣分物以類聚),而後將類似度比較接近的用戶A購買的物品推薦給用戶B,專業的說法是該算法用最近鄰居(nearest-neighbor)算法找出一個用戶的鄰居集合,該集合的用戶和該用戶有類似的喜愛,算法根據鄰居的偏好對該用戶進行預測。

基於用戶的推薦邏輯有兩個問題:冷啓動計算量巨大。基於用戶的算法只有已經被用戶選擇(購買)的物品纔有機會推薦給其餘用戶。在大型電商網站上來說,商品的數量實在是太多了,沒有被至關數量的用戶購買的物品實在是太多了,直接致使沒有機會推薦給用戶了,這個問題被稱之爲協同過濾的「冷啓動」。另外,由於計算用戶的類似度是經過目標用戶的歷史行爲記錄與其餘每個用戶的記錄相比較的出來的,對於一個擁有千萬級活躍用戶的電商網站來講,每計算一個用戶都涉及到了上億級別的計算,雖然咱們能夠先經過聚類算法經用戶先分羣,可是計算量也是足夠的大。

新用戶怎麼推薦?------默認推薦

基於用戶的協同過濾算法,推薦的商品都是已經被購買過的,對於沒有被用戶購買的商品,該如何推薦?------混合推薦,將多種推薦模型的結果打亂混合推薦。

商品數據和用戶數量都很大的狀況下,如何處理?------按照必定的聚類策略,將用戶聚類\物品聚類。

 

基於物品的協同過濾算法

第二代協同過濾技術是基於物品的協同過濾算法,基於物品的協同過濾算法與基於用戶的協同過濾算法基本相似。他使用全部用戶對物品或者信息的偏好,發現物品和物品之間的類似度,而後根據用戶的歷史偏好信息,將相似的物品推薦給用戶。可能這幾件商品的商品名稱風馬牛不相及,產品屬性有天壤之別,但經過模型算出來以後就是認爲他們是類似的。

舉個例子:假設用戶 A 喜歡物品 A 和物品 C,用戶 B 喜歡物品 A,物品 B 和物品 C,用戶 C 喜歡物品 A,從這些用戶的歷史喜愛能夠分析出物品 A 和物品 C 是比較相似的,喜歡物品 A 的人都喜歡物品 C,基於這個數據能夠推斷用戶 C 頗有可能也喜歡物品 C,因此係統會將物品 C 推薦給用戶 C

 

基於人口統計學的推薦

基於人口統計學的推薦機制(Demographic-based Recommendation)是一種最易於實現的推薦方法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,而後將類似用戶喜好的其餘物品推薦給當前用戶。基於人口統計學的推薦機制的好處在於:由於不使用當前用戶對物品的喜愛歷史數據,因此對於新用戶來說沒有「冷啓動(Cold Start」的問題。這個方法不依賴於物品自己的數據,因此這個方法在不一樣物品的領域均可以使用,它是領域獨立的(domain-independent)。

基於內容的推薦

基於內容的推薦是在推薦引擎出現之初應用最爲普遍的推薦機制,它的核心思想是根據推薦物品或內容的元數據,發現物品或者內容的相關性,而後基於用戶以往的喜愛記錄,推薦給用戶類似的物品。基於內容的推薦機制的好處在於它能很好的建模用戶的口味,能提供更加精確的推薦。

但它也存在如下幾個問題: 

  • 須要對物品進行分析和建模,推薦的質量依賴於對物品模型的完整和全面程度。在如今的應用中咱們能夠觀察到關鍵詞和標籤(Tag)被認爲是描述物品元數據的一種簡單有效的方法;
  • 物品類似度的分析僅僅依賴於物品自己的特徵,這裏沒有考慮人對物品的態度;
  • 由於須要基於用戶以往的喜愛歷史作出推薦,因此對於新用戶有「冷啓動」的問題。

雖然這個方法有不少不足和問題,但他仍是成功的應用在一些電影,音樂,圖書的社交站點,有些站點還請專業的人員對物品進行基因編碼,好比潘多拉,在一份報告中說道,在潘多拉的推薦引擎中,每首歌有超過 100 個元數據特徵,包括歌曲的風格,年份,演唱者等等。

四、混合推薦機制(重要)

在現行的 Web 站點上的推薦每每都不是單純只採用了某一種推薦的機制和策略,他們每每是將多個方法混合在一塊兒,從而達到更好的推薦效果。關於如何組合各個推薦機制,這裏講幾種比較流行的組合方法。

加權的混合(Weighted Hybridization用線性公式(linear formula)將幾種不一樣的推薦按照必定權重組合起來,具體權重的值須要在測試數據集上反覆實驗,從而達到最好的推薦效果。

切換的混合(Switching Hybridization):前面也講到,其實對於不一樣的狀況(數據量,系統運行情況,用戶和物品的數目等),推薦策略可能有很大的不一樣,那麼切換的混合方式,就是容許在不一樣的狀況下,選擇最爲合適的推薦機制計算推薦。

分區的混合(Mixed Hybridization):採用多種推薦機制,並將不一樣的推薦結果分不一樣的區顯示給用戶。其實,Amazon,噹噹網等不少電子商務網站都是採用這樣的方式,用戶能夠獲得很全面的推薦,也更容易找到他們想要的東西。

分層的混合(Meta-Level Hybridization採用多種推薦機制,並將一個推薦機制的結果做爲另外一個的輸入,從而綜合各個推薦機制的優缺點,獲得更加準確的推薦。

五、推薦系統的應用場景

Amazon 利用能夠記錄的全部用戶在站點上的行爲,根據不一樣數據的特色對它們進行處理,並分紅不一樣區爲用戶推送推薦:

  • 今日推薦 (Today's Recommendation For You): 一般是根據用戶的近期的歷史購買或者查看記錄,並結合時下流行的物品給出一個折中的推薦。
  • 新產品的推薦 (New For You): 採用了基於內容的推薦機制 (Content-based Recommendation),將一些新到物品推薦給用戶。在方法選擇上因爲新物品沒有大量的用戶喜愛信息,因此基於內容的推薦能很好的解決這個「冷啓動」的問題。
  • 捆綁銷售 (Frequently Bought Together): 採用數據挖掘技術對用戶的購買行爲進行分析,找到常常被一塊兒或同一我的購買的物品集,進行捆綁銷售,這是一種典型的基於項目的協同過濾推薦機制。
  • 別人購買 / 瀏覽的商品 (Customers Who Bought/See This Item Also Bought/See): 這也是一個典型的基於項目的協同過濾推薦的應用,經過社會化機制用戶能更快更方便的找到本身感興趣的物品。

六、推薦系統架構

相關文章
相關標籤/搜索