日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性代数笔记:概率矩阵分解 Probabilistic Matrix Factorization (PMF)

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性代数笔记:概率矩阵分解 Probabilistic Matrix Factorization (PMF) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概率矩陣分解模型可以解決大規模、稀疏且不平衡的數據。

1 PMF的兩點假設

1.1.觀測噪聲(觀測評分矩陣和近似評分矩陣之差)服從高斯噪聲的正態分布

????????觀測評分矩陣是ground truth的矩陣,我們記為R;近似評分矩陣是通過矩陣分解的方法求得的矩陣

  • ? ? ? ? 由這一條假設我們知道,R與?之間的差距服從零均值的高斯分布,也即:

?????????

  • ? ? ? ? 將?移到右邊去,有:

????????·

  • ? ? ? ? ?而在矩陣分解問題里面,觀測評分矩陣可以表示為用戶潛在特征矩陣P和物品潛在特征矩陣Q的乘積形式,即:

????????????????

  • ? ? ? ? ?將上面兩條合并,有:

??????????

?于是觀測評分矩陣對于特征矩陣P、Q,誤差σ的條件概率為

?其中:

N用戶數
M物品數
P用戶潛在特征矩陣
Q物品潛在特征矩陣
R?觀測評分矩陣(ground truth的矩陣)
誤差項
指示函數,表示如果用戶u對物品i有過評分,則其值為1,否則為0

相當于對每一項(u-ζ?),我們都去計算相應的條件概率,然后求和

1.2.用戶潛在特征矩陣P和物品潛在特征矩陣Q服從一個均值為0的高斯先驗

????????????????????????????????

?????????????????????????????????

2?用戶和物品的特征矩陣的后驗分布

由貝葉斯公式可知用戶和物品的特征矩陣的后驗分布如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

因為?不會影響P,Q的后驗估計,所以:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

對等式兩遍同時取ln

?

?復習一下多元高斯分布的概率分布函數:

?于是

?取完ln之后,有:

?同理,有:

?代入

有:?

?最大化上式log的后驗概率,等價于最小化如下的目標函數J(p,q):

?其中?,這就是我們熟悉的最小化平方差和正則化項之和的形式

(這里的Fro是Frobenius 范數,見線性代數筆記:Frobenius 范數_UQI-LIUWJ的博客-CSDN博客)

?轉換成矩陣的形式有:

3 優化目標函數?

我們這里采用SGD來進行優化。直到收斂或達到最大迭代次數。

3.1?求解損失函數的負梯度

3.2 根據負梯度變化更新變量

?4 PMF優化小trick

????????由于原來的線性高斯模型做預測時,會產生有效評分范圍之外的評分值。因此可以使用一個logistic 函數來代替原來的簡單的線性高斯模型,使得預測評分值在有效范圍內。

????????

? ? ? ? 因此可以將評分矩陣的條件概率修改如下

?????????原始評分x∈[1,K]可以通過logistic函數映射到[0,1]區間,然后再去計算

5 Constrained PMF

????????PMF被擬合后,用戶的特征會趨于先驗的均值,因而評分也會接近物品的平均評分。Constrained PMF就是對此進行約束

? ? ? ? 我們引入矩陣 ,其中W表示一個潛在的相似性約束矩陣,Y表示用戶潛在特征的一個補償矩陣(先驗分布均值之上,屬于各個用戶的偏移量)

? ? ? ? 于是每個用戶對應的特征向量為:

????????

? ? ? ? 這里I還是指示矩陣(P的每一列還是用戶的特征)

?于是條件分布為:

同樣根據PMF,此時的目標函數為

?

?

5.1 愛因斯坦乘積實現constrain

?

這一部分怎么實現,我想了一段時間

?我們先定義幾個數據:

import torchY=torch.arange(12).reshape(3,4) ''' tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]]) ''' W=torch.arange(6).reshape(3,2) ''' tensor([[0, 1],[2, 3],[4, 5]]) ''' i=torch.arange(8).reshape(4,2) ''' tensor([[0, 1],[2, 3],[4, 5],[6, 7]]) '''

根據要求,Yi表示Y的第i列,Yi受到以下部分的影響第二個式子的分布是I第i列的和,我們記為sum(I,i)

對于Y的每一個元素:

結合python 筆記:愛因斯坦求和 einsum_UQI-LIUWJ的博客-CSDN博客的知識,我們可以用如下形式表示之

np.einsum('bc,ac->ab',i,W)/torch.sum(i,axis=1) ''' tensor([[1.0000, 0.6000, 0.5556, 0.5385],[3.0000, 2.6000, 2.5556, 2.5385],[5.0000, 4.6000, 4.5556, 4.5385]], dtype=torch.float64) '''

與之對比,我們就最暴力的方法來計算這個,結果是一樣的:

a0=(W[:,1]*i[0,1]+W[:,0]*i[0,0])/(0+1) a1=(W[:,1]*i[1,1]+W[:,0]*i[1,0])/(2+3) a2=(W[:,1]*i[2,1]+W[:,0]*i[2,0])/(4+5) a3=(W[:,1]*i[3,1]+W[:,0]*i[3,0])/(6+7) torch.cat((a0.reshape(3,1),a1.reshape(3,1),a2.reshape(3,1),a3.reshape(3,1)),1 ''' tensor([[1.0000, 0.6000, 0.5556, 0.5385],[3.0000, 2.6000, 2.5556, 2.5385],[5.0000, 4.6000, 4.5556, 4.5385]]) '''

總結

以上是生活随笔為你收集整理的线性代数笔记:概率矩阵分解 Probabilistic Matrix Factorization (PMF)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。