隐语义模型(LFM)的原理与矩阵分解过程
字数 2710 2025-11-02 00:38:37
隐语义模型(LFM)的原理与矩阵分解过程
题目描述
隐语义模型(Latent Factor Model, LFM)是推荐系统中一种经典的协同过滤算法。它通过矩阵分解技术,将用户-物品评分矩阵分解为用户隐因子矩阵和物品隐因子矩阵,从而挖掘用户和物品背后潜在的隐含特征(即隐语义)。核心问题是如何将一个已知部分评分的矩阵 \(R_{m \times n}\)(m个用户,n个物品)分解为两个低维矩阵 \(P_{m \times k}\) 和 \(Q_{n \times k}\) 的乘积,使得 \(R \approx P \times Q^T\),并利用分解后的矩阵预测缺失的评分。
解题过程
-
问题建模
- 目标:预测用户 \(u\) 对物品 \(i\) 的未知评分 \(r_{ui}\)。
- 假设:存在k个隐因子(如电影的风格:动作、浪漫、科幻等)。每个用户对各个隐因子有一个偏好程度(用户隐因子向量 \(p_u \in \mathbb{R}^k\)),每个物品在各个隐因子上的归属程度(物品隐因子向量 \(q_i \in \mathbb{R}^k\))。
- 模型:预测评分 \(\hat{r}_{ui}\) 通过用户向量和物品向量的内积计算:\(\hat{r}_{ui} = p_u \cdot q_i^T = \sum_{f=1}^{k} p_{uf} q_{if}\)。
- 矩阵形式:目标是最小化预测评分与真实评分之间的差异,即最小化损失函数。
-
定义损失函数
- 采用平方误差损失函数,并加入L2正则化项防止过拟合。
- 损失函数 \(J\) 定义为:
\(J = \sum_{(u, i) \in \mathcal{K}} (r_{ui} - p_u \cdot q_i^T)^2 + \lambda (\|p_u\|^2 + \|q_i\|^2)\)
其中:- \(\mathcal{K}\) 是所有已知评分的用户-物品对的集合。
- \(r_{ui}\) 是用户 \(u\) 对物品 \(i\) 的真实评分。
- \(\hat{r}_{ui} = p_u \cdot q_i^T\) 是预测评分。
- \(\lambda\) 是正则化系数,控制正则化项的强度。
- \(\|p_u\|^2\) 和 \(\|q_i\|^2\) 是用户向量和物品向量的L2范数平方。
-
优化算法:随机梯度下降(SGD)
- 目标是通过调整参数 \(p_u\) 和 \(q_i\) 最小化损失函数 \(J\)。
- 梯度计算:分别计算损失函数 \(J\) 对用户隐因子向量 \(p_{uf}\) 和物品隐因子向量 \(q_{if}\) 的偏导数。
- 对 \(p_{uf}\) 求偏导:\(\frac{\partial J}{\partial p_{uf}} = -2(r_{ui} - \hat{r}_{ui}) q_{if} + 2\lambda p_{uf}\)
- 对 \(q_{if}\) 求偏导:\(\frac{\partial J}{\partial q_{if}} = -2(r_{ui} - \hat{r}_{ui}) p_{uf} + 2\lambda q_{if}\)
- 参数更新:沿着梯度的反方向更新参数,学习率 \(\gamma\) 控制步长。
- \(p_{uf} \leftarrow p_{uf} + \gamma \left( (r_{ui} - \hat{r}_{ui}) \cdot q_{if} - \lambda p_{uf} \right)\)
- \(q_{if} \leftarrow q_{if} + \gamma \left( (r_{ui} - \hat{r}_{ui}) \cdot p_{uf} - \lambda q_{if} \right)\)
-
算法步骤
- 输入:用户-物品评分矩阵 \(R\)(已知部分),隐因子数量 \(k\),学习率 \(\gamma\),正则化系数 \(\lambda\),迭代次数 \(epochs\)。
- 初始化:随机初始化用户隐因子矩阵 \(P\) 和物品隐因子矩阵 \(Q\)(通常用小的随机值,如服从均值为0的正态分布)。
- 迭代训练:
For epoch in 1 to epochs:
For 每个已知评分 \((u, i, r_{ui})\) in \(R\):
1. 计算当前预测评分误差:\(e_{ui} = r_{ui} - p_u \cdot q_i^T\)
2. 对于每个隐因子 \(f\) 从1到 \(k\):
* 更新用户隐因子:\(p_{uf} \leftarrow p_{uf} + \gamma (e_{ui} \cdot q_{if} - \lambda \cdot p_{uf})\)
* 更新物品隐因子:\(q_{if} \leftarrow q_{if} + \gamma (e_{ui} \cdot p_{uf} - \lambda \cdot q_{if})\) - 输出:训练好的用户隐因子矩阵 \(P\) 和物品隐因子矩阵 \(Q\)。
- 预测:对于任意用户 \(u\) 和物品 \(i\),预测评分为 \(\hat{r}_{ui} = p_u \cdot q_i^T\)。
-
关键点与扩展
- 隐因子的含义:隐因子是模型自动学习到的,通常没有直接的物理意义,但可以解释为一些抽象的特征维度。
- 偏置项:为了更精确,模型常加入全局平均评分 \(\mu\)、用户偏置 \(b_u\)(用户评分习惯偏离均值的程度)、物品偏置 \(b_i\)(物品受欢迎程度偏离均值的程度)。预测评分变为:\(\hat{r}_{ui} = \mu + b_u + b_i + p_u \cdot q_i^T\)。
- 交替最小二乘法(ALS):另一种优化方法,固定 \(Q\) 优化 \(P\),再固定 \(P\) 优化 \(Q\),交替进行,适用于并行化处理。
- 应用:LFM是许多现代推荐系统(如Netflix Prize比赛中)的基础,也是更复杂模型(如SVD++)的核心组件。