多是推薦系統最詳細且簡單的入門教程

本文將深刻介紹推薦系統的工做原理,和其中涉及的各類推薦機制,以及它們各自的優缺點和適用場景,幫助用戶清楚的瞭解和快速構建適合本身的推薦系統。算法

1 信息發現

隨着 Web 2.0 的發展, Web 已經變成數據分享的平臺,如何讓人們在海量的數據中想要找到他們須要的信息將變得愈來愈難。網絡

在這樣的情形下,搜索系統(Google,Bing,百度等等)成爲你們快速找到目標信息的最好途徑。
在用戶對本身需求相對明確的時候,用搜索系統很方便的經過關鍵字搜索很快的找到本身須要的信息。但搜索系統並不能徹底知足用戶對信息發現的需求,那是由於在不少狀況下,用戶其實並不明確本身的須要,或者他們的需求很難用簡單的關鍵字來表述。又或者他們須要更加符合他們我的口味和喜愛的結果,所以出現了推薦系統,與搜索系統對應,你們也習慣稱它爲推薦系統。dom

隨着推薦系統的出現,用戶獲取信息的方式從簡單的目標明確的數據的搜索轉換到更高級更符合人們使用習慣的信息發現。機器學習

現在,隨着推薦技術的不斷髮展,推薦系統已經在電子商務 (E-commerce,例如 Amazon,噹噹 ) 和一些基於 social 的社會化站點 ( 包括音樂,電影和圖書分享,例如豆瓣 ) 都取得很大的成功。
這也進一步的說明了,Web2.0 環境下,在面對海量的數據,用戶須要這種更加智能的,更加了解他們需求,口味和喜愛的信息發現機制。ide

2 推薦系統

推薦系統利用特殊的信息過濾技術,將不一樣的物品或內容推薦給可能對它們感興趣的用戶。學習

RC工做原理圖
這裏將推薦系統看做黑盒,輸入是推薦的數據源,通常推薦系統所需數據源包括測試

  • 要推薦物品或內容的元數據
    例如關鍵字,基因描述等網站

  • 系統用戶的基本信息
    例如性別,年齡等編碼

  • 用戶對物品或者信息的偏好
    根據應用自己的不一樣,可能包括用戶對物品的評分,用戶查看物品的記錄,用戶的購買記錄等
    用戶的偏好信息能夠分爲兩類設計

    • 顯式的用戶反饋
      用戶在網站上天然瀏覽或者使用網站之外,顯式的提供反饋信息
      例如用戶對物品的評分,或者對物品的評論
      顯式的用戶反饋能準確的反應用戶對物品的真實喜愛,但須要用戶付出額外的代價
    • 隱式的用戶反饋
      用戶在使用網站時產生的數據,隱式的反應了用戶對物品的喜愛
      例如用戶購買了某物品,用戶查看了某物品的信息等
      隱式的用戶反饋,經過一些分析和處理,也能反映用戶的喜愛,只是數據不是很精確,有些行爲的分析存在較大的噪音,但只要選擇正確的行爲特徵,隱式的用戶反饋也能獲得很好的效果,只是行爲特徵的選擇可能在不一樣的應用中有很大的不一樣,例如在電子商務的網站上,購買行爲其實就是一個能很好表現用戶喜愛的隱式反饋。

推薦系統根據不一樣的推薦機制可能用到數據源中的一部分,而後根據這些數據,分析出必定的規則或者直接對用戶對其餘物品的喜愛進行預測計算
這樣推薦系統能夠在用戶進入的時候給他推薦他可能感興趣的物品。

3 分類

能夠根據不少指標

3.1 是否爲不一樣用戶推薦不一樣數據

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

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

3.2 數據源

這裏講的是如何發現數據的相關性
大部分推薦系統的工做原理是基於物品或者用戶的類似集進行推薦
那麼參考前面 給出的推薦系統工做原理圖,根據不一樣的數據源發現數據相關性的方法能夠分爲如下幾種:

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

3.3 推薦模型的創建方式

在海量物品和用戶的系統中,推薦系統的計算量是至關大的,要實現實時的推薦務必須要創建一個推薦模型,關於推薦模型的創建方式能夠分爲

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

