推荐系统中的矩阵分解演变方式

推荐算法主要分为基于内容的算法和协同过滤. 协同过滤的两种基本方法是基于邻居的方法(基于内容/物品的协同过滤)和隐语义模型. 矩阵分解乃是实现隐语义模型的基石.

矩阵分解根据用户对物品的评分, 推断出用户和物品的隐语义向量, 然后根据用户和物品的隐语义向量来进行推荐.

推荐系统用到的数据可以有显式评分和隐式评分. 显式评分时用户对物品的打分, 显式评分矩阵通常非常稀疏. 隐式评分是指用户的浏览, 购买, 搜索等历史记录, 表示的是用户行为的有无, 所以是一个密集矩阵.

1. 基本矩阵分解

矩阵分解方法会将用户和物品映射到维的隐向量空间,
用户对物品的评分表示为两个向量的内积. 亦即, 每个物品表示为向量,
每个用户表示成向量.
对于物品,
向量的元素表示的是物品具有这些隐因子的程度,
对于用户,
向量表示的是用户对各个隐因子的兴趣,
元素的值可正可负. 两个向量的内积

表示的就是估计的用户对物品的评分. 所以主要的挑战就是计算用户和物品到隐向量的映射.

最简单的就是奇异值分解(Singular value decomposition, SVD), 使用SVD需要分解用户物品评分矩阵, 但是通常该矩阵中有很多值是缺失的, 这种情况下的SVD是不可行的. 另外, 只处理已知的这些评分容易导致过拟合. 可以通过填充数据来使得矩阵变得稠密,
但是填充数据的准确性很是问题.

最主流的做法是只对那些已观测到的评分进行建模, 并且通过使用正则化项来避免过拟合, 亦即求解以下问题:

其中是所以已知评分的用户-物品对, 控制着正则化的程度.

2. 学习算法

两种常用的求解上式的算法为随机梯度下降(SGD)和ALS(Alternating Least Square).

2.1 随机梯度下降

对于每个用户-物品评分, 计算预测误差

然后按照梯度下降的方向更新用户和物品的隐向量:

2.2 ALS(Alternating Least Square)

因为都是未知的,
所以公式2不是凸的. 但是, 当我们固定其中一个变量, 则2式变成一个二次函数, 能够被最优的求解. 所以ALS算法的思想就是交替的固定,
然后求解另外一个变量的二次函数的最优值.

通常SGD都会比ALS要简单而且快速, 但是ALS的并行性比较好, 而且可以较好地处理稀疏数据(?).

3. 添加偏置项

矩阵分解方法的一个好处就是可以灵活的添加许多面向应用的要求. 比如, 通常来说, 不同用户的评分倾向不同, 用的用户的打分普遍较高, 有的普遍较低, 物品亦然. 所以仅仅使用用户和物品之间的交互来对评分进行建模不是很好,
还需要加上一些偏置项. 一种一阶偏置项近似为:

其中描述的是所有评分的平均值, 描述的是用户和物品相对于的偏差.

评分模型为:

转化为最优化问题为:

4. 其他的输入源

当解决冷启动问题时, 用户的评分信息很少, 这时候就需要使用用户的其他输入信息, 比如用户隐式反馈(浏览, 购买历史等). 令表示用户有隐反馈的物品.
系统可以通过这些物品来对用户建模, 亦即把每个物品表示成一个隐向量,
则用户可以通过下式来描述:

可以对上式进行正则化:

也可以使用用户的一些其他属性(性别, 年龄, 收入等)来对用户建模, 令表示用户的一些布尔属性,则隐向量表示用户的某个属性,
用户的所有属性可以通过下式来描述:

用户对物品的评分可以表示为:

5. 时间因素

到现在为止, 模型是静态的, 但是实际中物品的流行程度会随着时间变化, 用户的评分倾向也会变化, 用户的隐向量也会随时间变化. 所以可以将这些变量表示成时间的函数来更好地描述这些现象:

6. 不同可信度的输入源

不同的评分的可信度不同. 比如广告会影响某个物品的评分, 另外, 有些作弊的用户会对某些物品恶意的打高分或者低分. 另外, 在使用隐式反馈时, 可以使用某些行为(比如浏览)等得次数来表示用户喜欢某个物品的程度. 可以通过为某个评分设置权重来解决上述问题:

参考文献:

[1]. Yuhuda Koren, Robert Bell and Chris Volinsky. Matrix Factorization Techniques for Recommender Systems.

时间: 2024-08-08 01:13:48

推荐系统中的矩阵分解演变方式的相关文章

