矩阵分解

矩阵分解算法为每个用户和物品生成一个隐向量,将用户和视频定位到隐向量空间中,距离相近的用户和视频表名兴趣点相近,就一年将距离相近的视频推荐给目标用户。

矩阵分解算法框架:

深度学习中的矩阵论 深度矩阵分解_奇异值分解

矩阵分解算法将mxn的共现矩阵R分解为mxk维的用户矩阵U和kxn维的物品矩阵V相乘的形式,其中m是用户数量,n是物品数量,k是隐向量的维度。k的大小决定了隐向量表达能力的强弱,k的取值越小,隐向量包含的信息越少,模型泛化能力越高,反之,k越大,包含的信息越大,模型的泛化能能力越小。此外,k的取值还与矩阵分解的求解复杂度直接相关。

基于用户矩阵U和物品矩阵V,用户u对物品i的预估值:

深度学习中的矩阵论 深度矩阵分解_矩阵分解_02

pu是用户u在用户矩阵U中的对应行向量,qi是物品i在物品矩阵V中的对应列向量。

2.3.2矩阵分解的求解过程

对矩阵分解的方法主要有三种:特征值分解、奇异值分解、和梯度下降,但是特征值分解只能用于方阵,不适用于用户-物品矩阵。

SVD分解的具体过程:

假设矩阵M是一个mxn的矩阵,则一定存在一个分解

深度学习中的矩阵论 深度矩阵分解_泛化_03

  ,其中U是mxm的正交矩阵,V是nxn的正交矩阵,

深度学习中的矩阵论 深度矩阵分解_深度学习中的矩阵论_04

  是mxn的对角矩阵。取对角阵

深度学习中的矩阵论 深度矩阵分解_深度学习中的矩阵论_05

中较大的k个元素作为隐含特征,删除

深度学习中的矩阵论 深度矩阵分解_泛化_06

的其他维度及U和V中对应的维度,矩阵M被分解为

深度学习中的矩阵论 深度矩阵分解_深度学习中的矩阵论_07

  ,至此完成了隐向量的维度为k的矩阵分解。

SVD的缺点:

1,奇异值分解要求原始的共现矩阵是稠密的,但,实际情况,用户-项目矩阵是稀疏的。如果应用奇异值分解,就必须对其进行缺失值填充。

2,传统的奇异值分解的计算复杂度达到了O(mn2)的级别,这对商品数量动辄上百万、千万的互联网几乎不可能接受。

SVD的目标函数:

深度学习中的矩阵论 深度矩阵分解_矩阵分解_08

 

SVD梯度下降求解目标函数

1,确定目标函数

深度学习中的矩阵论 深度矩阵分解_奇异值分解_09

2,对目标函数求偏导

结果:对qi求偏导:

深度学习中的矩阵论 深度矩阵分解_泛化_10

对pu求偏导

深度学习中的矩阵论 深度矩阵分解_矩阵分解_11

3,利用2求导的结果,沿梯度的反方向更新参数:

深度学习中的矩阵论 深度矩阵分解_奇异值分解_12

深度学习中的矩阵论 深度矩阵分解_奇异值分解_13

4,当迭代达到上限n时,或者低于设定的阈值时,结束训练,否则循环第3步骤。

当矩阵分解完成分解过程后,即可得到用户和物品的隐向量。在对某用户进行推荐时,可以利用该用户的隐向量进行逐行统一內积运算,得出该用户对所有物品的评分预测,再次依次进行排序,得到最终的推荐列表。

因此矩阵分解较协同过滤有更好的泛化能力,由于隐向量的存在,使得任意的用户和物品之间都可以得到预测值,隐向量的生成其实是对共现矩阵进行全局拟合的过程,因此隐向量其实是利用全局信息生成的,有更强的泛化能力。

2.3.3消除用户和物品的打分偏差

为消除用户和物品之间存在的打分偏差则有

深度学习中的矩阵论 深度矩阵分解_矩阵分解_14

第一项是全局偏差,bi是物品偏差(物品i收到的所有评分的均值),bu是用户偏差(用户所有评分的均值),此时矩阵分解的目标函数为:

深度学习中的矩阵论 深度矩阵分解_深度学习中的矩阵论_15

矩阵分解的优缺点

优点:

1,泛化能力强,在一定程度上解决了数据稀疏的问题

2,空间复杂度低:不需要存储庞大的用户和物品的相似度矩阵,只需要存储用户和物品的隐向量。

3,更好的扩展性和灵活性:分解后得到用户和物品的隐向量,便于深度学习网络进行无缝结合。

缺点

矩阵分解你不方便加入用户、物品和上下文相关特征,使得就还早呢分解丧失了利用很多有效信息的机会。同时缺乏对用户历史行为,无法进行有效的推荐。