平衡矩陣 c 推薦基礎演算法之矩陣分解PMF

2021-10-11 18:26:29 字數 2014 閱讀 6686

大多數存在的協同過濾演算法不能處理以下兩種情況:

概率矩陣分解模型可以解決大規模、稀疏且不平衡的資料。這篇文章主要介紹兩個主要的概率矩陣模型pmf和cpmf。

概率矩陣分解是在regularized matrix factorization基礎上進一步進行的優化。pmf中主要基於兩點假設:

下面是pmf概率圖模型,注意到我們這裡用

1.由第一條假設我們可知,觀測評分矩陣r與近似評分矩陣

我們將上式通過平移得:

因此觀測到的評分矩陣條件概率為:

其中,n是使用者數,m為物品數,

是指示函式,表示如果使用者u對物品i有過評分,則其值為1,否則為0。

2.由第二條假設我們可知,使用者潛在特徵向量p和物品潛在特徵向量q也服從正態分佈,因此有下式:

其中是乙個k維的對角矩陣。

3.由貝葉斯公式可知使用者和物品的特徵矩陣的後驗分布如下:

即可得:

對等式兩遍同時取

,由於取

不會改變函式凹凸性,極值點位置不變,並能將乘積變換成求和形式,因此這種方法在求解優化時經常會被用到。

上式中三個的

式子是完全一樣的,因此由

得:同樣的計算方式來求

和 ,最終得:

其中c是無關常數。

最大化上式log的後驗概率等價於最小化目標函式j(p,q):

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

同樣採用sgd來進行優化。直到收斂或達到最大迭代次數。其過程如下:

1.求解損失函式的負梯度

2.根據負梯度變化更新變數

上式中是步長(learning rate)。同樣最終得到矩陣

和,然後對評分矩陣中的空白的評分通過

來計算**評分。

對pmf優化

由於原來的線性高斯模型做**時,會產生有效評分範圍之外的評分值。因此可以使用乙個logistic 函式:

來代替原來的簡單的線性高斯模型,使得**評分值在有效範圍內。故此,可以將評分矩陣的條件概率修改如下:

原始評分

可以通過logigstic函式

對映到[0,1]區間,然後再去計算。

pmf模型一旦被擬合後,評分少的使用者的特徵將會趨於先驗的均值,因此**評分將會接近物品的平均評分。因此constrained pmf主要對評分少的使用者進行乙個約束。

下面是cpmf的概率圖模型,注意到我們這裡用

引入矩陣w(kxm維)和y(kxn維),其中w表示乙個潛在相似性約束矩陣,y表示使用者潛在特徵的乙個補償矩陣。

可以被看做是加在先驗分布均值上的乙個偏移量,用來得到使用者i對應的特徵向量

對使用者i的潛在特徵向量做了乙個調整如下:

其中,是指示函式,當使用者u對物品k評分了為1,否則為0.

因此我們可以得到評分矩陣的條件分布為:

其中潛在相似性約束矩陣w使其滿足零均值高斯分布先驗:

因此,根據pmf,最大化上式log的後驗概率等價於最小化目標函式j(p,q):

其中,同樣採用sgd來進行優化。直到收斂或達到最大迭代次數。其過程如下:

1.求解損失函式的負梯度

其中,, ,

2.根據負梯度變化更新變數

上式中是步長(learning rate)。同樣最終得到矩陣

和,然後對評分矩陣中的空白的評分通過

來計算**評分。

probabilistic matrix factorization

constrained pmf

推薦演算法 矩陣分解

相關位址 矩陣分解是乙個非常優雅的推薦演算法,因為當設計到矩陣分解時,我們通常不會太多地區思考哪些專案將停留在所得到矩陣的列和行中。但是其使用這個推薦引擎,我們清楚地看到,u是第i個使用者的興趣向量,v是第j個電影的引數向量。所以我們可以通過u和v的點積來估算x 第i個使用者對第j個電影的評分 我們...

C 矩陣庫推薦

最近在幾個地方都看到有人問c 下用什麼矩陣運算庫比較好,順便做了個調查,做一些相關的推薦吧。主要針對稠密矩陣,有時間會再寫乙個稀疏矩陣的推薦。許可證 mpl 2.0 目前使用比較廣的c 矩陣運算庫之一,是在c 下使用matlab方式操作矩陣很好的選擇,許多matlab的矩陣操作函式都可以找到對應,這...

矩陣分解推薦演算法(LMF)

首先我們現在有乙個矩陣 r 其中 r 代表第 i 個使用者對第 j 個商品的喜愛程度。lmf 演算法認為每個商品上面都有一些隱因子,而顧客的喜愛程度是由這些隱因子來決定的。因此便可以將 r 分解成 p times q 的形式。矩陣 p 代表了這 m 個使用者對 f 個隱因子的喜愛程度,q 代表這 f...