矩陣分解在協同過濾推薦演算法中的應用和理解

2021-09-27 11:34:44 字數 747 閱讀 3754

協同過濾所要達到的目的是將整個user-item矩陣中空白的位置來**出值,矩陣分解可以滿足這一要求,將原矩陣分解成兩個或者三個子矩陣,然後再相乘得到乙個新的矩陣,這個新的矩陣就是最終 要**的矩陣(個人理解)

svd分解要求矩陣是稠密的,而在user-item矩陣中往往比較稀疏,所以不太適用
funksvd是在傳統svd面臨計算效率問題時提出來的,既然將乙個矩陣做svd分解成3個矩陣很耗時,同時還面臨稀疏的問題,那麼我們能不能避開稀疏問題,同時只分解成兩個矩陣呢?也就是說,現在期望我們的矩陣m這樣進行分解:

mm×n=ptm×k * qk×n

我們知道svd分解已經很成熟了,但是funksvd如何將矩陣m分解為p和q呢?這裡採用了線性回歸的思想。我們的目標是讓使用者的評分和用矩陣乘積得到的評分殘差盡可能的小,也就是說,可以用均方差作為損失函式,來尋找最終的p和q。

對於某乙個使用者評分mij,如果用funksvd進行矩陣分解,則對應的表示為qtjpi,採用均方差做為損失函式,則我們期望(mij−qtjpi)2盡可能的小,如果考慮所有的物品和樣本的組合,則我們期望最小化下式:

∑i,j(mij−qtjpi)2

只要我們能夠最小化上面的式子,並求出極值所對應的pi,**,則我們最終可以得到矩陣p和q,那麼對於任意矩陣m任意乙個空白評分的位置,我們可以通過qtjpi計算**評分。很漂亮的方法! 接下來就求偏導,求出兩個向量。

svd++進一步做了增強,這裡它增加考慮使用者的隱式反饋。乙個使用者對物品的評分=顯示打分+隱式反饋。

矩陣分解在協同過濾推薦演算法中的應用

在推薦系統中,我們常常遇到的問題是這樣的,我們有很多使用者和物品,也有少部分使用者對少部分物品的評分,我們希望 目標使用者對其他未評分物品的評分,進而將評分高的物品推薦給目標使用者。比如下面的使用者物品評分表 使用者 物品 物品1物品2 物品3物品4 物品5物品6 物品7使用者135 1使用者224...

協同過濾推薦演算法 協同過濾推薦演算法總結

推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...

協同過濾與矩陣分解

生成共現矩陣。假設有m個使用者,n個物品,每個使用者會對n個物品中的乙個或者幾個進行評分,未評分的物品分值就用問號表示,則所有m個使用者對物品的評分可形成乙個m n m nm n的評分矩陣,也就是協同過濾中的共現矩陣。生成共現矩陣後,推薦問題就轉換成了 矩陣中問號的值的過程。利用使用者相似度和相似使...