第 173 题:协同过滤的Bandit,用户-物品矩阵的在线更新?
题目
协同过滤的Bandit,用户-物品矩阵的在线更新?
完整讲解
一、协同过滤与 Bandit 的结合
协同过滤(CF):用用户—物品交互矩阵(显式/隐式)做矩阵分解或近邻,得到用户/物品向量,预测未观测评分或点击。Bandit:在推荐时加入探索,用反馈实时更新策略。协同过滤 + Bandit:用 CF 提供先验或初始排序,用 Bandit(如 UCB、TS)在线上去更新用户—物品偏好或不确定性,实现「利用 CF 结构 + 在线探索」。
二、用户—物品矩阵的在线更新
- 挑战:传统 CF 多为离线训练、批量更新;在线场景需要增量更新用户/物品向量或置信区间,以反映最新点击/跳过。
- 做法:(1)增量矩阵分解:新反馈到达后对相关用户/物品向量做梯度更新或 mini-batch 更新。(2)Bandit 层:在 CF 分数上加 UCB/TS 探索项,用实时反馈更新该探索项或局部参数。(3)混合:CF 作为特征或初排,Bandit 控制精排/探索;或用 LinUCB/LinTS 把用户/物品 embedding 当上下文,在线更新 $\boldsymbol{\theta}$。
- 工程:流式更新 embedding、增量 SVD/BPR、缓存与异步更新,保证延迟与一致性。
三、效果与权衡
- 在线更新使推荐更快适应用户当前兴趣与物品热度;需控制更新频率与稳定性,避免抖动与过拟合噪声。
面试要点
- 能说清 CF 与 Bandit 结合的目的:利用 CF 结构、在线探索与实时反馈。
- 能描述用户—物品矩阵(或向量)的在线更新方式:增量分解、Bandit 探索项、LinUCB/LinTS 以 embedding 为上下文。
- 能列举工程要点:流式/增量更新、缓存、延迟与一致性。
记忆要点
- CF+Bandit:CF 提供先验/排序,Bandit 在线探索与更新;矩阵/向量需增量更新。
- 实现:增量分解、UCB/TS 探索项、LinUCB/LinTS;流式更新与缓存保证在线效率。