基於矩陣分解的推薦系統


簡介

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

推薦方式

  • 根據流行程度

    **優點**:能夠給使用者推薦一些東西,了解到最新流行動向。
    
    **缺點**:沒有代表性,因為這僅僅是該平台的數據集合。推薦的並不符合個性化的需求。
    
  • 根據個人特征

    通過用戶信息和商品特征給出推薦。但這往往也有很多問題:用戶信息不完善,商品信息不全,給分類的方式帶來很大不確定性。
    

  • 根據協同過濾

    這也是今天的主角。首先說說什么是協同過濾:**通過其他人的個人特征,商品的特征,用戶和商品的一般化關聯關系給用戶推薦相應的產品。**舉個例子:比如你買了一個手機,那么該平台看看和你相似買了手機的用戶都會買哪些東西,然后給你進行推薦。
    

實現步驟

step 1:

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


問題:一個人可能會購買多件商品這樣會產生計算誤差。

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


step 2:

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

最后將加權平均分排序后,即可按排序進行推薦。


step 3:

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

解決方案: 首先拿已經評價過的商品和用戶對應構成如下矩陣(列為商品,橫為用戶),黑塊是已經進行評價的,而白塊是評價過的,那么將白塊變成黑塊便是我們下面要做的。

為了計算白塊,我們為商品和用戶建立向量。而向量里有一系列關於商品和用戶特征取值。如一用戶喜歡計算機那么他的計算機屬性值就較高。而每個商品也具有計算機的屬性值並賦值。

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

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

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

用戶喜歡的商品並且被展示出來的商品 / 喜歡的商品

用戶喜歡的商品並且被展示出來的商品 / 被展示出來的商品

不同模型得到的不同函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM