推薦算法架構
- 召回階段(海選)
召回決定了最終推薦結果的天花板
常用算法:
- 協用過濾(基於用戶基於物品的)
- 基於內容(根據用戶行爲總結出自己的偏好,根據偏好通過文本挖掘技術,找到內容上相似的商品)
- 基於隱語義
- 排序階段
召回決定了最終推薦結果的天花板,排序逼近這個極限,決定了最終的推薦效果
- 策略調整
推薦模型構建流程
Data(數據)—>Features(特徵)—>ML Algorithm(機器學習算法)—>Prediction Output(預測輸出)
- 顯性數據
Rating 打分
Comments 評論/評價
- 隱形數據
Order history歷史訂單
Cart events加購物車
Page views頁面瀏覽
Click-thru 點擊
Search log搜索記錄
- 數據量/數據能否滿足要求
- 特徵工程
- 從數據中篩選特徵,一個給定的商品,可能被擁有類似品味或需求的用戶購買,使用用戶行爲數據描述商品
- 用數據表示特徵,將所有用戶行爲合併在一起,形成一個user-item矩陣
協同過濾推薦算法(Collaborative Filtering)
算法思想:物以類聚,人以羣分
基本的協同過濾推薦算法基於以下假設
- 「跟你喜好相似的人喜歡的東西你也很有可能喜歡」:基於用戶的協同過濾推薦(User-based CF) CF就是collaborative filtering
- 「跟你喜歡的東西相似的東西你也很有可能喜歡」:基於物品的協同過濾推薦(Item-based CF)
實現協同過濾推薦有以下幾個步驟:
- 找出最相似的人或物品: TOP-N相似的人或物品
通過計算兩兩的相似度來進行排序,即可找出TOP-N相似的人或物品
- 根據相似的人或物品產生推薦結果
利用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
- 兩個集合的交集元素個數在並集中所佔的比例,非常適用於布爾向量表示
- 分子是兩個布爾向量做點積計算,得到的就是交集元素的個數
- 分母是兩個布爾向量做或運算,再求元素和
皮爾遜相關係數練習
傑卡德相關係數練習