推薦系統文檔(持續更新)

推薦算法架構

  1. 召回階段(海選)
    召回決定了最終推薦結果的天花板
    常用算法:
    1. 協用過濾(基於用戶基於物品的)
    2. 基於內容(根據用戶行爲總結出自己的偏好,根據偏好通過文本挖掘技術,找到內容上相似的商品)
    3. 基於隱語義
  2. 排序階段
    召回決定了最終推薦結果的天花板,排序逼近這個極限,決定了最終的推薦效果
  3. 策略調整
    在這裏插入圖片描述

推薦模型構建流程

Data(數據)—>Features(特徵)—>ML Algorithm(機器學習算法)—>Prediction Output(預測輸出)

  • 數據
  1. 顯性數據
    Rating 打分
    Comments 評論/評價
  2. 隱形數據
    Order history歷史訂單
    Cart events加購物車
    Page views頁面瀏覽
    Click-thru 點擊
    Search log搜索記錄
  • 數據量/數據能否滿足要求
  • 特徵工程
  • 從數據中篩選特徵,一個給定的商品,可能被擁有類似品味或需求的用戶購買,使用用戶行爲數據描述商品
    在這裏插入圖片描述
  • 用數據表示特徵,將所有用戶行爲合併在一起,形成一個user-item矩陣
    在這裏插入圖片描述

協同過濾推薦算法(Collaborative Filtering)

算法思想:物以類聚,人以羣分
基本的協同過濾推薦算法基於以下假設

  1. 「跟你喜好相似的人喜歡的東西你也很有可能喜歡」:基於用戶的協同過濾推薦(User-based CF) CF就是collaborative filtering
  2. 「跟你喜歡的東西相似的東西你也很有可能喜歡」:基於物品的協同過濾推薦(Item-based CF)

實現協同過濾推薦有以下幾個步驟:

  1. 找出最相似的人或物品: TOP-N相似的人或物品
    通過計算兩兩的相似度來進行排序,即可找出TOP-N相似的人或物品
  2. 根據相似的人或物品產生推薦結果
    利用TOP-N結果生成初始推薦結果,然後過濾掉用戶已經有過記錄的物品或明確表示不感興趣的物品

以下是一個簡單的示例,數據集相當於一個用戶對物品的購買記錄表:打勾表示用戶對物品的有購買記錄
關於相似度計算這裏先用一個簡單的思想:如有兩個同學X和Y, X同學愛好[足球、籃球、乒乓球],Y同學愛好[網球、足球、籃球、羽毛球],可見他們的共同愛好有2個,那麼他們的相似度可以用: 2/3* 2/4= 1/3=0.33來表示。
在這裏插入圖片描述

傑卡德相似度&餘弦相似度&皮爾遜相關係數

餘弦相似度

  • 度量的是兩個向量之間的夾角,用夾角的餘弦值來度量相似的情況
  • 兩個向量的夾角爲0是,餘弦值爲1,當夾角爲90度是餘弦值爲0,爲180度是餘弦值爲-1
    餘弦相似度在度量文本相似度,用戶相似度物品相似度的時候較爲常用
  • 餘弦相似度的特點,與向量長度無關餘弦相似度計算要對向量長度歸一化,兩個向量只要方向一致,無論程度強弱,都可以視爲‘相似」
  • 餘弦相似度對絕對值大小不敏感帶來的問題,用戶A對兩部電影評分分別是1分和2分,用戶B對同樣這兩部電影進行評分是4分,5分用餘弦相似度計算,兩個用戶的相似度達到0.98

皮爾遜相關係數Pearson

  • 實際上也是一種餘弦相似度,不過先對向量做了**中心化,**向量a b各自減去向量的均值後,再計算餘弦相似度
  • 皮爾遜相似度計算結果在-1,1之間-1表示負相關, 1表示正相關
  • 度量兩個變量是不是同增同減
  • 皮爾遜相關係數度量的是兩個變量的變化趨勢是否一致, 不適合計算布爾值向量之間的相關度

傑卡德相似度Jaccard

  • 兩個集合的交集元素個數在並集中所佔的比例,非常適用於布爾向量表示
  • 分子是兩個布爾向量做點積計算,得到的就是交集元素的個數
  • 分母是兩個布爾向量做或運算,再求元素和
    在這裏插入圖片描述
    皮爾遜相關係數練習
    傑卡德相關係數練習