矩阵分解算法(Matrix Factorization)是最常用于推荐系统的协同过滤算法之一。这一系列的算法曾经是推荐系统中使用的主流算法,即使在现在也在很多地方有用。这里简单地梳理从最基础的matrix factorization(MF)算法到它衍生出来的probabilistic matrix factorization(PMF)的思路,具体解法可以参看 推荐算法——基于矩阵分解的推荐算法 和 概率矩阵分解 这两个blog。
Matrix Factorization
简单地说,MF 可以认为是 Latent Factor Model 思想指导下的一种解决问题的思路,而 latent factor model 其实属于协同过滤方法的一个分支。笔者在之前的文章中介绍过 协同过滤方法。
在协同过滤方法中,我们提到了 user-item-preference 矩阵的存在。Latent factor model 的主要思路就是认为存在某些不可见的、代表用户偏好的隐变量,用户的偏好可以被这些隐变量完全代表,这些隐变量也能决定用户对item的偏好。表现在 user-item-preference 矩阵中,即为我们可以将 user-item-preference 矩阵分解为两个矩阵的乘积。
假设我们有 个user, 个item, 个隐变量,将 user-item-preference 矩阵用 来表示, 表示user对latent factor的矩阵,表示item对latent factor的矩阵。在latent factor model的假设下,矩阵分解算法可以表示为 。具体来说,对于 中的每个 ,都有 ,即 。
在我们求解这个问题时,损失函数为
,
对损失函数求负梯度,则为
使用这两个负梯度公式,我们就可以用梯度下降方法来进行矩阵分解了。
Probabilistic Matrix Factorization
上面是基础的MF算法,PMF是在MF的基础上增加了一个高斯概率函数,增加这个函数的目的是解决评分很少的user比较难获得准确结果的问题,也即解决user cold start问题。它把上面的公式变成了一个在观察矩阵基础上的条件分布:
其中 是一个指示函数,当用户i给物品j评过分时为1,否则为0。直观上看,这意味着观察值相对于用户偏好有一个高斯噪音。同时,假定user和item feature的先验分布如下:
那么它们的联合后验分布可以表示为:
其中, 是常数, 均是假设的超参,所以最大化这个后验概率就等价于最小化: 其中, 。原论文最后实际使用的方法要更复杂一些,因为加入了一个sigmoid函数:
超参数估计
如果想要同时估计U,V和超参数,上面的后验就会变成
这个时候的最大后验估计要用EM算法来解。