
1) 【一句话结论】:矩阵分解通过低秩近似用户-物品评分矩阵,捕捉用户与物品的潜在特征以预测评分,但传统MF未考虑时间动态,需引入时间感知机制(如时间衰减、动态因子更新)以适配快手短视频的时效性特征。
2) 【原理/概念讲解】:矩阵分解(MF)的核心是将高维的用户-物品评分矩阵( R )(用户×物品,元素为评分)分解为两个低维的因子矩阵:用户特征矩阵( U )(用户×k,k为潜在因子数)和物品特征矩阵( I )(物品×k)。预测用户( u )对物品( i )的评分时,通过点积计算:( \hat{R}_{ui} = U_u \cdot I_i^T )。这里,( U_u )和( I_i )是用户( u )和物品( i )在潜在因子空间中的“兴趣向量”,评分是两个向量的相似度。类比:就像用户和物品都有隐藏的“兴趣标签”,评分就是标签的匹配程度。传统MF假设这些标签是静态的,但实际中用户兴趣会随时间变化(比如今天喜欢搞笑视频,明天可能喜欢知识类),物品(视频)也有生命周期(发布后热度下降)。
3) 【对比与适用场景】:
| 维度 | 传统矩阵分解(MF) | 时间感知矩阵分解(改进版) |
|---|---|---|
| 定义 | 将用户-物品评分矩阵分解为用户因子矩阵( U )和物品因子矩阵( I ),通过点积预测评分。 | 在传统MF基础上,引入时间维度,对评分或因子进行时间加权,动态更新用户/物品特征。 |
| 特性 | 用户和物品特征静态,忽略时间因素。 | 用户兴趣和物品特征随时间动态变化,考虑时间衰减或时间窗口。 |
| 使用场景 | 静态物品(如书籍、电影),用户兴趣相对稳定。 | 动态物品(如短视频、直播),用户兴趣和物品热度随时间变化。 |
| 注意点 | 适用于物品变化慢、用户兴趣稳定的场景,计算效率高。 | 需处理时间数据,可能增加计算复杂度,需平衡时间粒度与模型精度。 |
4) 【示例】:
传统MF伪代码:
def matrix_factorization(R, k, iterations=100, learning_rate=0.01, regularization=0.01):
U = np.random.normal(0, 0.1, (R.shape[0], k))
I = np.random.normal(0, 0.1, (R.shape[1], k))
for _ in range(iterations):
for u in range(R.shape[0]):
for i in range(R.shape[1]):
if R[u, i] > 0:
r_ui = U[u].dot(I[i].T)
e_ui = R[u, i] - r_ui
U[u] += learning_rate * (e_ui * I[i] - regularization * U[u])
I[i] += learning_rate * (e_ui * U[u].T - regularization * I[i])
return U, I
改进版(时间感知):在计算残差时加入时间权重,如对于时间( t )的评分,乘以( e^{-\lambda t} ),降低旧数据的权重;或动态更新用户因子,如时间窗口滑动(每24小时更新一次用户因子)。
5) 【面试口播版答案】:
面试官您好,矩阵分解(MF)在推荐系统中用于将用户-物品评分矩阵分解为低维的潜在特征矩阵,通过用户和物品特征向量的点积预测评分。传统MF假设用户兴趣和物品特征是静态的,但快手短视频场景下,用户兴趣会随时间变化(比如今天刷搞笑视频,明天可能关注知识类),视频也有生命周期(发布后热度下降),所以需要改进。具体来说,可以引入时间衰减因子,比如对于时间( t )的评分,乘以( e^{-\lambda t} ),降低旧数据的权重;或者动态更新用户特征,比如在用户因子中加入时间维度,物品特征也考虑发布时间或热度变化,这样能更好地捕捉短视频的时效性,提升推荐的相关性和时效性。
6) 【追问清单】:
7) 【常见坑/雷区】: