MF系列一:從Matrix Factorization到Probabilistic Matrix Factorization

矩陣分解算法(Matrix Factorization)是最經常使用於推薦系統的協同過濾算法之一。這一系列的算法曾經是推薦系統中使用的主流算法,即便在如今也在不少地方有用。這裏簡單地梳理從最基礎的matrix factorization(MF)算法到它衍生出來的probabilistic matrix factorization(PMF)的思路,具體解法能夠參看 推薦算法——基於矩陣分解的推薦算法 機率矩陣分解 這兩個blog。算法

Matrix Factorization

簡單地說,MF 能夠認爲是 Latent Factor Model 思想指導下的一種解決問題的思路,而 latent factor model 其實屬於協同過濾方法的一個分支。筆者在以前的文章中介紹過 協同過濾方法app

在協同過濾方法中,咱們提到了 user-item-preference 矩陣的存在。Latent factor model 的主要思路就是認爲存在某些不可見的、表明用戶偏好的隱變量,用戶的偏好能夠被這些隱變量徹底表明,這些隱變量也能決定用戶對item的偏好。表如今 user-item-preference 矩陣中,即爲咱們能夠將 user-item-preference 矩陣分解爲兩個矩陣的乘積。函數

假設咱們有 N 個user,M 個item,D 個隱變量,將 user-item-preference 矩陣用 R^{N*M} 來表示, U^{D*N}表示user對latent factor的矩陣,V^{D*M}表示item對latent factor的矩陣。在latent factor model的假設下,矩陣分解算法能夠表示爲 R \approx U^T * V = \hat{R}。具體來講,對於 R 中的每一個 r_{i,j},都有 r_{i,j} \approx \hat{r_{i,j}} = \sum_{d}^{D}{u_{d,i} * v_{d, j}},即 e_{i,j} = r_{i, j} - \sum_{d}^{D}{u_{d,i} * v_{d, j}}post

在咱們求解這個問題時,損失函數爲google

loss = \sum{e_{i,j}^2} = \sum{(r_{i,j} -\sum_{d}^{D}{u_{d,i} * v_{d, j}})^2}.net

對損失函數求負梯度,則爲cdn

\frac{\partial{loss}}{\partial{u_{d,i}}} = -2*e_{i,j}v_{d,j}

\frac{\partial{loss}}{\partial{v_{d,j}}} = -2*e_{i,j}u_{d,i}

使用這兩個負梯度公式,咱們就能夠用梯度降低方法來進行矩陣分解了。blog

Probabilistic Matrix Factorization

上面是基礎的MF算法,PMF是在MF的基礎上增長了一個高斯機率函數,增長這個函數的目的是解決評分不多的user比較難得到準確結果的問題,也即解決user cold start問題。它把上面的公式變成了一個在觀察矩陣基礎上的條件分佈:get

其中 I_{i,j}是一個指示函數,當用戶i給物品j評過度時爲1,不然爲0。直觀上看,這意味着觀察值相對於用戶偏好有一個高斯噪音。

同時,假定user和item feature的先驗分佈以下: it

那麼它們的聯合後驗分佈能夠表示爲:

其中, C是常數, \sigma, \sigma_{U}, \sigma_{V}均是假設的超參,因此最大化這個後驗機率就等價於最小化:

其中, \lambda_U = \sigma^2 / \sigma_U^2, \lambda_V = \sigma^2 / \sigma_V^2

原論文最後實際使用的方法要更復雜一些,由於加入了一個sigmoid函數:

超參數估計

若是想要同時估計U,V和超參數,上面的後驗就會變成

這個時候的最大後驗估計要用EM算法來解。

相關文章
相關標籤/搜索