真实面经题目 · 原创解析
SVD 和 SVD++ 有什么区别?
推荐系统里的 SVD 通常指矩阵分解,将用户和物品映射到隐向量,用内积预测评分或偏好。SVD++ 在此基础上引入用户的隐式反馈物品集合,把用户交互过的物品隐向量聚合进用户表示,因此能利用浏览、点击、收藏等未显式评分行为,缓解评分稀疏问题。
真实面经题目 · 原创解析
推荐系统里的 SVD 通常指矩阵分解,将用户和物品映射到隐向量,用内积预测评分或偏好。SVD++ 在此基础上引入用户的隐式反馈物品集合,把用户交互过的物品隐向量聚合进用户表示,因此能利用浏览、点击、收藏等未显式评分行为,缓解评分稀疏问题。
先说明 SVD 的形式:评分约等于全局均值、用户偏置、物品偏置和用户物品隐向量内积。再说明 SVD++ 的新增项:用户历史交互物品的隐式反馈向量求和归一化后加入用户向量。最后解释效果:SVD++ 信息更多,通常更准,但训练和线上计算更复杂。
推荐里的 SVD 通常不是离线做一次纯线性代数分解,而是把用户和物品分别学习成低维隐向量,用内积表示匹配程度,再拟合评分、点击或偏好标签。它依赖可观测的用户物品交互,交互越稀疏,用户向量越难学稳。
实际矩阵分解会加入全局均值、用户偏置和物品偏置。全局均值表示整体评分水平,用户偏置表示某些用户天然打分更高或更低,物品偏置表示物品整体受欢迎程度;这些偏置能把非个性化因素从隐向量中拆出来。
SVD++ 的关键增量是把用户发生过行为的物品集合也纳入用户表示。它为每个历史物品学习隐式反馈向量,对用户历史集合做归一化聚合,再与用户自身隐向量相加,使预测同时利用显式偏好和行为足迹。
当显式评分少但点击、浏览、收藏、购买等行为丰富时,SVD++ 能从隐式反馈中补充兴趣信号,缓解只靠评分矩阵带来的冷稀疏问题。但隐式行为噪声更大,需要考虑行为强弱、时间衰减和负反馈,否则会放大误点和曝光偏差。
代价是训练和服务都更复杂:一次预测不只查用户向量和物品向量,还要聚合该用户历史物品集合。大规模场景通常需要缓存用户隐式反馈聚合向量、限制历史窗口、做采样或增量更新,否则延迟和存储开销会明显上升。
用户历史行为数量差异很大,按集合大小归一化可以避免活跃用户的隐式反馈项天然过大。
显式反馈是评分、点赞等明确偏好信号,隐式反馈是点击、浏览、收藏、购买等行为信号,噪声更大但覆盖更广。
可用热门兜底、注册信息、上下文、内容特征或少量交互快速初始化用户向量。
SVD++ 能学习低维潜在兴趣并融合隐式反馈,但可解释性和实时更新成本通常不如简单 item-based CF。