推荐系统的各个矩阵分解模型
1. SVD
当然提到矩阵分解,人们首先想到的是数学中经典的SVD(奇异值)分解,直接上公式:
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个低秩的用户项目矩阵,同时降低了计算复杂度,公式如下:
q∗,p∗min(u,i)∈K∑(rui−qiTpu)2
它借鉴线性回归的思想,通过最小化观察数据的平方来寻求最优的用户和项目的隐含向量表示。同时为了避免过度拟合(Overfitting)观测数据,又提出了带有L2正则项的FunkSVD:
q:p⋅min(u,i)∈κ∑(rui−qiτpu)2+λ(∥qi∥2+∥pu∥2)
以上两种最优化函数都可以通过梯度下降或者随机梯度下降法来寻求最优解。
2.1 FunkSVD小结
- 目的
- 参数
- 优点
- 思想简单
- 套用简单
- 模型的拓展性也很强,能够应用于各种场景
- 相比SVD计算复杂度降低
- 缺点
3. PMF
来自论文:Salakhutdinov et al. Probabilistic matrix factorization. NIPS(2008): 1257-1264.
PMF是对于FunkSVD的概率解释版本,它假设评分矩阵中的元素 Rij 是由用户潜在偏好向量和 Ui 物品潜在属性向量 Vj 的内积决定的,并且服从均值为UiTVj,方差为的正态分 σ2 布:
Ri,j∼N(UiTVj,σ2)
则观测到的评分矩阵条件概率为:
p(R∣U,V,σ2)∼i=1∏Nj=1∏MN(UiTVj,σ2)Iij
同时,假设用户偏好向量与物品偏好向量服从于均值都为0,方差分别为 σU2I,σV2I 的正态分布:
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,σV2,σU2)=p(R,σ2,σV2,σU2)p(U,V,R,σ2,σV2,σU2)=p(R,σ2,σV2,σU2)p(R∣U,V,σ2)×p(U,V∣ρV2,σU2)∼p(R∣U,V,σ2)×p(U,V∣σV2,σU2)=p(R∣U,V,σ2)×p(U∣σU2)×p(V∣σV2)=∏i=1N∏j=1M[N(Rij∣UiTVj,σ2)]Iij×∏i=1N[N(Ui∣0,σU2I)]×∏j=1M[N(Vj∣0,σV2I)]
接着,等式两边取对数 ln 后得到:
lnp(U,V∣R,σ2,σV2,σU2)=−2σ21∑i=1N∑j=1MIij(Rij−UiTVj)2−2σU21∑i=1NUiTUi−2σV21∑j=1MVjTVj−21((∑i=1N∑j=1MIij)lnσ2+NDlnσU2+MDlnσV2)+C
最后,经过推导,我们可以发现PMF确实是FunkSVD的概率解释版本,它两个的形式一样一样的。
**注:**为了方便读者理解,在此举例推导中间项 N(Ui∣0,σ2I) ,将此项展开,带入多维正态分布即可得到 −2Dln(σU2)−2σU2UiTUi+C 。推导如下:
lnN(Ui∣0,σU2I)===N(Ui∣0,σU2I)=−(2π)D/2∣σU2I∣1/21e−2121wiT(σU2I)−1Ui=ln(−(2π)D/2∣σU2I∣1/21)−2σU2UiTUi−ln(∣∣σU2I∣∣1/2)−2σU2UiTUi+C−21ln(σU2D)−2σU2UiTUi+C−2Dln(σU2)−2σU2UiTUi+C
3.1 PMF小结
- 目的
- 参数
- 优点
- 思想简单
- 套用简单
- 模型的拓展性也很强,能够应用于各种场景
- 相比SVD计算复杂度降低
- PMF是对于FunkSVD的概率解释版
- 缺点
4. BiasSVD
来自论文:Koren et al. Matrix factorization techniques for recommender systems.Computer 42.8 (2009).
在FunkSVD提出来之后,陆续又提出了许多变形版本,其中相对流行的方法是BiasSVD,它是基于这样的假设:某些用户会自带一些特质,比如天生愿意给别人好评,心慈手软,比较好说话,有的人就比较苛刻,总是评分不超过3分(5分满分);同时也有一些这样的项目,一被生产便决定了它的地位,有的比较受人们欢迎,有的则被人嫌弃,这也正是提出用户和项目偏置项的原因;项亮给出的解释是:对于一个评分系统有些固有属性和用户物品无关,而用户也有些属性和物品无关,物品也有些属性与用户无关,具体的预测公式如下:
r^ij=μ+bu+bi+qiTpu
其中, μ 为整个网站的平均评分,是真个网站的基调;bu 为用户的评分偏置,代表某个用户的评分基调, bi 为项目的被评分偏置,代表某个项目的属性基调。
4.1 BiasSVD小结
- 目的:
- 参数:
- 二元组,无须处理
- BiasSVD假设评分系统包括三部分的偏置因素:
- 一些和用户物品无关的评分因素,用户有一些和物品无关的评分因素,称为用户偏置项。
- 而物品也有一些和用户无关的评分因素,称为物品偏置项
- 优点:
- BiasSVD增加了一些额外因素的考虑,因此在某些场景会比FunkSVD表现好。
- 电商或电影平台场景可能比较适合
- 缺点:
5. SVD++
来自论文:Koren Y. Factor in the neighbors: Scalable and accurate collaborative filtering[J]. ACM Transactions on Knowledge Discovery from Data (TKDD), 2010, 4(1): 1.
在用户除了显式评分外,隐式反馈信息同样有助于用户的偏好建模,因此随后提出了SVD++。它是基于这样的假设:用户除了对于项目的显式历史评分记录外,浏览记录或者收藏列表等隐反馈信息同样可以从侧面一定程度上反映用户的偏好,比如用户对某个项目进行了收藏,可以从侧面反映他对于这个项目感兴趣,具体反映到预测公式为:
r^ij=μ+bu+bi+qiT⎝⎛pu+∣N(i)∣−21s∈N(i)∑ys⎠⎞
其中 N(i) 为用户 i 所产生隐反馈行为的物品集合;ys 为隐藏的对于项目的 s 个人喜好偏置,是一个我们所要学习的参数;至于 ∣N(i)∣−21 是一个经验公式。
5.1 SVD++小结
-
目的:
-
参数:
-
优点:
- SVD++增加了一些额外因素的考虑,如:用户行为不仅有评分,且有些隐反馈(点击等)。
- 视频平台、文章等媒体平台都适合,电商平台也适合
-
缺点:
-
数据稀疏
6. timeSVD
来自论文:Koren et al. Collaborative filtering with temporal dynamics. Communications of the ACM 53.4 (2010): 89-97.
它是基于这样的假设:用户的兴趣或者偏好不是一成不变的,而是随着时间而动态演化。于是提出了timeSVD,其中用户的和物品的偏置随着时间而变化,同时用户的隐含因子也随着时间而动态改变,在此物品的隐含表示并未随时间而变化(假设物品的属性不会随着时间而改变)。
r^ui=μ+bi(tui)+bu(tui)+qiTpu(tui)
其中,i 为时间因子,表示不同的时间状态。
6.1 timeSVD小结
- 目的:
- 参数:
- 优点:
- timeSVD++增加了一些额外因素的考虑,它假设用户爱好随时间的流动而变化
- 缺点:
7. NMF
来自论文:Lee et al. Learning the parts of objects by non-negative matrix factorization. Nature 401.6755 (1999): 788.
这是一篇发表在Nature上的经典论文,谷歌学术显示引用将近9k,它提出了一个假设:分解出来的小矩阵应该满足非负约束。
因为在大部分方法中,原始矩阵 R 被近似分解为两个低秩矩阵相 R=PTQ 乘的形式,这些方法的共同之处是,即使原始矩阵的元素都是非负的,也不能保证分解出的小矩阵都为非负,这就导致了推荐系统中经典的矩阵分解方法可以达到很好的预测性能,但不能做出像User-based CF 那样符合人们习惯的推荐解释(即跟你品味相似的人也购买了此商品)。在数学意义上,分解出的结果是正是负都没关系,只要保证还原后的矩阵元素非负并且误差尽可能小即可,但负值元素往往在现实世界中是没有任何意义的。比如图像数据中不可能存在是负数的像素值,因为取值在0~255之间;在统计文档的词频时,负值也是无法进行解释的。因此提出带有非负约束的矩阵分解是对于传统的矩阵分解无法进行科学解释做出的一个尝试。它的公式如下:
R≈PTQ s.t. P≥0Q≥0
其中,P , Q 两个矩阵中的元素满足非负约束。
7.1 NMF小结
- 目的:
- 参数:
- 优点:
- 分解出来的矩阵里的元素都是非负数
- 应用场景多,如下:
- NMF能被用于发现数据库中的图像特征,便于快速自动识别应用
- 能够发现文档的语义相关度,用于信息自动索引和提取
- 能够在DNA阵列分析中识别基因等等
- 最有效的就是图像处理领域,NMF是图像处理的数据降维和特征提取的一种有效方法。
- 缺点:
8. WMF
来自论文:Pan et al. One-class collaborative filtering. ICDM, 2008.
Hu et al. Collaborative filtering for implicit feedback datasets. ICDM, 2008.
对于矩阵分解来说,我们一般是处理的推荐系统中的评分预测任务,但同样矩阵分解也可以用来进行Top-N的推荐,即根据隐式信息来预测用户是否点击某项目。你可以把他看做是二分类问题,即点或者不点。但这不是普通的二分类问题,因为在模型训练的过程中负样本并非都为真正的负样本,可能是用户根本没见过该项目,何来喜不喜欢,没准他看到后喜欢呢,即正样本告诉我们作者喜欢的信息,但负样本并不能告诉我们该用户不喜欢。由于只存在正样本,所以我们把只有正反馈的问题定义为one-class问题,即单类问题。对于单类问题,该作者提出了两种解决策略,一种是加权的矩阵分解,另一种是负采样技术。虽然只是加了一下权重,看起来比较naive,但在于当时的研究背景下,这一小步其实是推荐系统中的一大步。
L(X)=ij∑Wij(Rij−Xij)2
对于单类问题的研究一直没有停止过,虽然负采样技术是启发式的,即不用通过数据建模的方式来进行预测,但效果还是很好用的。最近几年人们提出了基于模型的方法来处理这种单类问题,即从缺失数据中来进行建模,具体可参见这两篇论文【Hernández-Lobato et al 2014,Liang et al 2016】。
8.1 WMF小结
- 目的:
- 参数:
- 用户评分、点击、评论等操作,这些操作都转换为 0或1 数据
- 还要对样本进行负采样
- 优点:
- 缺点:
9. LLORMA
来自论文:Lee et al. Local low-rank matrix approximation.ICML. 2013.
经典的矩阵分解模型是假设整个用户-项目矩阵(即UI矩阵)满足低秩假设(即全局低秩假设),即在整个系统当中,用户和项目总是满足存在相似的某种模式,即物以类聚,人以群分。
这种假设固然有道理,但在当今大数据时代下,全局意义上的低秩假设似乎太强了,尤其是在数据量巨大的情况下(即用户数与项目数都很多的系统当中),因此该论文推翻了全局意义上经典的全局低秩假设,它认为大千世界,林林总总,我们应该去寻找局部的低秩假设(即局部低秩假设)。首先根据某种相似测度来将整个大矩阵分为若干个小矩阵,每个小矩阵当中满足某种相似度阈值,然后再在局部的小矩阵当中做低秩假设。这样,全局的大矩阵可以由多个局部的小矩阵来加权组合构成,具体可参见该论文。
![推荐系统的各个矩阵分解模型 推荐系统的各个矩阵分解模型](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg0MC9mMGRhYzNjMGY0MjcyMjE0MzVkNTIzOWQ4OGZkMjU2OC5wbmc=)
9.1 LLORMA小结
- 目的:
- 参数:
- 输入:评分矩阵M∈Rm × n
- 局部模型个数q,局部矩阵的秩r,学习速率ν,正则化参数λ.
- 优点:
- 计算复杂度保证了LLORMA算法具有计算上的高效性
- 并且LLORMA算法可以应用于大规模数据推荐场景.
- 缺点:
10. SRui
来自论文:Ma Hao. An experimental study on implicit social recommendation. SIGIR, 2013.
虽然经典的矩阵分解方法已经可以到达比较好的预测性能了,但它固有的弊病仍然是躲不开的,即数据稀疏与冷启动问题。为了缓解数据稀疏我们可以引入丰富的社交信息。即如果两个用户是朋友关系,那么我们假设他们有相同的偏好,同时他们学得的用户隐表示在向量空间应该有相近的距离。用户维度如此,同理,项目维度亦可以利用此思路来约束项目隐表示。即如果两个项目之间的关系较近,那么在低维向量空间中的距离同样也应该较小。这里的项目关系是从UI矩阵中抽取出来的,论文中成为项目隐社交关系(其实项目维度跟社交没啥关系)。具体公式如下:
L=U,Vmin21i=1∑mj=1∑nIij(rij−uiTvj)2+2αi=1∑mf∈F+(i)∑sif∥ui−uf∥F2+2βj=1∑nq∈Q+(j)∑sjq∥vj−vq∥F2+2λ1∥U∥F2+2λ2∥V∥F2
其中,sif 表示用户 i 和用户的 f 社交相似度, sjq 表示项目 j 与项目 q 的隐社交相似度,在用户维度和项目维度分别增加了平滑项约束,使得学得的隐特征表示更加符合现实意义。
10.1 SRui小结
- 目的:
- 参数:
- 评分矩阵M∈Rm × n
- 优点:
- 针对有用户之间交互的场景进行了优化
- 针对项目之间也有优化
- 丰富了数据,对数据稀疏有缓解
- 缺点:
11. ConvMF
来自论文:Kim et al. Convolutional matrix factorization for document context-aware recommendation. RecSys 2016.
当然矩阵分解的优点之一是可扩展性好,这当然不是吹的,比如16年的这篇文章就是将矩阵分解(MF)与图像处理领域很火的卷积神经网络(CNN)做了完美结合。
矩阵分解作为协同过滤模型中经典的方法,性能当然没的说。但它存在的数据稀疏与冷启动问题一直以来都是它的痛点,因此结合外部丰富的信息成为了缓解上述问题的有效途径。其中文本数据作为web中主流的数据形式成为了首选,并且对于文本的处理,大部分还是基于one-hot的表示,因此无法捕捉文档中上下文的关键信息,于是作者将两者做了结合,具体细节请参见论文,该公式如下:
L(U,V,W)=∑iN∑jM2Iij(rij−uiTvj)2+2λU∑iN∥ui∥2+2λV∑jM∥vj−cnn(W,Xj)∥2+2λW∑k∣wk∣∥wk∥2
其中,在使得用户隐向量与项目隐向量做内积尽可能逼近真实评分的同时,对项目隐向量做了额外约束,即让项目隐向量跟CNN学得的文档特性尽可能的接近。
11.1 ConvMF小结
- 目的:
- 参数:
- 评分矩阵M∈Rm × n
- 文本数据,如评论等
- 优点:
- 丰富了数据集,缓解数据稀疏问题
- 在使得用户隐向量与项目隐向量做内积尽可能逼近真实评分的同时
- 对项目隐向量做了额外约束,即让项目隐向量跟CNN学得的文档特性尽可能的接近
- 缺点:
12. NCRPD-MF
来自论文:Hu et al. Your neighbors affect your ratings: on geographical neighborhood influence to rating prediction. SIGIR 2014.
刚才说到,MF的可扩展性好,一方面是可以和主流模型做无缝集成,另一方面是可以和多种信息源做特征融合,比如14年的这篇文章,它是融合了文本评论信息,地理邻居信息,项目类别信息以及流行度等信息,具体预测公式如下:
r^ui=μ+bu+bi+pu⊤(∣Ri∣1w∈Ri∑qw+∣Ni∣α1n∈Ni∑vn+∣Ci∣α2c∈Ci∑dc)
其中,qw 为文本特征的低维向量表示, vi 为地理邻居的低维向量表示, dc 为项目类别的低维特征表示。
12.1 NCRPD-MF小结
- 目的:
- 参数:
- 评分矩阵M∈Rm × n
- 文本数据,如评论等
- 地理数据
- 优点:
- 丰富了数据集,缓解数据稀疏问题
- 针对大众交互多的,点评平台。如:大众点评
- 这些平台都具有丰富的文本和地理信息
- 缺点: