第 16 章 推荐系统
推荐系统用于根据用户历史行为预测用户可能喜欢的电影、商品或内容。课程主要介绍基于内容的推荐和协同过滤。
16.1 问题形式化
以电影评分为例,推荐系统数据通常是用户对电影的评分矩阵。
常用符号:
| 符号 | 含义 |
|---|---|
n_u | 用户数量 |
n_m | 电影数量 |
r(i, j) | 用户 j 是否给电影 i 评分 |
y(i, j) | 用户 j 给电影 i 的评分 |
目标是预测用户还没评分的电影分数,并据此推荐。
16.2 基于内容的推荐系统
基于内容的推荐假设每个物品都有特征。
例如电影可以有这些特征:
text
浪漫程度
动作程度
喜剧程度对每个用户训练一组参数 theta,用于预测该用户对电影的评分。
预测形式:
其中:
theta^(j)是用户j的偏好参数。x^(i)是电影i的特征。
16.3 协同过滤
协同过滤不要求提前知道电影特征。
如果已知用户偏好参数,可以学习电影特征;如果已知电影特征,可以学习用户偏好参数。
协同过滤的思想是:同时学习用户参数和物品特征。
这类方法可以从大量用户评分中自动发现电影的潜在特征。
16.4 协同过滤算法
协同过滤的优化目标同时包含电影特征和用户参数。
只对用户实际评分过的电影计算误差。
训练完成后,可以用学到的 theta 和 x 预测未评分电影。
16.5 向量化:低秩矩阵分解
协同过滤可以看作低秩矩阵分解。
把所有电影特征放进矩阵 X,所有用户参数放进矩阵 Theta,预测评分矩阵可以写成:
学到电影特征后,还可以用特征向量之间的距离找到相似电影。
16.6 推行工作上的细节:均值归一化
如果某个用户没有任何评分,协同过滤可能无法给出合理预测。
均值归一化可以缓解这个问题。
做法:
- 对每部电影计算平均评分。
- 用原始评分减去该电影平均值。
- 在归一化后的评分上训练模型。
- 预测时再加回电影平均值。
这样对于没有评分的新用户,系统至少可以推荐平均评分较高的电影。