其實在如今的推薦系統中,不多有隻使用了一個推薦策略的推薦系統,通常都是在不一樣的場景下使用不一樣的推薦策略從而達到最好的推薦效果
例如 Amazon 的推薦,它將基於用戶自己歷史購買數據的推薦,和基於用戶當前瀏覽的物品的推薦,以及基於大衆喜愛的當下比較流行的物品都在不一樣的區域推薦給用戶,讓用戶能夠從全方位的推薦中找到本身真正感興趣的物品。

4 深刻推薦機制

4.1 基於基於人口統計學的推薦(Demographic-based Recommendation)

最易於實現的推薦方法,簡單的根據系統用戶的基本信息發現用戶的相關程度,而後將類似用戶喜好的其餘物品推薦給當前用戶

基於人口統計學的工做原理

首先,系統對每一個用戶都有一個用戶 Profile的建模,其中包括用戶的基本信息,例如用戶的年齡,性別等
而後,系統會根據用戶的 Profile 計算用戶的類似度,能夠看到用戶 A 的 Profile和用戶 C 同樣,那麼系統會認爲用戶 A 和 C 是類似用戶,在推薦系統中,能夠稱他們是「鄰居」
最後,基於「鄰居」用戶羣的喜愛推薦給當前用戶一些物品,圖中將用戶 A 喜歡的物品 A 推薦給用戶 C

4.1.1 優勢

  • 不使用當前用戶對物品的喜愛歷史數據
    對於新用戶來說沒有「冷啓動(Cold Start)」問題

  • 不依賴於物品自己的數據
    這個方法在不一樣物品的領域均可以使用,它是領域獨立的(domain-independent)

4.1.2 缺點

  • 對用戶進行分類的方法過於粗糙,尤爲是對品味要求較高的領域,好比圖書,電影和音樂等領域,沒法獲得很好的推薦效果。可能在一些電子商務的網站中,這個方法能夠給出一些簡單的推薦

  • 這個方法可能涉及到一些與信息發現問題自己無關卻比較敏感的信息,好比用戶的年齡等,這些用戶信息不是很好獲取。

4.2 基於內容的推薦

基於內容的推薦是在推薦系統出現之初應用最爲普遍的推薦機制

  • 核心思想
    根據推薦物品或內容的元數據,發現物品或者內容的相關性,而後基於用戶以往的喜愛記錄,推薦給用戶類似的物品

基於內容推薦機制的基本原理

4.2.1 典型案例 : 電影推薦系統

  • 首先咱們須要對電影的元數據有一個建模,這裏只簡單的描述了一下電影的類型

  • 而後經過電影的元數據發現電影間的類似度,由於類型都是「愛情,浪漫」電影 A 和 C 被認爲是類似的電影(要獲得更好的推薦,還能夠考慮電影的導演,演員等等)

  • 最後實現推薦,對於用戶 A,他喜歡看電影 A,那麼系統就能夠給他推薦相似的電影 C

4.2.2 好處

能很好的建模用戶的口味,提供更加精確的推薦

4.2.3 問題

  • 須要對物品進行分析和建模,推薦的質量依賴於對物品模型的完整和全面程度
    在如今的應用中咱們能夠觀察到關鍵詞和標籤(Tag)被認爲是描述物品元數據的一種簡單有效的方法

  • 物品類似度分析僅依賴於物品自己的特徵
    這裏沒有考慮人對物品的態度

  • 須要基於用戶以往的喜愛歷史作出推薦
    對於新用戶有「冷啓動」問題

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

4.3 基於協同過濾的推薦

隨着 Web 的發展,Web 站點更加提倡用戶參與和用戶貢獻,所以基於協同過濾的推薦機制因運而生。

根據用戶對物品或者信息的偏好,發現物品或者內容自己的相關性,或者是發現用戶的相關性,而後再基於這些關聯性進行推薦

基於協同過濾的推薦能夠分類以下

4.3.1 基於用戶的協同過濾推薦(User-based Recommendation)

經過分析用戶興趣,在用戶羣中找到指定用戶的類似用戶,綜合這些類似用戶對某一信息的評價,造成系統關於該指定用戶對此信息的喜愛程度預測。

根據全部用戶對物品或者信息的偏好,發現與當前用戶口味和偏好類似的「鄰居」用戶羣,在通常的應用中是採用計算「K- means」算法;
而後,基於這 K 個鄰居的歷史偏好信息,爲當前用戶進行推薦
基於用戶的協同過濾的基本原理
假設:
用戶 A 喜歡物品 A, C
用戶 B 喜歡物品 B
用戶 C 喜歡物品 A , C , D

從這些用戶的歷史喜愛信息中,咱們能夠發現:
用戶 A , C 的口味和偏好是比較相似的;
同時用戶 C 還喜歡物品 D;
那麼咱們能夠推斷用戶 A 可能也喜歡物品 D,所以能夠將物品 D 推薦給用戶 A

和基於人口統計學的推薦機制都是計算用戶的類似度,並基於「鄰居」用戶羣計算推薦,但它們所不一樣的是如何計算用戶的類似度

  • 基於人口統計學的機制
    只考慮用戶自己的特徵
  • 基於用戶的協同過濾機制
    可在用戶的歷史偏好的數據上計算用戶的類似度,它的基本假設是,喜歡相似物品的用戶可能有相同或者類似的口味和偏好。

4.3.2 基於項目的協同過濾推薦(Item-based Recommendation)

使用全部用戶對物品或者信息的偏好,發現物品和物品之間的類似度,而後根據用戶的歷史偏好信息,將相似的物品推薦給用戶

假設:
用戶 A 喜歡物品 A , C
用戶 B 喜歡物品 A,B , C
用戶 C 喜歡物品 A

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

和基於內容的推薦其實都是基於物品類似度預測推薦,只是類似度計算的方法不同

4.3.2.1 基於用戶 VS 基於項目

其實基於項目的協同過濾推薦機制是 Amazon 在基於用戶的機制上改良的一種策略。
由於在大部分的 Web 站點中,物品的個數是遠遠小於用戶的數量的,並且物品的個數和類似度相對比較穩定,同時基於項目的機制比基於用戶的實時性更好一些

但也不是全部的場景都是這樣的狀況,能夠設想一下在一些新聞推薦系統中,也許物品,也就是新聞的個數可能大於用戶的個數,並且新聞的更新程度也有很快,因此它的類似度依然不穩定。

因此推薦策略的選擇其實和具體的應用場景有很大的關係。

4.3.3 基於模型的協同過濾推薦(Model-based Recommendation)

基於樣本的用戶喜愛信息,訓練一個推薦模型,而後根據實時的用戶喜愛的信息進行預測,計算推薦。

現今應用最普遍的推薦機制

4.3.3.1 優勢

  • 不須要對 物品/用戶 進行嚴格的建模,不要求物品的描述是機器可理解的,因此該方法也是領域無關的
  • 計算出來的推薦是開放的,能夠共享他人的經驗,很好的支持用戶發現潛在的興趣

4.3.3.2 問題

  • 核心是基於歷史數據,因此對新物品和新用戶都有「冷啓動」的問題
  • 推薦效果依賴於用戶歷史偏好數據的多少和準確性
  • 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準確度有很大的影響等等。
  • 對於一些特殊品味的用戶不能給予很好的推薦。
  • 因爲以歷史數據爲基礎,抓取和建模用戶的偏好後,很難修改或者根據用戶的使用演變,從而致使這個方法不夠靈活。

4.4 混合的推薦機制

在現行的 Web 站點上的推薦每每都不是單純只採用了某一種推薦的機制和策略,每每是將多個方法混合在一塊兒,從而達到更好的推薦效果

加權的混合(Weighted Hybridization):

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

切換的混合(Switching Hybridization)

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

分區的混合(Mixed Hybridization)

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

分層的混合(Meta-Level Hybridization)

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

5 應用

介紹完推薦系統的基本原理,基本推薦機制,下面簡要分析幾個有表明性的推薦系統的應用,這裏選擇兩個領域:Amazon 做爲電子商務的表明,豆瓣做爲社交網絡的表明。

