基於矩陣分解的推薦系統

簡介

推薦系統產生推薦列表的方式一般有兩種:協同過濾以及基於內容推薦,或者基於個性化推薦。協同過濾方法根據用戶歷史行爲(例如其購買的、選擇的、評價過的物品等)結合其餘用戶的類似決策創建模型。這種模型可用於預測用戶對哪些物品可能感興趣(或用戶對物品的感興趣程度)。基於內容推薦利用一些列有關物品的離散特徵,推薦出具備相似性質的類似物品。而本文使用協同過濾的方法來構建整個推薦系統。

推薦方式

  • 根據流行程度函數

    **優勢**:可以給使用者推薦一些東西,瞭解到最新流行動向。
    
    **缺點**:沒有表明性,由於這僅僅是該平臺的數據集合。推薦的並不符合個性化的需求。
  • 根據我的特徵3d

    經過用戶信息和商品特徵給出推薦。但這每每也有不少問題:用戶信息不完善,商品信息不全,給分類的方式帶來很大不肯定性。

  • 根據協同過濾code

    這也是今天的主角。首先說說什麼是協同過濾:**經過其餘人的我的特徵,商品的特徵,用戶和商品的通常化關聯關係給用戶推薦相應的產品。**舉個例子:好比你買了一個手機,那麼該平臺看看和你類似買了手機的用戶都會買哪些東西,而後給你進行推薦。

實現步驟

step 1:

須要根據用戶購買的東西和商品對應建一個矩陣:(列爲商品,橫爲用戶)blog


問題:一我的可能會購買多件商品這樣會產生計算偏差。排序

這時須要對矩陣進行規範化處理(將數據按比例縮放,使之落入一個小的特定區間),引入Jaccard類似性係數:產品


step 2:

將購物歷史加入其中,進行權重的計算。假如一名用戶買了牛奶和尿布,那麼他買溼巾的可能:
方法

最後將加權平均分排序後,便可按排序進行推薦。im


step 3:

現象:對一些產品來講,用戶可能喜歡,可是他用購買記錄沒辦法獲得推薦。數據

解決方案: 首先拿已經評價過的商品和用戶對應構成以下矩陣(列爲商品,橫爲用戶),黑塊是已經進行評價的,而白塊是評價過的,那麼將白塊變成黑塊即是咱們下面要作的。規範化

爲了計算白塊,咱們爲商品和用戶創建向量。而向量裏有一系列關於商品和用戶特徵取值。如一用戶喜歡計算機那麼他的計算機屬性值就較高。而每一個商品也具備計算機的屬性值並賦值。

Lu = [ 0.3 0.6 1.6 ... ] --用戶取值
Ru = [ 0.6 0.8 4.2 ... ] --商品取值

再對Lu和Ru取點乘,便能取得用戶和商品的相關性。以這樣的思路咱們便能創建起矩陣因子分解模型(L爲用戶集合,R爲商品的集合,集合的每項便爲特徵取值):

經過獲得模型與商品評價矩陣Rating進行殘差平方和來判斷模型的好壞。這種預測也僅僅是數據層面上的,下面介紹具體判斷模型好壞的參數:召回率和精準度。

用戶喜歡的商品而且被展現出來的商品 / 喜歡的商品

用戶喜歡的商品而且被展現出來的商品 / 被展現出來的商品

不一樣模型獲得的不一樣函數

相關文章
相關標籤/搜索