📊 滑动谱分解:多样化推荐的全新视角 New

在当今社交媒体的时代,内容推荐系统已经成为用户获取信息的重要工具。尤其是在小红书等平台上,用户每天都会浏览大量信息流,如何有效地推荐多样化的内容,成为了研究的热点。本文将深入探讨一种名为“滑动谱分解”(Sliding Spectrum Decomposition, SSD)的方法,旨在从时间序列的角度解决推荐系统中的多样性问题。

🧩 引言:多样化推荐的挑战

在推荐系统中,多样化的推荐不仅可以提升用户的满意度,还能增加用户的参与度。然而,许多现有的方法在处理用户浏览的长序列时,往往忽视了用户的记忆和心理感知。SSD 方法通过引入时间序列分析技术,考虑了用户在浏览过程中对多样性的感知,尤其是那些已经滑出视窗的项目。

🔍 SSD 方法的核心思想

SSD 方法的核心在于将用户的浏览序列视为一个时间序列,并通过滑动窗口的方式来捕捉用户的多样性感知。具体而言,SSD 结合了多个滑动窗口,形成一个三阶张量,并通过奇异值分解(SVD)来定义多样性。

1. 算法流程概述

SSD 的算法流程可以分为以下几个步骤:

  1. 数据准备:从用户的浏览历史中提取项目序列,并为每个项目生成相应的嵌入向量。
  2. 滑动窗口构建:通过滑动窗口的方式,将用户的浏览序列转换为多个窗口的集合。
  3. 张量构建:将多个窗口的嵌入向量堆叠成一个三阶张量
  4. 奇异值分解:对张量进行奇异值分解,提取出多样性信息。
  5. 优化目标构建:构建一个综合考虑质量和多样性的优化目标。
  6. 贪婪推断:通过贪婪算法选择最终的推荐项目序列。

2. 详细实现步骤

2.1 数据准备

在数据准备阶段,首先需要从用户的浏览历史中提取项目序列。每个项目都需要一个嵌入向量,这里采用了基于内容的嵌入方法(CB2CF),通过文本和图像特征生成项目的嵌入。

# 嵌入生成示例
def generate_embeddings(item_data):
    text_embeddings = BERT_model(item_data['text'])
    image_embeddings = Inception_model(item_data['image'])
    return concatenate(text_embeddings, image_embeddings)

2.2 滑动窗口构建

接下来,通过设定固定大小的滑动窗口,遍历用户的浏览序列,构建多个窗口。

def create_sliding_windows(sequence, window_size):
    return [sequence[i:i + window_size] for i in range(len(sequence) - window_size + 1)]

2.3 张量构建

将多个窗口的嵌入向量堆叠成一个三阶张量 $X \in \mathbb{R}^{L \times w \times d}$,其中 $L$ 是窗口的数量,$w$ 是窗口大小,$d$ 是嵌入维度。

def build_tensor(windows):
    return np.stack([generate_embeddings(window) for window in windows])

2.4 奇异值分解

对构建的张量进行奇异值分解,以提取多样性信息。这里使用 NumPy 的 SVD 实现。

U, S, Vt = np.linalg.svd(tensor.reshape(-1, d), full_matrices=False)

2.5 优化目标构建

构建优化目标,综合考虑项目的质量和多样性。目标函数可以表示为:

$$\max_{i_1, \ldots, i_T} \sum_{t=1}^{T} r_{i_t} + \gamma \sum_{i,j,k} \sigma_{i,j,k}$$

其中 $r_{i_t}$ 表示项目的质量评分,$\sigma_{i,j,k}$ 表示多样性度量。

2.6 贪婪推断

最后,通过贪婪算法选择最终的推荐项目序列。每一步选择当前质量评分最高的项目,同时考虑多样性。

def greedy_selection(candidate_items, quality_scores, diversity_scores, T. :
    selected_items = []
    for _ in range(T. :
        best_item = max(candidate_items, key=lambda item: quality_scores[item] + diversity_scores[item])
        selected_items.append(best_item)
        candidate_items.remove(best_item)
    return selected_items

📈 实验与结果

在小红书的实际应用中,SSD 方法经过理论分析、离线实验和在线 A/B 测试验证了其有效性。实验结果显示,SSD 方法在推荐质量和多样性方面均优于传统的 DPP 方法。

1. 离线评估

通过对比传统的协同过滤(CF)和 CB2CF 方法,SSD 在长尾项目的相似性计算上表现更为优越,能够更好地捕捉用户的兴趣。

2. 在线 A/B 测试

在小红书的 Explore Feed 中,SSD 方法显著提高了用户的参与度和满意度,同时减少了系统的延迟和内存需求。

🏁 结论

本文详细介绍了滑动谱分解(SSD)方法在多样化推荐中的应用,强调了其在处理长序列时的优势。通过结合时间序列分析技术,SSD 能够更好地捕捉用户的多样性感知,为推荐系统的设计提供了新的思路和方法。

📚 参考文献

  1. Yanhua Huang, Weikun Wang, Lei Zhang, Ruiwen Xu. 2021. Sliding Spectrum Decomposition for Diversified Recommendation. In Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD ’21).
  2. 其他相关文献…

通过对 SSD 方法的深入探讨,我们希望能够为未来的推荐系统研究提供启发,推动多样化推荐技术的发展。

发表评论

Only people in my network can comment.
人生梦想 - 关注前沿的计算机技术 acejoy.com