推荐系统的各个矩阵分解模型
1. SVD
当然提到矩阵分解,人们首先想到的是数学中经典的SVD(奇异值)分解,直接上公式:
M m × n = U m × k Σ k × k V k × n T M_{m \times n}=U_{m \times k} \Sigma_{k \times k} V_{k \times n}^{T} Mm×n=Um×kΣk×kVk×nT
- 原理和流程
- 当然SVD分解的形式为3个矩阵相乘
- 左右两个矩阵分别表示用户/项目隐含因子矩阵
- 中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小
- 目的
- 推荐好
- 计算得到三个矩阵
- 左右两个矩阵分别表示用户/项目隐含因子矩阵
- 中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小
- 优点
- 在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。
- 也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵
- 缺点
- 如果想运用SVD分解的话,有一个前提是要求矩阵是稠密的,即矩阵里的元素要非空,否则就不能运用SVD分解。很显然我们的任务还不能用SVD,所以一般的做法是先用均值或者其他统计学方法来填充矩阵,然后再运用SVD分解降维。
- 要求矩阵稠密
- 若用户和物品数据量大,计算量大,耗时长
- 冷启动没有解决
2. FunkSVD
刚才提到的 SVD 首先需要填充矩阵,然后再进行分解降维,同时由于需要求逆操作(复杂度O(n^3)),存在计算复杂度高的问题,所以后来Simon Funk提出了FunkSVD的方法,它不在将矩阵分解为3个矩阵,而是分解为2个低秩的用户项目矩阵,同时降低了计算复杂度,公式如下:
min q ∗ , p ∗ ∑ ( u , i ) ∈ K ( r u i − q i T p u ) 2 \min _{q^{*}, p^{*}} \sum_{(u, i) \in \mathcal{K}}\left(r_{u i}-q_{i}^{T} p_{u}\right)^{2} q∗,p∗min(u,i)∈K∑(rui−qiTpu)2
它借鉴线性回归的思想,通过最小化观察数据的平方来寻求最优的用户和项目的隐含向量表示。同时为了避免过度拟合(Overfitting)观测数据,又提出了带有L2正则项的FunkSVD:
min q : p ⋅ ∑ ( u , i ) ∈ κ ( r u i − q i τ p u ) 2 + λ ( ∥ q i ∥ 2 + ∥ p u ∥ 2 ) \min _{q : p \cdot} \sum_{(u, i) \in \kappa}\left(r_{u i}-q_{i}^{\tau} p_{u}\right)^{2}+\lambda\left(\left\|q_{i}\right\|^{2}+\left\|p_{u}\right\|^{2}\right) q:p⋅min(u,i)∈κ∑(rui−qiτpu)2+λ(∥qi∥2+∥pu∥2)
以上两种最优化函数都可以通过梯度下降或者随机梯度下降法来寻求最优解。
2.1 FunkSVD小结
- 目的
- 推荐好
- 矩阵分解为2个低维矩阵
- 参数
- 无须加工
- 二元组
- 优点
- 思想简单
- 套用简单
- 模型的拓展性也很强,能够应用于各种场景
- 相比SVD计算复杂度降低
- 缺点
- 冷启动没有很好解决
- 数据稀疏
3. PMF
来自论文:Salakhutdinov et al. Probabilistic matrix factorization. NIPS(2008): 1257-1264.
PMF是对于FunkSVD的概率解释版本,它假设评分矩阵中的元素 R i j R_ij Rij 是由用户潜在偏好向量和 U i U_i Ui 物品潜在属性向量 V j V_j Vj 的内积决定的,并且服从均值为 U i T V j \mathbf{U}_{i}^{T} \mathbf{V}_{j} UiTVj,方差为的正态分 σ 2 \sigma^{2} σ2 布:
R i , j ∼ N ( U i T V j , σ 2 ) \mathbf{R}_{i, j} \sim \mathbf{N}\left(U_{i}^{T} V_{j}, \sigma^{2}\right) Ri,j∼N(UiTVj,σ2)
则观测到的评分矩阵条件概率为:
p ( R ∣ U , V , σ 2 ) ∼ ∏ i = 1 N ∏ j = 1 M N ( U i T V j , σ 2 ) I i j p\left(\mathbf{R} | U, V, \sigma^{2}\right) \sim \prod_{i=1}^{N} \prod_{j=1}^{M} \mathrm{N}\left(U_{i}^{T} V_{j}, \sigma^{2}\right)^{I_{i j}} p(R∣U,V,σ2)∼i=1∏Nj=1∏MN(UiTVj,σ2)Iij
同时,假设用户偏好向量与物品偏好向量服从于均值都为0,方差分别为 σ U 2 I , σ V 2 I \sigma_{U}^{2} \mathbf{I}, \sigma_{V}^{2} \mathbf{I} σU2I,σV2I 的正态分布:
p ( U ∣ σ U 2 ) = ∏ i = 1 N N ( U i ∣ 0 , σ U 2 I ) p ( V ∣ σ V 2 ) = ∏ j = 1 M N ( V j ∣ 0 , σ V 2 I ) \begin{aligned} p\left(U | \sigma_{U}^{2}\right) &=\prod_{i=1}^{N} \mathcal{N}\left(U_{i} | 0, \sigma_{U}^{2} \mathbf{I}\right) \\ p\left(V | \sigma_{V}^{2}\right) &=\prod_{j=1}^{M} \mathcal{N}\left(V_{j} | 0, \sigma_{V}^{2} \mathbf{I}\right) \end{aligned} p(U∣σU2)p(V∣σV2)=i=1∏NN(Ui∣0,σU2I)=j=1∏MN(Vj∣0,σV2I)
根据贝叶斯公式,可以得出潜变量U,V的后验概率为:
p ( U , V ∣ R , σ 2 , σ V 2 , σ U 2 ) = p ( U , V , R , σ 2 , σ V 2 , σ U 2 ) p ( R , σ 2 , σ V 2 , σ U 2 ) = p ( R ∣ U , V , σ 2 ) × p ( U , V ∣ ρ V 2 , σ U 2 ) p ( R , σ 2 , σ V 2 , σ U 2 ) ∼ p ( R ∣ U , V , σ 2 ) × p ( U , V ∣ σ V 2 , σ U 2 ) = p ( R ∣ U , V , σ 2 ) × p ( U ∣ σ U 2 ) × p ( V ∣ σ V 2 ) = ∏ i = 1 N ∏ j = 1 M [ N ( R i j ∣ U i T V j , σ 2 ) ] I i j × ∏ i = 1 N [ N ( U i ∣ 0 , σ U 2 I ) ] × ∏ j = 1 M [ N ( V j ∣ 0 , σ V 2 I ) ] \begin{array}{l}{p\left(U, V | R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)=\frac{p\left(U, V, R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)}{p\left(R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)}=\frac{p\left(R | U, V, \sigma^{2}\right) \times p\left(U, V | \rho_{V}^{2}, \sigma_{U}^{2}\right)}{p\left(R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^