Skip to content

第 16 章 推荐系统

推荐系统用于根据用户历史行为预测用户可能喜欢的电影、商品或内容。课程主要介绍基于内容的推荐和协同过滤。

16.1 问题形式化

以电影评分为例,推荐系统数据通常是用户对电影的评分矩阵。

常用符号:

符号含义
n_u用户数量
n_m电影数量
r(i, j)用户 j 是否给电影 i 评分
y(i, j)用户 j 给电影 i 的评分

目标是预测用户还没评分的电影分数,并据此推荐。

16.2 基于内容的推荐系统

基于内容的推荐假设每个物品都有特征。

例如电影可以有这些特征:

text
浪漫程度
动作程度
喜剧程度

对每个用户训练一组参数 theta,用于预测该用户对电影的评分。

预测形式:

(θ(j))Tx(i)

其中:

  • theta^(j) 是用户 j 的偏好参数。
  • x^(i) 是电影 i 的特征。

16.3 协同过滤

协同过滤不要求提前知道电影特征。

如果已知用户偏好参数,可以学习电影特征;如果已知电影特征,可以学习用户偏好参数。

协同过滤的思想是:同时学习用户参数和物品特征。

这类方法可以从大量用户评分中自动发现电影的潜在特征。

16.4 协同过滤算法

协同过滤的优化目标同时包含电影特征和用户参数。

J(x,θ)=12(i,j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2ix(i)2+λ2jθ(j)2

只对用户实际评分过的电影计算误差。

训练完成后,可以用学到的 thetax 预测未评分电影。

16.5 向量化:低秩矩阵分解

协同过滤可以看作低秩矩阵分解。

把所有电影特征放进矩阵 X,所有用户参数放进矩阵 Theta,预测评分矩阵可以写成:

XΘT

学到电影特征后,还可以用特征向量之间的距离找到相似电影。

16.6 推行工作上的细节:均值归一化

如果某个用户没有任何评分,协同过滤可能无法给出合理预测。

均值归一化可以缓解这个问题。

做法:

  1. 对每部电影计算平均评分。
  2. 用原始评分减去该电影平均值。
  3. 在归一化后的评分上训练模型。
  4. 预测时再加回电影平均值。

这样对于没有评分的新用户,系统至少可以推荐平均评分较高的电影。

Powered by VitePress