基於矩陣分解的推薦系統

2022-08-24 20:33:07 字數 1322 閱讀 4678

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

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

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

這時需要對矩陣進行規範化處理(將資料按比例縮放,使之落入乙個小的特定區間),引入jaccard相似性係數:

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

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

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

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

lu = [ 0.3 0.6 1.6 ... ] --使用者取值

ru = [ 0.6 0.8 4.2 ... ] --商品取值

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

推薦系統例項 基於矩陣分解

使用matlab嘗試了隨機梯度下降的矩陣分解方法,實現了乙個比較簡單的推薦系統的原理。常用推薦系統的方法有協同過濾,基於物品內容過濾等等。這次是用的矩陣分解模型屬於協同過濾的一種方法,大致原理是通過一定數量的因子來描述各個使用者的喜好和各個物品的屬性。通過隨機梯度下降法分解後得到兩個矩陣,乙個是使用...

推薦系統演算法 基於矩陣分解的CF演算法

raditional svd 通常svd矩陣分解指的是svd 奇異值 分解技術,在這我們姑且將其命名為traditional svd 傳統並經典著 其公式如下 traditional svd分解的形式為3個矩陣相乘,中間矩陣為奇異值矩陣。如果想運用svd分解的話,有乙個前提是要求矩陣是稠密的,即矩陣...

推薦系統ALS矩陣分解

思想類似線性回歸做 大致如下 定義乙個 模型 數學公式 然後確定乙個損失函式,將已有資料作為訓練集,不斷迭代來最小化損失函式的值,最終確定引數,把引數套到 模型中做 矩陣分解的 模型是 損失函式是 我們就是要最小化損失函式,從而求得引數q和p。矩陣分解模型的物理意義 我們希望學習到乙個p代表user...