【推荐系统算法】PMF(Probabilistic Matrix Factorization)

Mnih, Andriy, and Ruslan Salakhutdinov. “Probabilistic matrix factorization.” Advances in neural information processing systems. 2007.

本篇论文发表于2007年NIPS。Ruslan Salakhutdinov来自多伦多大学,16年转入CMU。Andriy Mnih同样来自多伦多大学,师从Hinton。PMF算法(Probabilistic Matrix Factorization)是现代推荐系统的基础算法之一。

##问题描述
设有 N N N个用户, M M M部电影。一个评分系统可以用 N × M N\times M N×M矩阵 R R R来表示。
推荐系统问题如下: R R R矩阵中只有部分元素是已知的(用户只给一部分电影打过分),且 R R R往往非常稀疏,需要求出 R R R缺失的部分。
除了推荐系统,这个模型也可以用来描述任意“成对”作用的系统。例如:由若干球队组成的联赛,两支球队间的历史比分即为 R R R的已知元素,需要预测尚未进行的比赛结果。这里 R R R是一个方阵。

##基本思路
本文采取low-dimensional factor模型,也称为low rank模型来处理这个问题。其核心思想是:用户和电影之间的关系(即用户对电影的偏好)可以由较少的几个因素的线性组合决定

例子
用户是否喜欢一部电影取决于三个因素:是娱乐片还是文艺片,是外文片还是华语片,演员是否出名。
用三维向量$x=[0.6, 1.0, -0.2]^T 来 描 述 一 个 用 户 ( 假 设 取 值 在 [ − 1 , 1 ] 之 间 ) : 他 比 较 喜 欢 娱 乐 片 , 只 看 外 文 片 , 对 演 员 要 求 一 般 , 小 众 一 点 更 好 。 对 于 一 部 电 影 , 用 另 一 个 三 维 向 量 来 描 述 来描述一个用户(假设取值在[-1,1]之间):他比较喜欢娱乐片,只看外文片,对演员要求一般,小众一点更好。 对于一部电影,用另一个三维向量来描述 [1,1]y=[0.9, -1.0, 0.8]^T $:这是一部众星云集的-国产-娱乐大作。
可以算出这个用户对于这部电影的喜好程度 r = x T y = − 2.06 r=x^T y =-2.06 r=xTy=2.06 :相当不喜欢。

用矩阵语言来描述,就是评分矩阵可以分解为两个低维矩阵的乘积 R = U T V R=U^T V R=UTV,其中 D × N D\times N D×N矩阵 U U U描述 N N N个用户的属性, D × M D\times M D×M矩阵 V V V描述 M M M部电影的属性。
根据矩阵秩的性质, R R R的秩不超过 U , V U,V U,V的最小尺寸 D D D

实际上,由于系统噪音存在,不可能做出这样的完美分解,另外 R R R包含很多未知元素。所以问题转化为:

  • 对一个近似矩阵进行分解 R ^ = U T V \hat R=U^TV R^=UTV
  • 要求近似矩阵 R ^ \hat R R^在观测到的评分部分和观测矩阵 R R R尽量相似
  • 为了防止过拟合,需要对 U , V U,V U,V做某种形式的约束

用贝叶斯观点来说, R R R是观测到的值, U , V U,V U,V描述了系统的内部特征,是需要估计的。

##基础PMF模型

使用如下两个假设

  • 观测噪声(观测评分矩阵 R R R和近似评分矩阵 R ^ \hat R R^之差)为高斯分布
  • 用户属性 U U U和电影属性 V V V均为高斯分布

利用第一个假设,可以写出完整观测矩阵的概率密度函数。其中 σ \sigma σ是观测噪声的方差,人工设定。
p ( R ∣ U , V ) = N ( R ^ , σ 2 ) = N ( U T V , σ 2 ) p(R|U,V )=N(\hat R,\sigma ^2 )=N(U^TV,\sigma ^2) p(RU,V)=N(R^,σ2)=N(UTV,σ2)

利用第二个假设,可以写出用户、电影属性的概率密度函数。其中 σ U , σ V \sigma_U, \sigma_V σU,σV是先验噪声的方差,人工设定。
p ( U ) = N ( 0 , σ U 2 ) , p ( V ) = N ( 0 , σ V 2 ) p(U)=N(0,\sigma_U ^2), p(V )=N(0,\sigma_V ^2) p(U)=N(0,σ

  • 41
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值