矩阵分解

8/2/2021 矩阵分解

# 矩阵分解的原理是什么?求解的主要方法有哪些?

矩阵分解算法期望为每一个用户和物品生成一个隐向量,将用户和物品定位到隐向量的表示空间上,距离相近的用户和视频表明兴趣特点接近,推荐过程中把距离相近的视频推荐给目标用户。

具体地,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的,它将维的共现矩阵分解为维的用户矩阵的物品矩阵相乘的形式。其中是用户数量,是物品数量,是隐向量的维度,示意如下:

基于用户矩阵和物品矩阵,用户对物品的预估评分如下,其中是用户在用户矩阵中的对应行向量,是物品在物品矩阵中的对应列向量:

矩阵分解主要方法有特征值分解、奇异值分解和梯度下降。其中特征值分解只能用于方阵,不适用于分解用户-物品。奇异值分解在互联网场景下复杂度和适用性不足,梯度下降是常用的求解方法。

# 使用奇异值分解SVD进行矩阵分解时存在哪些问题?

SVD分解的形式为3个矩阵相乘,左右两个矩阵分别表示用户/项目隐含因子矩阵,中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小。

SVD分解的前提是要求矩阵是稠密的,即矩阵里的元素要非空,否则就无法运用SVD分解.

所以在分解之前必须要先使用均值或者其他方法进行矩阵填充为稠密矩阵,再进行SVD分解降维。

# 如何从深度学习模型的角度来认识矩阵分解模型

矩阵分解层的用户隐向量和物品隐向量可以看做是一种Embedding方法,最终的Scoring层就是将用户隐向量和物品隐向量进行内积操作后得到“相似度”,这里的“相似度”就是对评分的预测。

实际使用矩阵分解训练和评估模型的过程中,因为矩阵分解的模型结构相对简单,而且输出层无法对优化目标进行有效的拟合,往往会发现模型容易处于欠拟合的状态。

# 矩阵分解算法中,隐向量的长度k的取值是如何影响效果和工程开销的?

矩阵分解中,表示的是隐向量的长度,的大小决定了隐向量表达能力的强弱。的取值越小,隐向量包含的信息越少,模型的泛化能力越高;反之,的取值越大,隐向量的表达能力越强,但泛化能力相应降低。

此外,的取值与矩阵分解的求解复杂程度直接相关,的取值越大,求解复杂度就越大,反之就越小。实际应用中,的取值要经过多次试验找到一个推荐效果和工程开销的平衡点。

# 请简述奇异值分解的过程。奇异值分解存在什么缺陷?为什么不适用于互联网场景下的求解?

假设共现矩阵是一个的矩阵,则一定存在一个分解,其中的正交矩阵,的正交矩阵,的对角阵。

取对角阵中较大的k个元素作为隐含特征,删除其他维度以及中对应的维度,矩阵被分解为,即完成矩阵分解。

但奇异值分解存在着两点缺陷,使之不适用于互联网场景下的矩阵分解求解:

1)奇异值分解要求原始的共现矩阵是稠密的。而互联网场景下大部分用户的行为历史非常少,用户-物品的共现矩阵非常稀疏,如果应用奇异值分解,就必须对缺失的元素值进行填充。

2)传统奇异值分解的计算复杂度达到了的级别,这对于商品数量上千万、用户数量上百万的互联网场景是不可接受的。

# 请简述梯度下降法求解用户-物品隐向量的过程。

根据预估评分得到求解矩阵分解的目标函数,其目的是让原始评分与用户向量和物品向量之积的差尽量小,这样才可以最大限度地保存共现矩阵的原始信息。

为减少过拟合,加入正则化项:

求偏导,得到:

求偏导,得到:

然后沿着梯度反向更新参数:

当迭代次数超过上限或损失函数值低于阈值时,结束训练。

# 如何解决矩阵分解中用户和物品打分偏差的问题?

不同用户的打分体系不一样,不同物品的衡量标准也不同,为了消除用户和物品的打分偏差,可以再矩阵分解时加入用户和物品的偏差向量:

其中是全局偏差常数,是物品偏差系数,可使用物品收到的所有评分的均值,是用户偏差系数,可使用用户给出的所有评分的均值。加入用户和物品打分偏差项之后,矩阵分解得到的隐向量更能反映不同用户对不同物品的“真实”态度差异,避免推荐结果有偏。

此时,矩阵分解目标函数也发生相应改变:

# 如何将隐式反馈信息用于用户偏好建模的矩阵分解中?

用户除了对于项目的显式历史评分记录外,浏览记录或者收藏列表等隐反馈信息同样可以从侧面一定程度上反映用户的偏好,比如用户对某个项目进行了收藏,可以从侧面反映他对于这个项目感兴趣,具体反映到预测公式为:

其中为用户所产生隐反馈行为的物品集合;为隐藏的对于项目的个人喜好偏置,是一个我们所要学习的参数;至于是一个经验公式。

# 如何将用户的兴趣随时间动态变化的这一点融合到矩阵分解模型中?

用户的兴趣或者偏好不是一成不变的,而是随着时间而动态演化。于是提出了timeSVD,其中用户的和物品的偏置随着时间而变化,同时用户的隐含因子也随着时间而动态改变,在此物品的隐含表示并未随时间而变化(假设物品的属性不会随着时间而改变)。

其中, 为时间因子,表示不同的时间状态。

# 为什么矩阵分解出来的矩阵需要满足非负约束?

在大部分方法中,原始矩阵被近似分解为两个低秩矩阵相乘的形式,这些方法的共同之处是,即使原始矩阵的元素都是非负的,也不能保证分解出的小矩阵都为非负,这就导致了推荐系统中经典的矩阵分解方法可以达到很好的预测性能,但不能做出像User-based CF那样符合人们习惯的推荐解释。在数学意义上,分解出的结果是正是负都没关系,只要保证还原后的矩阵元素非负并且误差尽可能小即可,但负值元素往往在现实世界中是没有任何意义的。比如图像数据中不可能存在是负数的像素值,因为取值在0~255之间;在统计文档的词频时,负值也是无法进行解释的。因此提出带有非负约束的矩阵分解NMF是对于传统的矩阵分解无法进行科学解释做出的一个尝试。它的公式如下:

其中,两个矩阵中的元素满足非负约束。