推薦在電子商務中的應用 – Amazon
Amazon 做爲推薦系統的鼻祖,已經將推薦的思想***在應用的各個角落
Amazon 推薦的核心是經過數據挖掘算法和比較用戶的消費偏好於其餘用戶進行對比,藉以預測用戶可能感興趣的商品。對應於上面介紹的各類推薦機制,Amazon 採用的是分區的混合的機制,並將不一樣的推薦結果分不一樣的區顯示給用戶
首頁
瀏覽物品
Amazon 利用能夠記錄的全部用戶在站點上的行爲,根據不一樣數據的特色對它們進行處理,並分紅不一樣區爲用戶推送推薦:

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

值得一提的是,Amazon 在作推薦時,設計和用戶體驗也作得特別獨到:

Amazon 利用有它大量歷史數據的優點,量化推薦緣由。

  • 基於社會化的推薦,Amazon 會給你事實的數據,讓用戶信服,例如:購買此物品的用戶百分之多少也購買了那個物品;
  • 基於物品自己的推薦,Amazon 也會列出推薦的理由,例如:由於你的購物框中有 ***,或者由於你購買過 ***,因此給你推薦相似的 ***。

另外,Amazon 不少推薦是基於用戶的 profile 計算出來的,用戶的 profile 中記錄了用戶在 Amazon 上的行爲,包括看了那些物品,買了那些物品,收藏夾和 wish list 裏的物品等等,固然 Amazon 裏還集成了評分等其餘的用戶反饋的方式,它們都是 profile 的一部分,同時,Amazon 提供了讓用戶自主管理本身 profile 的功能,經過這種方式用戶能夠更明確的告訴推薦系統他的品味和意圖是什麼。

推薦在社交網站中的應用 – 豆瓣
豆瓣是國內作的比較成功的社交網站,它以圖書,電影,音樂和同城活動爲中心,造成一個多元化的社交網絡平臺,天然推薦的功能是必不可少的

當你在豆瓣電影中將一些你看過的或是感興趣的電影加入你看過和想看的列表裏,併爲它們作相應的評分,這時豆瓣的推薦系統已經拿到你的一些偏好信息,那麼它將給你展現如圖電影推薦。
基於用戶品味的推薦
豆瓣的推薦是經過「豆瓣猜」,爲了讓用戶清楚這些推薦是如何來的,豆瓣還給出了「豆瓣猜」的一個簡要的介紹。
*「你的我的推薦是根據你的收藏和評價自動得出的,每一個人的推薦清單都不一樣。你的收藏和評價越多,豆瓣給你的推薦會越準確和豐富。
天天推薦的內容可能會有變化。隨着豆瓣的長大,給你推薦的內容也會愈來愈準。*」

這一點讓咱們能夠清晰明瞭的知道,豆瓣必然是基於社會化的協同過濾的推薦,這樣用戶越多,用戶的反饋越多,那麼推薦的效果會愈來愈準確。

相對於 Amazon 的用戶行爲模型,豆瓣電影的模型更加簡單,就是「看過」和「想看」,這也讓他們的推薦更加專一於用戶的品味,畢竟買東西和看電影的動機仍是有很大不一樣的。

另外,豆瓣也有基於物品自己的推薦,當你查看一些電影的詳細信息的時候,他會給你推薦出「喜歡這個電影的人也喜歡的電影」, 如圖這是一個基於協同過濾的應用。

6 總結

如何讓用戶更快的找到想要的數據,如何讓用戶發現本身潛在的興趣和需求,不管是對於電子商務仍是社會網絡的應用都是相當重要的
推薦系統的出現,使得這個問題愈來愈被你們關注。但對大多數人來說,也許還在驚歎它爲何老是能猜到你到底想要些什麼。推薦系統的魔力在於你不清楚在這個推薦背後,系統到底記錄和推理了些什麼。

其實推薦系統只是默默的記錄和觀察你的一舉一動,而後再借由全部用戶產生的海量數據分析和發現其中的規律,進而慢慢的瞭解你,你的需求,你的習慣,並默默的無聲息的幫助你快速的解決你的問題,找到你想要的東西。

其實,回頭想一想,不少時候,推薦系統比你更瞭解你本身。

在現今的推薦技術和算法中,最被你們普遍承認和採用的就是基於協同過濾的推薦方法 它以其方法模型簡單,數據依賴性低,數據方便採集,推薦效果較優等多個優勢成爲大衆眼裏的推薦算法「No.1」

相關文章
相關標籤/搜索