基于显示反馈(explicit feedback)的推荐
将用户的显式反馈记录,记录在一个评分矩阵中:
矩阵中的数字代表用户对物品的评分、?表示缺失值。如果我们能够估计矩阵中每个?的值,我们就可以为每个用户做推荐。
为什么选择矩阵因式分解(Matrix Factorization)?
- 非传递性(Non-transitivity):如果两个用户的评分物品集没有交集,既没有都评分过的物品,那么即使他们有相同的邻居,他们也永远不会被关联起来。
- 低效率:必须要计算每一对用户间的相似度,以及每一对物品间的相似度。
什么是矩阵因式分解?
评分矩阵被分解为两个小矩阵:
- Uu· ∈ R1×d : 用户u的特定潜在特征向量 ,
Uu· 表示用户u在d层面的兴趣模型
- Vi· ∈ R1×d : 物品i的特定潜在特征向量,
Vi· 表示物品i在d层面的描述(description)
-
用户u对物品i的整体偏好
符号表(notations)
n | 用户数量 |
m | 物品数量 |
u ∈ {1, 2, . . . , n} |
用户id |
i, i′ ∈ {1, 2, . . . ,m} |
物品id |
观测到的u对i的评分 | |
可选评分集合 | |
若u对i有评分则为1,否则为0 | |
训练集中观测到的评分记录数量 | |
μ | 全局平均评分 |
用户u的bias | |
物品i的bias | |
潜在特征向量的维数 | |
权重参数 | |
用户u对物品i的预测评分 | |
T | 算法的迭代次数 |
概率矩阵分解PMF(Probabilistic Matrix Factorization)
预测公式(用户u对物品i):
目标函数:
其中的是需要被学习的模型参数。
梯度及更新公式
梯度更新使用随机梯度下降算法,对于任一随机采样的评分,我们有如下定义:
可得两个特征矩阵的梯度为:
因此更新公式(6-7)为:
(其中γ>0是学习率)
PMF的随机梯度下降(SGD)算法伪代码为:
正则化奇异值分解RSVD(Regularized Singular Value Decomposition)
在PMF的预测公式中,我们加入用户bias、物品bias以及全局评分均值μ
预测公式(用户u对物品i):
目标函数:
梯度及更新公式
梯度更新使用随机梯度下降算法,对于任一随机采样的评分,我们有如下定义:
可得各个参数的梯度为:
其中
因此更新公式(9-13)为:
模型参数初始化:
其中r为[0,1)区间内的随机变量。
RSVD的随机梯度下降(SGD)算法伪代码为:
总结:矩阵因式分解的方法的目标函数是最小化预测值和真实值之间的误差。也就是尽可能使训练后模型计算出来的值能与可观测到的真实值吻合,这样在原矩阵中的?可以用模型计算而得的可靠的值替代。但是纯粹使用矩阵的因式来还原评分矩阵可能并不那么可靠,所以在预测时添加了用户和物品的偏好以及全局平均值来增加准确度。
本文内容来自W.K. Pan (CSSE, SZU)的课件