《推薦系統實踐》筆記

前言

在信息過載的今天,推薦系統顯得越來越重要。最近在公司開始做推薦系統的項目,也翻閱了一些資料。《推薦系統實踐》(作者項亮)一書雖然出版有些年頭了,但仍然是一本非常好的入門書,以下是閱讀時摘錄的筆記。

作者:項亮

出版日期:2012.06

  隨著信息技術和互聯網的發展,人們逐漸從信息匱乏的時代走入了信息過載的時代。在這個時代,無論是信息消費者還是信息生產者都遇到很大的挑戰;對於消費者,從大量信息中找到自己感興趣的信息是一件非常困難的事情;對於信息生產者,讓自己的信息脫穎而出,受到廣大用戶的關注,也是一件非常困難的事情。推薦系統就是解決這一矛盾的重要工具。推薦系統的任務就是聯繫用戶和信息,一方面幫助用戶發現對自己有價值的信息,另一方面讓信息能夠展現在對它感興趣的用戶面前,從而實現信息消費在和信息生產者的雙贏。

第1章 好的推薦系統

  • 1.1 什麼是推薦系統

    • 解決信息過載的三種方式:

      1. 分類目錄(雅虎)
      2. 搜索引擎(谷歌)
      3. 推薦系統

        搜索引擎需要用戶主動給出需求,推薦系統不需要用戶提供明確的需求,而是通過分析用戶的歷史行為給用戶的興趣建模,從而主動給用戶推薦能夠滿足他們興趣和需求的信息。但是推薦系統需要依賴用戶行為數據。

        從某種意義上說,推薦系統和搜索引擎對於用戶來說是兩個互補的工具。搜索引擎滿足了用戶有明確目的時的主動查找需求,而推薦系統能夠在用戶沒有明確目的的時候幫助他們發現感興趣的新內容。

    • 推薦系統可以更好的發掘商品的長尾

      • 傳統2/8理論收到挑戰。互聯網條件下,由於貨架成本極端低廉,電子商務網站往往能出售比傳統零售店更多種類的商品。與傳統零售業相比,電商的長尾商品數量極其龐大,這些長尾的總銷售額甚至能超過熱門商品。
      • 推薦系統通過發掘用戶的行為,找到用戶的個性化需求,從而將長尾商品準確地推薦給需要它的用戶,幫助用戶發現那些他們感興趣但很難發現的商品。
    • 推薦演算法的本質是通過一定的方式將用戶和物品聯繫起來,不同的推薦系統利用了不同的方式。
  • 1.2 個性化推薦系統的應用

    推薦系統由前台展示頁面、後台的日誌系統以及推薦演算法3部分構成 。

    • 電子商務
      • 主要應用有:
        1. 個性化商品推薦列表
        2. 相關商品推薦列表(cross selling)
    • 電影和視頻網站
    • 個性化音樂網路電台

      • 個性化推薦成功應用的兩個因素

        1. 存在信息過載
        2. 用戶大部分時候沒有明確需求

        個性化網路電台非常符合上訴兩項

      • 設計上給用戶一定形式的反饋(喜歡、不喜歡、跳過),經過用戶一定時間的反饋,電台就可以從用戶的歷史行為中習得用戶的興趣模型,從而使用戶的播放列表越來越符合用戶對歌曲的興趣。
      • Pandora 根據專家標註的音樂基因來計算歌曲相似度;Last.fm給用戶推薦和他有相似聽歌愛好的其他用戶喜歡的歌曲。
      • 音樂推薦的特點:物品空間大 / 物品重用率高 / 上下文相關(包括用戶當時的心情,比如沮喪的時候喜歡聽勵志的歌曲,和所處情境比如睡覺前喜歡聽輕音樂) / 次序比較重要 / 高度社會化 (分享自己喜歡的音樂)
    • 社交網路
      • 主要應用:
        1. 利用用戶的社交網路信息對用戶進行個性化的物品推薦
        2. 信息流的會話推薦(推薦評論、好友狀態等)
        3. 給用戶推薦好友
    • 個性化閱讀
      • 個性化閱讀同樣符合前面提出的需要個性化推薦的兩個因素:用戶面臨信息過載的問題;其次,用戶很多時候並沒有必須看某篇具體文章的需求。
      • 新聞類的閱讀要有很強的時效性
    • 基於位置的服務
    • 個性化郵件
    • 個性化廣告
      • 個性化廣告投放技術:
        1. 上下文廣告:通過分析用戶正在瀏覽的網頁內容,投放和網頁內容相關的廣告。代表系統是谷歌的Adsense。
        2. 搜索廣告:通過分析用戶在當前會話中的搜索記錄,判斷用戶的搜索目的,投放和用戶目的相關的廣告。
        3. 個性化展示廣告: 根據用戶的興趣標籤,對不同用戶投放不同的展示廣告.
  • 1.3 推薦系統評測

    一個完整的推薦系統一般存在3個參與方:用戶、網站、內容提供方。
    • 推薦系統實驗方法:
      1. 離線實驗
      2. 用戶調查
      3. 在線 A/B test
    • 評測指標:
      1. 用戶滿意度

          可以以問卷的形式;一般情況下用點擊率、用戶停留時間和轉化率等指標度量用戶的滿意度。
      2. 預測準確率
        • 評分預測: RMSE / MAE

          kdd.org/exploration_fil
        • TopN 推薦:準確率 、召回率, 準確率、召回率曲線
      3. 覆蓋率
        • 描述一個推薦系統對物品長尾的發掘能力。覆蓋率有不同的定義方法,最簡單的定義為推薦系統能夠推薦出來的物品佔總物品集合的比例。
        • 覆蓋率是一個內容提供商會關心的指標。
        • 覆蓋率的其它定義: P27

        • 參考資料

          microsoft.com/en-us/res
        • 推薦系統的馬太效應

            推薦系統的初衷是希望消除馬太效應,使得各種物品都能被展示給對它們感興趣的某一類人群。可以使用基尼係數來判斷是否有明顯的馬太效應。
      4. 多樣性

          為了滿足用戶廣泛的興趣,推薦列表需要能夠覆蓋用戶不同的興趣領域。多樣性描述了推薦列表中物品兩兩之間的不相似性。
      5. 新穎性

        mtg.upf.edu/static/medi

      6. 驚喜度
      7. 信任度

          提高推薦系統信任度的方式有增加推薦系統的透明度(提供推薦的解釋);考慮用戶的社交網路信息,利用好友信息給用戶做推薦,並且用好友進行推薦解釋。
      8. 實時性
      9. 健壯性
        • 反作弊
      10. 商業指標:
      11. 總結
        • 指標總結

    • 評測維度

        在推薦系統評測報告中包含不同維度下的系統評測指標,能幫我們全面地了解推薦系統性能。
      • 用戶維度:主要包括用戶的人口統計學信息、活躍度以及是不是新用戶等。
      • 物品維度:包括物品的屬性信息、流行度、平均分以及是不是新加入的物品等。
      • 時間維度:包括季節,是工作日還是周末,是白天還是晚上等。

第2章 利用用戶行為數據

  • 2.1 用戶行為數據簡介
    • 用戶行為數據可分為顯性反饋行為和隱性反饋行為
    • 用戶數據的統一表示

  • 2.2 用戶行為分析

    在設計推薦演算法之前需要對用戶行為數據進行分析,了解數據中蘊含的一般規律可以對演算法的設計起到指導作用。
    • 用戶活躍度和物品流行度
      • 均近似符合長尾分布:

      • e.g. 物品流行度定義:對用戶產生過行為的總數

        e.g. 用戶活躍度定義:對物品產生過行為的總數
    • 活躍度和流行度的關係:

      一般新用戶傾向於瀏覽熱門的物品,因為他們對網站還不熟悉,只能點擊首頁的熱門物品,而老用戶會逐漸開始瀏覽冷門的物品。

    • 協同過濾演算法:僅基於用戶行為數據設計的演算法
      • 方法有基於領域的方法(最廣泛)、基於圖的隨機遊走演算法、隱語義演算法。
      • 基於領域的方法可分為基於用戶的協同過濾演算法和基於物品的協同過濾演算法。
  • 2.3 實驗設計和演算法評測

      P41
  • 2.4 基於鄰域的演算法
    • 基於用戶的協同過濾演算法
      • 基礎演算法
        1. 找到和目標用戶興趣相似的用戶集合
          • 量化相似: Jaccard 相似度 / 餘弦相似度 / 歐式距離
        2. 找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶
        3. 參考指標
          • 準確率 / 召回率
          • 覆蓋度
          • 流行度
      • 用戶相似度計算的改進
        • 兩個用戶冷門物品採取過同樣的行為更能說明他們興趣的相似度:用物品熱門度進行懲罰
      • UserCF缺點
        • 計算量大;運算時間複雜度和空間複雜度的增長和用戶數的增長近似於平方關係
    • 基於物品的協同過濾演算法
      • 基礎演算法
        • 與基於用戶的協同過濾演算法相似
        • 也需考慮對商品的熱門度進行懲罰
      • 用戶活躍度對物品相似度的影響
        • 活躍用戶對物品相似度的貢獻應該小於不活躍的用戶
      • 物品相似度的歸一化
    • UserCF 與 ItemCF 的綜合比較

       UserCF的推薦結果著重於反映和用戶興趣相似的小群體的熱點,而ItemCF的推薦結果著重於維繫用戶的歷史興趣。換句話說,UserCF的推薦更社會化,反映了用戶所在的小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反映了用戶自己的興趣傳承。
        • 考慮實際業務需求與場景
  • 2.5 隱語義模型
    • 基礎演算法(LFM)

      核心思想是通過隱藏特徵(latent factor)聯繫用戶興趣和物品
      • 損失函數

        • 可用隨機梯度下降法求解
      • 重要參數:
        • 隱特徵個數 / 學習速率 / 正則化係數 / 負正樣本比例
        • LFM的關鍵之一:如何生成負樣本
          • 對於一個用戶,從他沒有過行為的物品中採樣出一些物品作為負樣本,使得正負樣本數相等
          • 採樣負樣本時,要選取那些很熱門,而用戶卻沒有行為的物品。
    • LFM和基於領域的方法的比較
      • 理論基礎

        LFM通過優化一個指標來建立最佳模型;基於領域的方法更多是基於一種統計的方法。
      • 離線計算的空間複雜度

        LFM:O(MF + FN)

        UserCF: O(MM)

        ItemCF: O(N
        N)
      • 離線計算的時間複雜度

        LFM: O(KFS)

        UserCF: O(M(K/M)^2)

        ItemCF: O(N
        (K/N)^2)
      • 在線實時推薦

        LFM實現在線實時推薦難度較高
      • 推薦解釋

        ItemCF有較好的解釋性,LFM較難解釋
  • 2.6 基於圖的模型

第3章 推薦系統冷啟動問題

  • 3.1 冷啟動問題簡介
    • 問題分類
      • 用戶冷啟動
      • 物品冷啟動
      • 系統冷啟動
    • 常用解決方案
      • 利用熱銷榜進行推薦
      • 利用用戶註冊時的年齡、性別等數據做粗粒度的個性化
      • 利用用戶社交數據為其推薦好友喜歡的物品
      • 要求用戶在登錄時對一些物品進行反饋,收集用戶對這些物品的興趣信息並推薦相似產品
      • 對於新加入的物品,可以利用內容信息,將它們推薦給喜歡過和它們相似的物品的用戶
      • 在系統冷啟動時,可以引入專家的知識,通過一定的高效方式迅速建立起物品的相關度表
  • 3.2 利用用戶註冊信息
    • 基於用戶註冊信息的推薦演算法其核心問題是計算每種特徵的用戶喜歡的物品。(P82)
  • 3.3 選擇合適的物品啟動用戶的興趣
    • 物品需要具備的特點
      • 比較熱門:讓用戶對一個物品進行反饋,前提是用戶知道這個物品是什麼
      • 具有代表性和區分性: 可以區分用戶個性化興趣
      • 啟動物品集合需要有多樣性:用戶興趣的可能性非常多,需要提供具有很高覆蓋率的啟動物品集合
    • 利用決策樹選擇啟動物品集合:P87
  • 3.4 利用物品的內容信息
    • 通過物品內容(文本)計算物品相似性,基於內容的過濾演算法

第4章 利用用戶標籤數據

  標籤應用一種是讓作者或專家給物品打標籤;另一種是讓普通用戶給物品打標籤(UGC)。當一個用戶對一個物品打上標籤,這個標籤一方面描述了用戶的興趣,另一方面則表示了物品的語義,從而將用戶和物品聯繫了起來。

  • 4.1 UGC標籤系統的代表應用
    • Delicious / CiteLike / 豆瓣 / Hulu
  • 4.2 標籤系統中的推薦問題

      主要問題有:1. 如何利用用戶打標籤的行為為其推薦物品(基於標籤的推薦)2. 如何在用戶給物品打標籤時為其推薦適合該物品的標籤(標籤推薦)
    • 用戶為什麼進行標註
      • 分享,發表觀點
      • 標準,用於檢索
    • 用戶如何打標籤
    • 用戶打什麼樣的標籤
  • 4.3 基於標籤的推薦系統
    • 演算法的改進
      • TF-IDF思路對熱門標籤進行懲罰
      • 數據稀疏性:常用話題模型進行標籤拓展
      • 標籤清理
    • 基於標籤的推薦解釋
      • 標籤云:提高推薦結果多樣性;提供解釋功能
  • 4.4 給用戶推薦標籤
    • 作用
      • 方便用戶輸入標籤
      • 提高標籤質量
    • 方法
      • 推薦物品上最熱門的標籤
      • 推薦用戶常使用的標籤
      • 將前兩項進行加權融合

第5章 利用上下文信息

  準確了解用戶的上下文信息(包括時間、地點、心情等),對於提升推薦效果有重要作用。

  • 5.1 時間上下文信息
    • 時間效應
      • 用戶的興趣是變化的
      • 物品也有生命周期
      • 季節效應
    • 系統時間特性的分析
      • 數據集每天獨立用戶數的增長情況
      • 系統物品的變化情況
        • e.g. 物品平均在線天數
        • e.g. 相隔T天系統物品流行度向量的平均相似度
      • 用戶訪問情況
    • 推薦系統的實時性
      • 推薦演算法需要平衡考慮用戶的近期行為和長期行為(即要讓推薦列表反應出用戶近期行為所體現的興趣變化,又不能讓推薦列表完全受用戶近期行為的影響)
    • 推薦演算法的時間多樣性
      • 推薦系統每天推薦結果的變化程度被定義為推薦系統的時間多樣性。時間多樣性高的推薦系統中用戶會經常看到不同的推薦結果(首先保證推薦的精度,在此基礎上適當地考慮時間多樣性)
  • 5.2 地點上下文信息

第6章 利用社交網路數據

  • 6.1 獲取社交網路數據的途徑
    • 電子郵件 / 用戶註冊信息 / 用戶的位置數據 / 論壇和討論組 / 即時聊天工具 / 社交網站
    • 社會圖譜(Facebook)和興趣圖譜(Twitter)

第7章 推薦系統實例

  • 7.1 外圍架構

  • 7.2 推薦系統架構
    • 推薦系統聯繫用戶和物品的主要方式

    • 基於特徵的推薦系統架構
      • 用戶喜歡的物品、用戶相似的用戶也可以抽象成特徵
      • 基於特徵的推薦系統核心任務就被拆解成兩部分,一個是如何為給定用戶生成特徵,另一個是如何根據特徵找到物品
    • 用戶特徵種類
      • 屬性特徵
      • 行為特徵
      • 話題特徵:可應用主題模型生成
    • 推薦系統架構構成

      • 推薦系統可由多個推薦引擎組成,每個推薦引擎負責一類特徵或一種任務,而推薦系統的任務只是將推薦引擎的結果按照一定權重或者優先順序進行合併、排序然後返回
        • 方便增/刪引擎,控制不同引擎對推薦結果的影響
        • 可對不同的用戶給出不同的引擎組合權重
  • 7.3 推薦引擎架構

    • 用戶特徵向量生成模塊

       特徵向量由特徵和特徵權重組成,計算時需要考慮:
      • 用戶行為的總類:一般標準就是用戶付出代價越大的行為權重越高。
      • 用戶行為產生的時間
      • 用戶行為次數
      • 物品的熱門程度:冷門物品權重較高(用戶對很熱門的物品產生的行為往往不能代表用戶個性,因為用戶可能是在跟風)
    • 特徵 — 物品相關推薦模塊

      • 可以用不同方式計算多張相關表,然後在配置表中配置表與權重,最終應用時加權組合。
    • 過濾模塊
      • 用戶已經產生過行為物品
      • 候選物品以外的物品
        • 由於業務需求或者用戶自己限定
      • 低質量/評論物品
    • 排名模塊
      • 新穎性排名
      • 多樣性排名
      • 時間多樣性
      • 用戶反饋:通過分析用戶之前和推薦結果的交互日誌,預測用戶會對什麼樣的推薦結果比較感興趣(點擊預測模型)

書摘:《推薦系統實踐》 作者 項亮

若轉載請註明出處與鏈接,謝謝~

推薦閱讀:

推薦系統中基於深度學習的混合協同過濾模型
為什麼豆瓣的評價只有5顆星呢?而不是類似Mtime電影的10顆星呢?
有哪些關於推薦系統的前沿資料或者文獻值得推薦?
深度強化學習如何和推薦系統結合起來?
計算廣告與推薦系統有哪些區別?

TAG:推荐系统 | 机器学习 | 个性化推荐 |