推荐系统是现代互联网服务的核心组件,而矩阵分解技术则是其数学基石。本章深入探讨在处理数十亿用户和数百万物品时,如何设计和优化矩阵计算方法。我们将重点关注隐式反馈场景——这是实际系统中最常见但也最具挑战性的设置。通过学习本章,读者将掌握工业级推荐系统背后的核心矩阵技术,理解从理论到实践的关键权衡,并能够设计适合特定场景的高效算法。
在显式评分系统中,用户主动为物品打分(如1-5星),我们可以直接将评分矩阵 $\mathbf{R} \in \mathbb{R}^{m \times n}$ 分解为: \(\mathbf{R} \approx \mathbf{P}\mathbf{Q}^T\) 其中 $\mathbf{P} \in \mathbb{R}^{m \times k}$ 是用户因子矩阵,$\mathbf{Q} \in \mathbb{R}^{n \times k}$ 是物品因子矩阵。
然而,隐式反馈(点击、浏览、购买等)带来了根本性的挑战:
数学建模的范式转变:
从概率角度,显式评分可以建模为: \(P(r_{ui} | \mathbf{p}_u, \mathbf{q}_i) = \mathcal{N}(r_{ui}; \mathbf{p}_u^T\mathbf{q}_i, \sigma^2)\)
而隐式反馈需要考虑两阶段过程:
| 观察过程:$\text{observed}_{ui} | \text{preference}{ui} \sim \text{Bernoulli}(p{\text{obs}})$ |
这导致我们需要重新设计目标函数: \(\min_{\mathbf{P},\mathbf{Q}} \sum_{(u,i) \in \mathcal{D}} c_{ui}(p_{ui} - \mathbf{p}_u^T\mathbf{q}_i)^2 + \lambda(\|\mathbf{P}\|_F^2 + \|\mathbf{Q}\|_F^2)\)
其中 $c_{ui}$ 是置信度权重,$p_{ui}$ 是偏好指示器(通常二值化)。
数学本质:从期望最大化(EM)角度理解
理论联系:隐式反馈矩阵分解与其他机器学习方法的深层联系:
与排序学习的关系: 隐式反馈MF可以视为全局排序模型: \(P(i \succ j | u) = \sigma(\mathbf{p}_u^T(\mathbf{q}_i - \mathbf{q}_j))\)
与点过程的联系: 用户行为序列可建模为标记时空点过程: \(\lambda(t,i|u) = \mu_i \cdot \exp(\mathbf{p}_u^T\mathbf{q}_i) \cdot g(t-t_{\text{last}})\)
与图神经网络的对应: 矩阵分解等价于在二部图上的浅层图嵌入: \(\mathbf{h}_u = \text{Aggregate}(\{\mathbf{q}_i : i \in \mathcal{N}(u)\})\)
实践考虑:工业系统中的额外复杂性
多设备行为聚合: \(c_{ui} = f_{\text{device}}(\{c_{ui}^{(d)} : d \in \text{devices}(u)\})\) 需要识别和合并跨设备的用户身份
会话内行为建模: 短期兴趣与长期偏好的分离: \(\mathbf{p}_u(t) = \alpha \mathbf{p}_u^{\text{long}} + (1-\alpha) \mathbf{p}_u^{\text{session}}(t)\)
位置偏差校正: \(c_{ui} = c_{ui}^{\text{raw}} \cdot \frac{1}{b_{\text{position}}(k)}\) 其中 $k$ 是物品在列表中的位置
置信度矩阵 $\mathbf{C}$ 的设计直接影响模型质量。经典的Hu等人提出的线性置信度函数: \(c_{ui} = 1 + \alpha \cdot r_{ui}\) 其中 $r_{ui}$ 是原始交互强度(如播放次数)。
理论基础:将置信度视为观测噪声的倒数 \(\text{Var}[\epsilon_{ui}] = \frac{\sigma^2}{c_{ui}}\) 这意味着交互次数越多,观测越可靠,方差越小。
从信息论角度理解置信度: 置信度可以解释为每次观察提供的信息量: \(I(r_{ui}; r_{ui}^*) = \frac{1}{2}\log\left(1 + \frac{c_{ui}\sigma_r^2}{\sigma_\epsilon^2}\right)\) 其中 $r_{ui}^*$ 是真实偏好,$\sigma_r^2$ 是偏好方差,$\sigma_\epsilon^2$ 是观测噪声方差。
高级置信度设计考虑因素:
实用性扩展:
自适应置信度学习: 使用元学习优化置信度函数参数: \(\alpha^* = \arg\min_\alpha \mathbb{E}_{\mathcal{T} \sim p(\mathcal{T})}[\mathcal{L}_{\text{val}}(\mathcal{T}, \alpha)]\)
MAML风格的置信度元学习:
对于每个任务 T(如不同类目):
1. 初始化置信度参数 α
2. 在T的训练集上进行k步梯度下降得到 α'_T
3. 在T的验证集上评估 L(α'_T)
4. 更新元参数:α ← α - η∇_α Σ_T L(α'_T)
高级置信度建模技术:
概率置信度: 使用贝塔分布建模不确定性: \(c_{ui} \sim \text{Beta}(\alpha_{ui}, \beta_{ui})\) 其中 $\alpha_{ui} = 1 + n_{ui}^+$(正交互次数),$\beta_{ui} = 1 + n_{ui}^-$(负交互次数)
神经置信度网络: \(c_{ui} = \text{NN}_\phi([\mathbf{u}_{\text{feat}}, \mathbf{i}_{\text{feat}}, \mathbf{x}_{ui}])\) 端到端学习复杂的置信度模式
因果置信度: 考虑混淆因子的影响: \(c_{ui} = \frac{P(r_{ui}|do(expose_i))}{P(r_{ui}|expose_i)}\) 通过因果推断估计真实的兴趣强度
置信度的数值稳定性考虑:
截断处理: \(c_{ui} = \min(\max(c_{ui}, c_{\min}), c_{\max})\) 典型值:$c_{\min} = 1$, $c_{\max} = 1000$
平滑处理: \(c_{ui} = \frac{c_{ui} + \epsilon}{1 + \epsilon}\) 避免极端值导致的数值问题
对数变换: 对于重尾分布的交互次数: \(c_{ui} = 1 + \alpha \log(1 + r_{ui})\)
标准L2正则化假设所有参数同等重要,但在隐式反馈中,我们需要考虑:
用户侧加权正则化: \(R_u(\mathbf{p}_u) = \lambda_u \|\mathbf{p}_u\|^2, \quad \lambda_u = \lambda \cdot n_u^{-\beta}\) 其中 $n_u$ 是用户交互数,$\beta \in [0,1]$ 控制正则化强度的衰减。
推导:从最大后验(MAP)估计出发 \(\mathbf{p}_u^* = \arg\max_{\mathbf{p}_u} p(\mathbf{p}_u|\mathcal{D}_u) = \arg\max_{\mathbf{p}_u} p(\mathcal{D}_u|\mathbf{p}_u)p(\mathbf{p}_u)\)
用户活跃度越高,先验的影响应该越小: \(p(\mathbf{p}_u) = \mathcal{N}(0, \frac{\sigma^2}{n_u^\beta}\mathbf{I})\)
信息论解释: 用户交互数可视为有效样本大小,根据最小描述长度(MDL)原理: \(\text{MDL} = -\log p(\mathcal{D}_u|\mathbf{p}_u) + \frac{k}{2}\log n_u\) 第二项自然导出与 $n_u$ 相关的正则化。
物品侧自适应正则化: \(R_i(\mathbf{q}_i) = \lambda_i \|\mathbf{q}_i - \mathbf{q}_i^{(0)}\|^2\) 其中 $\mathbf{q}_i^{(0)}$ 是基于内容的先验嵌入。
分层贝叶斯解释: \(\mathbf{q}_i \sim \mathcal{N}(\mathbf{q}_i^{(0)}, \sigma_i^2\mathbf{I})\) \(\mathbf{q}_i^{(0)} = f_{\text{content}}(\mathbf{x}_i)\)
先验学习: 使用变分自编码器学习物品先验分布: \(q(\mathbf{q}_i^{(0)}|\mathbf{x}_i) = \mathcal{N}(\mu_\phi(\mathbf{x}_i), \text{diag}(\sigma^2_\phi(\mathbf{x}_i)))\)
理论依据:从贝叶斯角度,这相当于对参数施加不同方差的高斯先验: \(p(\mathbf{p}_u) \propto \exp\left(-\frac{\lambda_u}{2}\|\mathbf{p}_u\|^2\right)\)
高级正则化技术:
近端梯度算法求解: \(\mathbf{p}_u^{(t+1)} = \text{prox}_{\lambda R}(\mathbf{p}_u^{(t)} - \eta \nabla \mathcal{L})\) 其中近端算子有闭式解。
图正则化: 构建用户-用户相似图 $\mathcal{G}_u = (\mathcal{V}_u, \mathcal{E}_u, \mathbf{W}_u)$: \(R_{\text{graph}}(\mathbf{P}) = \frac{\lambda_g}{2} \sum_{(u,v) \in \mathcal{E}_u} w_{uv}\|\mathbf{p}_u - \mathbf{p}_v\|^2\)
谱分析: \(R_{\text{graph}}(\mathbf{P}) = \lambda_g \cdot \text{tr}(\mathbf{P}^T\mathbf{L}_u\mathbf{P})\) 其中 $\mathbf{L}_u = \mathbf{D}_u - \mathbf{W}_u$ 是图拉普拉斯矩阵。
时变正则化: 考虑用户兴趣漂移: \(R_t(\mathbf{p}_u) = \lambda_t \|\mathbf{p}_u^{(t)} - \mathbf{p}_u^{(t-1)}\|^2\)
卡尔曼滤波视角:
状态方程:p_u(t) = p_u(t-1) + w_u(t), w_u ~ N(0, Q)
观测方程:r_ui(t) = p_u(t)^T q_i + v_ui(t), v_ui ~ N(0, R)
对抗正则化: 提高模型鲁棒性: \(R_{\text{adv}}(\mathbf{P}, \mathbf{Q}) = \lambda_{\text{adv}} \max_{\|\delta\|_2 \leq \epsilon} \mathcal{L}(\mathbf{P} + \delta_P, \mathbf{Q} + \delta_Q)\)
使用FGSM近似: \(\delta_P = \epsilon \cdot \text{sign}(\nabla_P \mathcal{L})\)
正则化的自适应选择:
经验贝叶斯方法: 通过最大化边际似然自动确定正则化强度: \(\lambda^* = \arg\max_\lambda \int p(\mathcal{D}|\mathbf{P}, \mathbf{Q}) p(\mathbf{P}, \mathbf{Q}|\lambda) d\mathbf{P}d\mathbf{Q}\)
使用拉普拉斯近似: \(\log p(\mathcal{D}|\lambda) \approx \log p(\mathcal{D}|\hat{\mathbf{P}}, \hat{\mathbf{Q}}) - \frac{1}{2}\log\det(\mathbf{H} + \lambda\mathbf{I})\)
多任务学习正则化: 当有多个相关推荐任务时: \(R_{\text{MTL}} = \sum_{t=1}^T \lambda_t \|\mathbf{P}^{(t)}\|_F^2 + \lambda_{\text{share}}\sum_{t \neq s}\|\mathbf{P}^{(t)} - \mathbf{P}^{(s)}\|_F^2\)
促进任务间的知识共享。
正则化与优化的交互:
隐式正则化: SGD本身具有隐式正则化效果: \(\mathbf{p}_u^{(t+1)} = \mathbf{p}_u^{(t)} - \eta \nabla_{\mathcal{B}} \mathcal{L}\)
| 其中批量大小 $ | \mathcal{B} | $ 和学习率 $\eta$ 的比值 $\eta/ | \mathcal{B} | $ 控制隐式正则化强度。 |
正则化路径算法: 高效计算不同 $\lambda$ 下的解: \(\{\mathbf{P}(\lambda), \mathbf{Q}(\lambda)\}_{\lambda \in [\lambda_{\min}, \lambda_{\max}]}\)
利用解的分段线性性质,通过跟踪关键点高效求解。
最新研究将隐式反馈建模为带有选择偏差的因果推断问题:
倾向分数加权: \(\mathcal{L} = \sum_{(u,i) \in \mathcal{D}} \frac{1}{p(o_{ui}=1|u,i)} \ell(r_{ui}, \hat{r}_{ui})\)
关键挑战:
| 倾向分数 $p(o_{ui}=1 | u,i)$ 通常未知 |
反事实风险最小化: \(\mathcal{L}_{IPS} = \frac{1}{|\mathcal{D}|}\sum_{(u,i) \in \mathcal{D}} \frac{\ell(r_{ui}, \hat{r}_{ui})}{p(o_{ui}=1)} + \lambda R(\theta)\)
稳定化技术:
双鲁棒估计: 结合直接方法和倾向分数方法: \(\hat{r}_{DR} = \hat{r}_{DM} + \frac{o_{ui}}{p(o_{ui}=1)}(r_{ui} - \hat{r}_{DM})\)
即使倾向分数或直接模型之一有误差,仍能保持一致性
因果嵌入: 学习满足因果约束的表示: \(\mathbf{p}_u \perp\!\!\!\perp \mathbf{e}_u | \mathbf{z}_u\) 其中 $\mathbf{e}_u$ 是混淆因子,$\mathbf{z}_u$ 是因果表示
前沿研究方向:
去混淆表示学习: \(\min_{\theta} \mathcal{L}_{rec} + \alpha \cdot I(\mathbf{Z}; \mathbf{E})\) 最小化因果表示与混淆因子的互信息
因果效应估计: \(\text{ATE} = \mathbb{E}[Y(1) - Y(0)]\) 估计推荐某物品的平均处理效应
敏感性分析: 量化未观测混淆的影响: \(\Gamma = \max_{u,i,j} \frac{p(o_{ui}=1|u,j)p(o_{uj}=1|u,i)}{p(o_{ui}=1|u,i)p(o_{uj}=1|u,j)}\)
这为处理推荐系统中的偏差问题开辟了新方向,特别是在公平性和可解释性日益重要的背景下。
ALS-WR (Alternating Least Squares with Weighted Regularization) 的核心是交替固定一组参数,优化另一组。对于用户 $u$,更新方程为:
\[\mathbf{p}_u = (\mathbf{Q}^T\mathbf{C}^u\mathbf{Q} + \lambda\mathbf{I})^{-1}\mathbf{Q}^T\mathbf{C}^u\mathbf{p}(u)\]其中 $\mathbf{C}^u$ 是用户 $u$ 的对角置信度矩阵。
计算复杂度分解:
关键优化:预计算 $\mathbf{Q}^T\mathbf{Q}$,复杂度降至 $O(n_u k^2)$。
详细算法分析:
矩阵分解技巧: \(\mathbf{Q}^T\mathbf{C}^u\mathbf{Q} = \mathbf{Q}^T\mathbf{Q} + \mathbf{Q}^T(\mathbf{C}^u - \mathbf{I})\mathbf{Q}\)
由于 $\mathbf{C}^u - \mathbf{I}$ 只在用户交互的物品上非零: \(\mathbf{Q}^T(\mathbf{C}^u - \mathbf{I})\mathbf{Q} = \sum_{i \in \mathcal{I}_u} (c_{ui} - 1)\mathbf{q}_i\mathbf{q}_i^T\)
用户更新阶段 (每个用户):
总复杂度: O(n_u k^2 + k^3) ```
大规模部署需要精心设计的分布式策略:
详细实现:
节点 p 负责用户集 U_p:
1. 广播接收全局 Q 矩阵
2. 并行更新 P[U_p]
3. 计算局部物品梯度 ΔQ_p
4. All-reduce 聚合 ΔQ = Σ_p ΔQ_p
5. 本地更新 Q 矩阵
通信优化:
2D分块策略: \(\begin{bmatrix} \mathbf{P}_{11} & \mathbf{P}_{12} & \cdots \\ \mathbf{P}_{21} & \mathbf{P}_{22} & \cdots \\ \vdots & \vdots & \ddots \end{bmatrix}\)
每个节点 $(i,j)$ 负责 $\mathbf{P}{ij}$ 和 $\mathbf{Q}{ij}$
参数服务器架构:
通信量分析:
一致性保证:
数值稳定性保障:
条件数控制: \(\kappa(\mathbf{A}) = \frac{\lambda_{\max}(\mathbf{A})}{\lambda_{\min}(\mathbf{A})} < \tau\) 通过自适应正则化保证:$\lambda = \max(\lambda_0, \epsilon \cdot |\mathbf{Q}^T\mathbf{C}^u\mathbf{Q}|_F)$
Cholesky分解的增量更新: 对于稀疏更新,使用 Sherman-Morrison 公式: \((\mathbf{A} + \mathbf{u}\mathbf{v}^T)^{-1} = \mathbf{A}^{-1} - \frac{\mathbf{A}^{-1}\mathbf{u}\mathbf{v}^T\mathbf{A}^{-1}}{1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u}}\)
收敛加速技术:
动量方法: \(\mathbf{p}_u^{(t+1)} = \mathbf{p}_u^{(t)} + \alpha \Delta\mathbf{p}_u^{(t)} + \beta(\mathbf{p}_u^{(t)} - \mathbf{p}_u^{(t-1)})\)
自适应学习率: 基于局部Lipschitz常数估计: \(\alpha_u = \min\left(1, \frac{c}{\|\nabla_{\mathbf{p}_u} \mathcal{L}\|}\right)\)
异步更新协议:
现代硬件架构需要算法层面的适配:
posix_memalign 确保64字节对齐cublasXgemmBatched 批量小矩阵运算负采样是隐式反馈系统的核心技术。给定正样本集 $\mathcal{D}^+$,我们需要从未观察到的 $(u,i)$ 对中采样负例。
流行的采样分布:
均匀采样: \(P_{\text{unif}}(i|u) = \frac{1}{|\mathcal{I} \setminus \mathcal{I}_u|}\) 简单但可能低估流行物品的负面信号。
流行度比例采样: \(P_{\text{pop}}(i|u) = \frac{f_i^\alpha}{\sum_{j \notin \mathcal{I}_u} f_j^\alpha}\) 其中 $f_i$ 是物品频率,$\alpha \in [0,1]$ 控制偏斜程度。
自适应采样: 基于当前模型预测: \(P_{\text{adapt}}(i|u) \propto \sigma(\mathbf{p}_u^T\mathbf{q}_i)\) 类似于重要性采样,聚焦于”困难”负例。
使用非均匀采样时,需要校正引入的偏差:
基础重要性采样: \(\mathbb{E}_{i \sim P}[\frac{Q(i)}{P(i)} \cdot \ell(u,i)] = \mathbb{E}_{i \sim Q}[\ell(u,i)]\)
在负采样中的应用: \(\mathcal{L}_{\text{unbiased}} = \sum_{(u,i) \in \mathcal{D}^+} \ell^+(u,i) + \sum_{j=1}^{K} \frac{1}{P(i_j^-|u)} \ell^-(u,i_j^-)\)
| 其中 $i_j^- \sim P(\cdot | u)$ 是采样的负例。 |
方差减少技术:
控制变量法: \(\tilde{\ell}(u,i) = \ell(u,i) - c(\ell(u,i) - \mu)\) 其中 $\mu = \mathbb{E}[\ell]$ 可以在线估计。
分层采样: 将物品按流行度分桶,每桶独立采样: \(\mathcal{I} = \bigcup_{b=1}^{B} \mathcal{I}_b, \quad K_b = K \cdot \frac{|\mathcal{I}_b|}{|\mathcal{I}|}\)
动态困难度感知采样:
基于梯度的重要性: \(P(i|u) \propto \|\nabla_{\mathbf{q}_i} \ell(u,i)\|^2\)
不确定性采样: 使用参数的后验分布: \(P(i|u) \propto \text{Var}[\mathbf{p}_u^T\mathbf{q}_i]\)
多目标采样: 同时优化多个目标(如覆盖度、多样性): \(P(i|u) = \sum_{k=1}^{K} w_k P_k(i|u)\) 其中权重 $w_k$ 可以动态调整。
收敛速率分析: 在适当的假设下,使用 $K$ 个负样本的SGD收敛速率为: \(\mathbb{E}[\|\mathbf{w}^{(t)} - \mathbf{w}^*\|^2] \leq \frac{C}{t} + \frac{D}{K}\)
其中第二项反映了负采样引入的偏差。
样本复杂度界: 达到 $\epsilon$-最优解所需的负样本数: \(K = O\left(\frac{n \log n}{\epsilon^2}\right)\)
这解释了为什么实践中 $K=5-10$ 通常足够。
从贝叶斯角度,置信度反映了我们对观察到的隐式信号的不确定性。
生成模型:
后验推断: \(p(r_{ui}^*|r_{ui}) \propto \exp\left(-\frac{c_{ui}}{2}(r_{ui}^* - r_{ui})^2 - \frac{1}{2\sigma^2}(r_{ui}^* - \mathbf{p}_u^T\mathbf{q}_i)^2\right)\)
这导出了加权最小二乘的目标函数。
时间动态建模:
指数衰减模型: \(c_{ui}(t) = c_{ui}^{(0)} \exp(-\lambda_t(t - t_{ui}))\)
幂律衰减: \(c_{ui}(t) = c_{ui}^{(0)} (1 + t - t_{ui})^{-\alpha}\)
频率置信度: 基于观察次数的置信度估计: \(c_{ui} = \frac{n_{ui}}{n_{ui} + \beta}\) 这是贝塔-二项式模型的后验均值。
联合建模: \(c_{ui}(t, n) = f_{\text{time}}(t) \cdot f_{\text{freq}}(n) \cdot f_{\text{context}}(\mathbf{x})\)
增量置信度更新: 新观察到达时: \(c_{ui}^{(t+1)} = \frac{c_{ui}^{(t)} \cdot n_{ui}^{(t)} + \Delta c_{ui}}{n_{ui}^{(t)} + 1}\)
一致性条件:
理论保证: 在适当的正则化下,在线更新算法满足: \(\text{Regret}(T) = O(\sqrt{T \log n})\)
现代系统需要整合多种信号:
层次贝叶斯模型: \(c_{ui} \sim \text{Gamma}(\alpha_s, \beta_s), \quad s \in \{\text{click}, \text{purchase}, ...\}\)
注意力机制融合: \(c_{ui} = \sum_{s} a_s(\mathbf{u}, \mathbf{i}) \cdot c_{ui}^{(s)}\) 其中 $a_s$ 是学习的注意力权重。
元学习置信度: 使用MAML框架学习置信度函数: \(c_{ui} = f_\phi(\mathbf{x}_{ui}), \quad \phi^* = \arg\min_\phi \mathbb{E}_{\mathcal{T}}[\mathcal{L}_{\mathcal{T}}(f_\phi)]\)
本章深入探讨了大规模协同过滤中的核心矩阵技术。主要贡献包括:
关键洞察:
未来研究方向:
考虑一个视频推荐系统,用户行为包括:点击(click)、观看时长(watch_time)、点赞(like)、分享(share)。设计一个综合置信度函数 $c_{ui}$,满足以下要求:
提示:考虑使用对数变换处理长尾分布的观看时长。
给定用户 $u$ 的交互物品集合 $\mathcal{I}u = {i_1, i_2, …, i{n_u}}$ 和对应置信度 ${c_{ui_1}, c_{ui_2}, …, c_{ui_{n_u}}}$,推导向量化的用户因子更新公式,避免显式构造对角矩阵 $\mathbf{C}^u$。
提示:利用 $\mathbf{Q}^T\mathbf{C}^u\mathbf{Q} = \sum_{i \in \mathcal{I}u} c{ui}\mathbf{q}_i\mathbf{q}_i^T + \mathbf{Q}^T\mathbf{Q}$。
证明:使用流行度比例采样 $P(i) \propto f_i^{0.75}$ 相比均匀采样,在估计全局损失时具有更低的方差。假设损失函数为 $\ell(u,i) = (\mathbf{p}_u^T\mathbf{q}_i)^2$。
提示:计算两种采样策略下估计量的方差,并比较。
在分布式ALS中,假设有 $p$ 个计算节点,$m$ 个用户,$n$ 个物品,因子维度 $k$。分析以下三种数据分片策略的通信复杂度:
提示:考虑每轮迭代需要传输的因子矩阵大小。
在流式场景中,使用增量Sherman-Morrison更新代替完全重算。分析经过 $T$ 次更新后的数值误差累积,并提出误差控制策略。
提示:考虑浮点运算的舍入误差和条件数的影响。
推荐系统需要同时优化准确性(RMSE)、覆盖度(Coverage)和多样性(Diversity)。设计一个多目标矩阵分解框架,并分析帕累托最优解的性质。
提示:考虑加权和方法和约束优化方法。
设计一个满足差分隐私的分布式矩阵分解算法,其中用户数据不能离开本地设备。分析隐私-效用权衡。
提示:考虑梯度扰动和安全聚合。
将推荐系统的选择偏差建模为因果图,使用do-calculus推导无偏的损失函数。考虑观察概率 $P(O=1|U,I,R)$ 依赖于真实评分 $R$ 的情况。
提示:构建因果图 $U \rightarrow R \leftarrow I, R \rightarrow O$。
问题:直接计算 $\mathbf{Q}^T\mathbf{C}^u\mathbf{Q}$ 导致数值不稳定
# 错误做法
A = Q.T @ diag(C_u) @ Q # 当C_u包含极大值时条件数爆炸
正确做法:
问题:均匀负采样导致流行物品的负信号不足
解决方案:
问题:新用户/物品的因子向量快速过拟合到少量交互
缓解策略:
问题:用户活跃度的幂律分布导致计算负载不均
解决方案:
问题:过于激进的时间衰减导致历史信息丢失
平衡方法:
问题:将隐式反馈二值化时丢失重要信息
# 危险的简化
p_ui = 1 if r_ui > 0 else 0 # 忽略了交互强度
更好的做法:
问题:Hogwild!式并行更新在高竞争区域失效
缓解措施:
问题:离线指标(如RMSE)与在线业务指标脱节
全面评估: