【推荐算法论文】矩阵分解算法

论文背景

2009年发表于IEEE旗下的Computer期刊。
  谷歌学术引用数为7954(截至2020年12月7日)。
  作者:Yehuda Koren, Yahoo Research
  Robert Bell and Chris Volinsky, AT&T Labs—Research
  DOI: 10.1109/MC.2009.263
  PDF

Recommender System Stratrgies 推荐系统策略

两种策略:content filtering approach和collaborative filtering
  前者需要收集外部信息,但这不容易得到。后者聚焦于用户过去的行为,相比前者精确度更高,但它有冷启动问题。相反,在冷启动问题方面,前者更优越。

协同过滤又分为neighborhood methods和latent factor models。
  基于领域的策略又可分为基于用户和基于物品。
  基于物品的策略基于同一个用户对相邻物品的评分对用户偏好进行评估。同一个用户给一件物品的相邻物品会打相似的评分。
  基于用户的方法鉴定相似的用户,他们可以互相补充对方的评分信息。

LFM隐语义模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KdPLyhfh-1634386744058)(\images\Paper-MF-LFM.png)]
  意思是把特征刻画分为k个维度。如图,将刻画特征设为性别和题材类别(serious/escapist),形成一个坐标空间,每个用户和物品都在这个空间中,如果在坐标系中距离越近则说明越相似。

Matrix Factorization Methods 矩阵分解策略

一些最成功的隐语义模型是基于矩阵分解实现的。
  矩阵分解通过从评分矩阵推断出的因子向量来刻画物品和用户。
  优势:当显式反馈无法得到时,可以添加其它信息(比如使用隐式反馈推断用户偏好)。

A Basic Matrix Factorization Model 基本矩阵分解模型

矩阵分解模型将用户和物品映射到维度f的联合潜在因素空间,用户-物品交互在空间中使用内积建模。
  每一个item的向量设为 q i q_i qi,每一个用户的向量设为 p u p_u pu q i q_i qi表示item拥有的积极或消极的因子, p u p_u pu表示用户拥有的积极或消极的因子。两者内积可以捕捉用户u和item i之间的交互,即用户在这个item上的整体兴趣。设评分为 r u i r_{ui} rui
r ^ u i = q i T p u \hat{r}_{ui} = {q_i}^T{p_u} r^ui=qiTpu
  这个模型和SVD(singular value decomposition)很接近。但在协同过滤中使用SVD要用到用户-物品评分矩阵,这个矩阵稀疏性太大。如果数据不完整,SVD不能被确定。并且用少数数据尝试容易过拟合。
  早期系统都在填补缺失评分和使评分矩阵更稠密上下功夫。但是这个运算很昂贵。因此,更多的工作聚焦在直接观察现有评分数据,并通过正则化来避免过拟合。为了学习 p u {p_u} pu q i {q_i} qi,使用下述公式
KaTeX parse error: Undefined control sequence: \* at position 7: min_{q\̲*̲,p\*}\sum_{(u,i…
  其中,k是(u,i)对的集合。 r u i {r_{ui}} rui是未知的(训练集)。

Learning Algorithms 学习算法

使上述式子最小化的两种方法是随机梯度下降和交替最小二乘法。

Stochastic gradient descent 随机梯度下降

计算error
KaTeX parse error: No such environment: equation at position 7: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲{e_{ui}}\overse…

调参
q i ← q i + γ ⋅ ( e u i ⋅ p u − λ ⋅ q i ) {q_i} \leftarrow q_i + \gamma·({e_ui}·{p_u} - \lambda · {q_i}) qiqi+γ(euipuλqi)
p u ← p u + γ ⋅ ( e u i ⋅ q i − λ ⋅ p u ) {p_u} \leftarrow p_u + \gamma·({e_ui}·{q_i} - \lambda · {p_u}) pupu+γ(euiqiλpu)

该方法运行速度较快。不过在有些场景下,使用ALS优化更好。

Alternating least squares 交替最小二乘法

一般随机梯度下降比ALS简单且快。但ALS适用于两个场景,一是系统可以并行化。ALS可独立计算 q i {q_i} qi p u {p_u} pu。二是隐式数据情况下使用。

Adding Biases

每个用户评价严格度不同,因此引入偏置项。
b u i = μ + b i + b u {b_{ui}} = μ + {b_i} + {b_u} bui=μ+bi+bu
  加了偏置项后,公式改为
r ^ u i = μ + b i + b u + q i T p u \hat{r}_{ui} = μ + {b_i} + {b_u} + {q_i}^T{p_u} r^ui=μ+bi+bu+qiTpu
  四部分:全局均值、item偏置、user偏置和user-item交互。
  系统通过最小化平方误差函数来学习:
KaTeX parse error: Undefined control sequence: \* at position 7: min_{p\̲*̲,q\*,b\*}\sum_{…

Additional Input Sources 额外输入资源

r ^ u i = μ + b i + b u + q i T [ p u + ∣ N ( u ) ∣ − 0.5 ∑ i ∈ N ( u ) x i + ∑ a ∈ A ( u ) y a ] \hat{r}_{ui} = μ + {b_i} + {b_u} + {q_i}^T[{p_u} + |N(u)|^{-0.5} \sum_{i∈N(u)}{x_i} + \sum_{a∈A(u)}{y_a}] r^ui=μ+bi+bu+qiT[pu+N(u)0.5iN(u)xi+aA(u)ya]
  N(u)指用户u有过隐式反馈的若干个item集合。x是和item i相关的因素。 ∑ i ∈ N ( u ) x i \sum_{i∈N(u)}{x_i} iN(u)xi表示一个用户对N(u)中的若干item的偏好刻画向量。系数代表规范化。
  用户属性用A(u)表示,每一个用户的每一个属性对应的因素向量用 y a y_a ya表示。$\sum_{a∈A(u)}{y_a}表示每个用户的属性集。

Temporal dynamics 时空动态

用户兴趣会发生兴趣漂移,即随着时间而变化。
r ^ u i ( t ) = μ + b i ( t ) + b u ( t ) + q i T p u ( t ) \hat{r}_{ui}(t) = μ + b_i(t) + b_u(t) + q_i^Tp_u(t) r^ui(t)=μ+bi(t)+bu(t)+qiTpu(t)
   b i ( t ) b_i(t) bi(t)表示物品随时间变化的流行程度, b u ( t ) b_u(t) bu(t)表示用户评分随时间变化的严格程度, p u ( t ) p_u(t) pu(t)表示用户偏好随时间变化的改变程度。物品是静态的,所以 q i q_i qi也是静态的。

Inputs with varying confidence levels 各种信任级别的输入

不是每一条评分数据的权重和信任都是一样的。为了给不同的评分以不同的信任程度,修改损失函数为
KaTeX parse error: Undefined control sequence: \* at position 7: min_{p\̲*̲,q\*,b\*}\sum_{…
   c u i c_{ui} cui为评分的信任程度。

Netflix prize competition Netflix大奖竞赛

使用矩阵分解的方法取得了第一名的成绩。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSgQ8mUY-1634386744067)(/images/Paper-MF-accuracy.png)]
  加的因素越多,精确度越高。

阅后总结

本文主要介绍了矩阵分解的具体算法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值