基于内容、协同过滤、基于Transformer的推荐算法
核心目标: 所有推荐算法的核心目标都是预测用户对未交互物品的偏好(评分、点击、购买概率等),并根据预测结果将用户最可能感兴趣的物品推荐给他们。
1. 基于内容的推荐
- 核心思想: 利用物品自身的属性/特征以及用户过去喜欢的物品特征来推荐相似的物品。 它假设如果用户喜欢某些物品,那么与该物品在内容特征上相似的其他物品,用户也可能喜欢。
- 关键概念:
- 物品特征向量: 每个物品
i被表示为一个特征向量V_i = (f1, f2, ..., fn)。特征可以是:- 结构化特征: 类别、标签、导演、演员、作者、价格、品牌等。
- 非结构化特征(需处理): 文本描述(TF-IDF, Word2Vec, BERT 等生成向量)、音频特征、图像特征(CNN 提取)。
- 用户画像: 通过用户过去喜欢(或高评分)的物品的特征向量聚合而成。常见聚合方式:
- 简单平均:
UserProfile_u = (V_i1 + V_i2 + ... + V_ik) / k(用户u喜欢的k个物品向量的平均)。 - 加权平均: 根据用户对物品的评分或交互强度进行加权。
- 简单平均:
- 物品特征向量: 每个物品
- 推荐过程:
- 特征表示: 为所有物品构建特征向量
V_i。 - 用户画像构建: 基于用户
u的历史交互(喜欢/高评分物品)构建用户画像Profile_u。 - 相似度计算: 对于候选物品
j(用户u未交互过的),计算其物品特征向量V_j与用户画像Profile_u的相似度Sim(Profile_u, V_j)。常用相似度度量:余弦相似度、欧氏距离(取倒数或负值)、Jaccard 相似度(适用于标签)。 - 排序推荐: 根据相似度
Sim(Profile_u, V_j)对所有候选物品进行排序,选择 Top-N 推荐给用户u。
- 特征表示: 为所有物品构建特征向量
- 优点:
- 可解释性强: 推荐结果容易解释(“推荐这个电影因为它和你喜欢的《盗梦空间》有相同的导演和类型”)。
- 新物品处理(物品冷启动)较好: 只要新物品有特征描述,就可以计算其与用户画像的相似度进行推荐。
- 用户独立性: 不需要其他用户的数据,只依赖目标用户自身的历史和物品特征。
- 缺点:
- 特征依赖性强: 推荐质量高度依赖于特征工程的质量和完备性。难以捕捉复杂、隐含的偏好。
- 过度专业化: 容易推荐与用户历史偏好非常相似的物品,缺乏惊喜性和多样性(“信息茧房”风险)。
- 新用户问题(用户冷启动): 对于没有任何交互历史的新用户,无法构建有效的用户画像。
- 难以利用隐含信息: 难以捕捉用户行为中隐含的、超越内容本身的关联(例如,购买手机的用户也常买手机壳)。
2. 协同过滤
协同过滤的核心思想是利用群体的智慧。它基于一个核心假设:相似的用户对物品有相似的偏好;相似的物品会被相似的用户喜欢。它主要利用用户-物品交互矩阵(如评分、点击、购买记录),而不依赖物品或用户的具体内容特征(但可以利用特征增强)。
2.1 基于用户的协同过滤
- 核心思想: 找到与目标用户
u兴趣相似的其他用户(邻居用户),然后将这些邻居用户喜欢但目标用户u尚未交互过的物品推荐给u。 - 关键概念:
- 用户相似度: 计算用户
u和用户v之间的相似度Sim(u, v)。常用方法:- 皮尔逊相关系数: 衡量两个用户对共同评过分的物品的评分线性相关性。能消除用户评分尺度差异。
- 余弦相似度: 将用户
u和v在所有物品上的评分(或交互强度)看作向量,计算向量夹角的余弦值。常用。 - 改进余弦相似度: 在余弦相似度基础上减去用户平均分,以考虑用户评分偏差。
- Jaccard 相似度: 仅考虑用户是否交互过(二值化),计算共同交互物品比例(交集/并集)。
- 用户相似度: 计算用户
- 推荐过程:
- 构建用户-物品交互矩阵: 矩阵的行是用户,列是物品,元素是评分、点击次数、是否购买等(可能需要归一化或二值化)。
- 计算用户相似度: 为目标用户
u计算与其他所有用户v的相似度Sim(u, v)。 - 选择邻居用户: 选择与
u相似度最高的K个用户(KNN 邻居)。 - 预测评分/偏好: 预测用户
u对物品i的评分P(u, i)。常见公式:- 加权平均:
P(u, i) = mean_u + [Sum_{v in N(u)} Sim(u, v) * (R(v, i) - mean_v)] / Sum_{v in N(u)} |Sim(u, v)|mean_u,mean_v分别是用户u和v的平均评分(消除用户评分尺度偏差)。R(v, i)是邻居用户v对物品i的实际评分。N(u)是u的邻居用户集合。
- 加权平均:
- 生成推荐: 对目标用户
u所有未交互过的物品,根据预测评分P(u, i)进行排序,选择 Top-N 推荐。
- 优点:
- 无需物品特征: 仅依赖用户行为数据。
- 能发现潜在兴趣: 可能推荐出内容特征不同但用户群体偏好相似的物品(惊喜性)。
- 社群效应: 天然利用了群体行为模式。
- 缺点:
- 冷启动问题:
- 新用户问题: 新用户无行为记录,无法计算与其他用户的相似度。
- 新物品问题: 新物品没有被任何用户交互过,无法被推荐。
- 稀疏性问题: 用户-物品矩阵通常非常稀疏(用户只交互了极少物品),导致难以找到可靠的相似用户。
- 计算扩展性: 随着用户数量增长,计算所有用户对之间的相似度代价巨大(O(N²))。通常需要采样、聚类或利用稀疏矩阵优化。
- 流行度偏差: 热门物品更容易被推荐,小众物品可能被忽略。
- 冷启动问题:
2.2 基于物品的协同过滤
- 核心思想: 为用户
u推荐与其过去喜欢的物品相似的物品。 这里的“相似”不是内容相似,而是基于用户行为模式的相似(喜欢物品i的用户也喜欢物品j,则i和j相似)。 - 关键概念:
- 物品相似度: 计算物品
i和物品j之间的相似度Sim(i, j)。常用方法:- 余弦相似度: 将喜欢物品
i和喜欢物品j的用户集合看作向量(用户维度),计算向量夹角的余弦值。最常用。 - 改进余弦相似度: 在余弦相似度基础上减去用户平均分(如果使用评分数据)。
- 条件概率/Jaccard:
Sim(i, j) = |U_i ∩ U_j| / |U_i|(U_i 是喜欢物品i的用户集合)。表示喜欢i的用户中有多少也喜欢j。非对称。 - 关联规则: 如 Lift, Confidence。
- 余弦相似度: 将喜欢物品
- 物品相似度: 计算物品
- 推荐过程:
- 构建用户-物品交互矩阵: 同上。
- 计算物品相似度: 计算所有物品对
(i, j)的相似度Sim(i, j)。通常计算目标用户u交互过的物品与其他物品的相似度。 - 预测评分/偏好: 预测用户
u对物品j的评分P(u, j)。常见公式:- 加权平均:
P(u, j) = [Sum_{i in I(u)} Sim(i, j) * R(u, i)] / Sum_{i in I(u)} |Sim(i, j)|I(u)是用户u交互过(或喜欢/高评分)的物品集合。R(u, i)是用户u对物品i的实际评分或交互强度。
- 加权平均:
- 生成推荐: 对目标用户
u所有未交互过的物品,根据预测评分P(u, j)进行排序,选择 Top-N 推荐。
- 优点 (相对于 User-CF):
- 计算效率更高: 物品数量通常远少于用户数量,计算物品相似度矩阵代价更小(O(M²) vs O(N²))。物品相似度更稳定,变化频率低于用户兴趣变化。物品相似度矩阵可以离线预计算并定期更新。
- 结果更稳定、可解释: “推荐这个物品是因为你喜欢物品A、B、C” 的解释方式相对直观。
- 处理稀疏性稍好: 物品相似度通常比用户相似度更稠密一些(热门物品被很多人喜欢)。
- 缺点:
- 冷启动问题:
- 新物品问题: 新物品没有用户交互记录,无法计算与其他物品的相似度,也难以被用户交互过的物品关联到。
- 新用户问题: 新用户无历史交互,无法利用其
I(u)进行预测(但一旦用户有了第一个交互,就可以开始推荐)。
- 流行度偏差: 同样存在。
- 难以发现跨类目兴趣: 主要基于用户历史行为物品的相似物,突破性不如 User-CF。
- 冷启动问题:
3. 基于 Transformer 的推荐算法
- 背景: 传统协同过滤和内容推荐在处理序列数据(用户行为序列、文本描述序列)、捕捉复杂非线性关系和长距离依赖方面存在局限。Transformer 模型凭借其强大的自注意力机制,在 NLP 取得巨大成功后,被广泛应用于推荐系统。
- 核心思想: 利用 Transformer 架构来建模用户行为序列、物品序列或用户-物品交互的复杂关系,学习用户和物品的深层次、上下文相关的表示,用于预测用户的下一个行为或偏好。
- Transformer 关键组件在推荐中的应用:
- 自注意力机制: 这是核心。它允许模型在计算序列中某个元素的表示时,动态地、有区别地关注序列中所有其他元素。
- 在用户行为序列建模中: 当预测用户下一个可能点击的物品时,模型可以自动学习到用户历史点击序列中哪些过去的点击对当前预测更重要(例如,最近点击的、同品类的、有因果关系的前序点击),并赋予它们不同的权重。克服了 RNN/LSTM 难以捕捉长距离依赖和并行计算效率低的问题。
- 在物品特征建模中: 对于由多个特征(如标题词、描述词、属性标签)组成的物品,自注意力可以学习特征之间的重要关系和组合。
- 位置编码: 由于自注意力本身不考虑顺序,需要添加位置编码(正弦波或学习式)来注入序列的顺序信息。这对于行为序列建模至关重要。
- 多头注意力: 允许模型在不同的表示子空间(如不同方面的关系)中同时学习信息,增强模型的表达能力。
- 前馈神经网络: 对每个位置的表示进行非线性变换。
- 层归一化和残差连接: 加速训练,稳定模型,使训练更深层的网络成为可能。
- 自注意力机制: 这是核心。它允许模型在计算序列中某个元素的表示时,动态地、有区别地关注序列中所有其他元素。
- 常见应用范式:
- 序列推荐:
- 输入: 用户按时间顺序排列的历史交互物品序列
[i1, i2, ..., i_t]。 - 模型: 使用 Transformer Encoder 或类似架构(如 SASRec, BERT4Rec)编码该序列。
- 输出: 预测用户下一个最可能交互的物品
i_{t+1}。模型学习序列中的模式(顺序、转移概率、长期兴趣)。
- 输入: 用户按时间顺序排列的历史交互物品序列
- 特征增强的深度协同过滤:
- 输入: 用户 ID(Embedding) + 用户画像特征(如人口统计、聚合的历史行为特征);物品 ID(Embedding) + 物品内容特征(如文本描述向量、图像特征向量)。
- 模型: 如果特征本身是序列(如物品的文本描述),可以用 Transformer Encoder 先编码这些特征序列,得到更丰富的物品表示。然后将用户表示和物品表示输入一个预测网络(如 MLP)进行交互预测(评分/点击率)。这比简单的向量拼接或内积能捕捉更复杂的特征交互。
- 会话推荐: 特别关注用户当前会话(一系列短时间内密集的交互)的行为序列,预测会话内的下一个点击。Transformer 能有效捕捉会话内的复杂依赖。
- 多模态推荐: 处理文本、图像、音频、视频等多种模态的特征。Transformer 可以分别编码不同模态的序列特征(如文本描述的词序列、视频帧序列),然后通过跨模态注意力融合信息,形成统一的物品/用户表示。
- 序列推荐:
- 优点:
- 强大的序列建模能力: 精准捕捉用户行为序列中的模式、转移和长期/短期兴趣。
- 捕捉复杂特征交互: 自注意力能自动学习特征之间复杂的高阶非线性关系。
- 建模长距离依赖: 克服了 RNN/LSTM 的梯度消失/爆炸问题,能有效利用序列中距离很远的信号。
- 并行计算高效: 训练速度通常快于 RNN/LSTM。
- 灵活性高: 架构可灵活设计,易于融合多种信息源(ID、内容特征、上下文、序列)。
- 缺点:
- 计算复杂度: 自注意力的计算复杂度是序列长度的平方(O(n²)),对于超长序列(如用户整个生命周期的行为)成本高昂。需要采用技术如局部注意力、稀疏注意力、分块处理等来优化。
- 数据需求大: 深度学习模型通常需要大量的训练数据才能发挥优势,避免过拟合。
- 可解释性差: 相比传统方法,Transformer 模型内部的决策过程更难以直观理解(“黑盒”特性)。
- 冷启动问题: 对于新用户或新物品,缺乏足够的行为序列或上下文信息,模型效果会受限(但可以结合内容特征、元信息或迁移学习缓解)。
- 训练和调参复杂: 需要专业知识进行模型设计、超参数调优和训练技巧。
总结与对比
| 特性 | 基于内容推荐 | 基于用户的协同过滤 | 基于物品的协同过滤 | 基于 Transformer 的推荐 |
|---|---|---|---|---|
| 核心依据 | 物品内容特征相似性 | 用户行为相似性 | 物品共现行为相似性 | 序列模式、复杂特征交互、上下文 |
| 关键输入 | 物品特征、用户历史物品 | 用户-物品交互矩阵 | 用户-物品交互矩阵 | 用户行为序列、物品特征序列、交互矩阵 |
| 可解释性 | 高 | 中等 | 中等 | 低 |
| 物品冷启动 | 好 | 差 | 差 | 中等 (依赖特征) |
| 用户冷启动 | 差 | 差 | 中等 (需至少一个交互) | 中等 (依赖特征/初始序列) |
| 新兴趣发现 | 差 (过度专业化) | 好 | 中等 | 好 (能捕捉序列转移) |
| 流行度偏差 | 低 (依赖特征) | 高 | 高 | 中等 (可设计缓解) |
| 稀疏性处理 | 不相关 | 差 | 中等 | 中等 (可结合特征) |
| 计算效率 | 中等 | 低 (用户数大时) | 高 (物品相似度可预计算) | 低 (尤其长序列时) |
| 建模能力 | 线性/简单关系 | 群体行为模式 | 物品共现模式 | 强 (非线性、序列、长依赖) |
| 典型代表 | TF-IDF + 余弦相似度 | KNN + 皮尔逊/余弦 | Item-KNN + 余弦相似度 | SASRec, BERT4Rec, DIN, DIEN |
实际应用: 现代工业级推荐系统很少只使用单一算法。通常是混合推荐:
- 将多种算法结果融合(加权、切换、级联)。
- 利用深度学习方法(如 Transformer, GNN)作为特征提取器或预测器,融合传统协同过滤信号和内容特征。
- Transformer 在处理序列和复杂特征方面展现出强大能力,已成为当前推荐系统研究与应用的热点和重要方向,尤其是在用户行为序列丰富的场景(如短视频、电商、新闻推荐)。但其计算成本和可解释性仍是挑战。传统协同过滤(特别是 Item-CF)因其简单有效且可扩展性好,仍在许多系统中扮演重要角色。基于内容的方法在冷启动和可解释性要求高的场景仍有价值。