推荐系统的各个矩阵分解模型1

推荐系统的各个矩阵分解模型 1. SVD 当然提到矩阵分解,人们首先想到的是数学中经典的SVD(奇异值)分解,直接上公式: $$ M_{m \times n}=U_{m \times k} \Sigma_{k \times k} V_{k \times n}^{T} $$ 原理和流程 当然SVD分解的形式为3个矩阵相乘 左右两个矩阵分别表示用户/项目隐含因子矩阵 中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小 目的 推荐好 计算得到三个矩阵 左右两个矩阵分别表示用户/项目隐

推荐系统的各个矩阵分解模型

# 推荐系统的各个矩阵分解模型 ## 1. SVD 当然提到矩阵分解,人们首先想到的是数学中经典的SVD(奇异值)分解,直接上公式:$$M_{m \times n}=U_{m \times k} \Sigma_{k \times k} V_{k \times n}^{T}$$ - 原理和流程 - 当然SVD分解的形式为3个矩阵相乘 - 左右两个矩阵分别表示用户/项目隐含因子矩阵 - 中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小- 目的 - 推荐好 - 计算得到三个矩阵 -

简单的基于矩阵分解的推荐算法-PMF, NMF

介绍: 推荐系统中最为主流与经典的技术之一是协同过滤技术(Collaborative Filtering),它是基于这样的假设:用户如果在过去对某些项目产生过兴趣,那么将来他很可能依然对其保持热忱.其中协同过滤技术又可根据是否采用了机器学习思想建模的不同划分为基于内存的协同过滤(Memory-based CF)与基于模型的协同过滤技术(Model-based CF).其中基于模型的协同过滤技术中尤为矩阵分解(Matrix Factorization)技术最为普遍和流行,因为它的可扩展性极好并且易

矩阵分解在推荐系统中的应用

矩阵分解是最近几年比较火的算法,经过kddcup和netflix比赛的多人多次检验,矩阵分解可以带来更好的结果,而且可以充分地考虑各种因素的影响,有非常好的扩展性,因为要考虑多种因素的综合作用,往往需要构造cost function来将矩阵分解问题转化为优化问题,根据要考虑的因素为优化问题添加constraints,然后通过迭代的方法进行矩阵分解,原来评分矩阵中的missing vlaue可以通过分解后得到的矩阵求的. 本文将简单介绍下最近学习到的矩阵分解方法. (1)PureSvd 怎么评价这

基于矩阵分解的推荐系统应用

使用MATLAB尝试了随机梯度下降的矩阵分解方法,实现了一个比较简单的推荐系统的原理. 常用推荐系统的方法有协同过滤,    基于物品内容过滤等等. 这次是用的矩阵分解模型属于协同过滤的一种方法,大致原理是通过一定数量的因子来描述各个用户的喜好和各个物品的属性. 通过随机梯度下降法分解后得到两个矩阵,一个是用户因子矩阵,另一个是物品因子矩阵. 这两个矩阵相乘可以得到所有用户对所有电影的预测评分. 以Movie-Lens数据集举例,这包含943个用户对1682部电影的十万条评分. 第一列用户编号,

矩阵分解在协同过滤推荐算法中的应用

在协同过滤推荐算法总结中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结.(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题 在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户.比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品

推荐系统:矩阵分解与邻域的融合模型

推荐系统通常分析过去的事务以建立用户和产品之间的联系,这种方法叫做协同过滤. 协同过滤有两种形式:隐语义模型(LFM),基于邻域的模型(Neighborhood models). 本篇文章大部分内容为大神Koren的Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model ,这篇文章发表时我还在上初中.文章内容并未过时,主要介绍SVD,SVD++,以及SVD与基于邻域模型的融合. 一.Ba

机器学习中的矩阵方法04:SVD 分解

机器学习中的矩阵方法04:SVD 分解 前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出更有意思的信息.奇异值分解( SVD, Singular Value Decomposition ) 在计算矩阵的伪逆( pseudoinverse ),最小二乘法最优解,矩阵近似,确定矩阵的列向量空间,秩以及线性系统的解集空间都有应用. 1. SVD 的形式

机器学习中的矩阵方法03:QR 分解

1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其中, Q 是一个标准正交方阵, R 是上三角矩阵. 2. QR 分解的求解 QR 分解的实际计算有很多方法,例如 Givens 旋转.Householder 变换,以及 Gram-Schmidt 正交化等等.每一种方法都有其优点和不足.上一篇博客介绍了 Givens 旋转和 Householder