趋近智
奇异值分解 (SVD) 是用于矩阵分解的一种基础线性代数技术。它提供了一种规范的方法,将任何矩阵分解为另外三个矩阵的乘积,从而展示其内在结构并帮助发现隐含特征。
从形式上讲,SVD 表明任何大小为 的矩形矩阵 (代表 个用户和 个物品)都可以分解为三个矩阵:
让我们分析每一个组成部分:
将用户-物品矩阵 分解为三个不同的矩阵:、 和 。
将这种“纯粹”形式的 SVD 直接应用于推荐问题时面临一个挑战:它要求矩阵是完整的,没有缺失值。而我们的用户-物品交互矩阵 几乎总是稀疏的,这意味着大多数条目是未知的。如果我们用零来填充缺失项,算法会将其误认为实际评分为 0,这会使结果产生严重偏差。
因此,我们并不直接使用经典的 SVD 算法,而是采用受 SVD 启发的方法。这些方法旨在找到能够近似原始矩阵的因子矩阵,但仅针对已知的评分。此时的目标不再是完美地重构 ,而是找到最能体现已观测到的用户-物品交互的隐含特征矩阵 (代表用户)和 (代表物品)。
在推荐系统文献中,这种改进方法通常仍被称为 SVD,尽管它在技术上是一种近似。其目的是找到 和 ,使得它们的乘积 能够很好地近似 。
SVD 在推荐系统中的真正作用来自于降维。 矩阵中的奇异值按重要性排序。第一个奇异值对应数据中最显著的模式,第二个对应次显著的模式,依此类推。许多靠后的奇异值通常很小,可以被视为噪声。
我们可以通过仅保留前 个隐含特征来利用这一点,其中 是一个远小于原始用户或物品数量的数值。这个过程被称为截断 SVD (Truncated SVD)。我们减小了矩阵的维度:
我们对评分矩阵的新近似值 为:
这有两个主要好处:
使用截断矩阵对 进行近似,其中 是隐含特征的数量。这降低了维度并捕捉了最显著的模式。
一旦模型学习到了用户特征矩阵 (类似于 )和物品特征矩阵 (类似于 ),进行预测就变得非常直接。
每个用户 由长度为 的向量 (vector) 表示,每个物品 由长度为 的向量 表示。预测评分 就是这两个向量的点积:
这个点积衡量了用户偏好与物品特征在学习到的隐含空间中的匹配程度。如果用户向量在某些特征上的值较高,而物品向量在相同特征上的值也较高,那么预测评分就会很高。
因此,主要任务是找到矩阵 和 的值。由于我们无法在稀疏矩阵上使用经典 SVD,我们必须转向其他方法。我们将问题重新定义为一个优化任务:找到能够使已知评分的预测误差最小化的隐含特征。下一节将介绍如何使用名为随机梯度下降 (gradient descent)的迭代优化算法来实现这一目标。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造