基于SASRec的序列推荐模型研究

基于SASRec的序列推荐模型研究

YYk Lv2

数据预处理——ML-1M

为适配序列推荐任务,MovieLens-1M 数据集在模型训练前大致会进行如下预处理:

  1. 数据读取与筛选:从 ratings.dat 文件中提取 (UserID, ItemID, Timestamp) 三元组。
  2. 时间排序:对每个用户的交互序列按照时间戳升序排序,形成用户行为序列。
  3. 过滤:移除交互次数少于一定阈值的用户和物品(论文中设置为5)。
  4. ID 重编码:将原始的用户和物品 ID 映射为从 1 开始的连续整数,方便 embedding 操作。
  5. 序列划分(Leave-one-out):对每位用户的行为序列划分为:
    • 训练集:前 个物品;
    • 验证集:倒数第 2 个物品;
    • 测试集:最后 1 个物品。
  6. 负采样(评估阶段):在验证和测试阶段,为每个目标物品构建包含负样本的候选集,进行 top- 推荐评估。

最终输出格式通常为:每行一个 (user_id, item_id) 对或完整的序列行,保存在文本文档中,供模型训练使用。

users 数目 items数目 平均users交互 平均items交互 总交互
论文中展示结果 6,040 3,416 163.5 289.1 1.0M
论文代码仓库结果(ml-1m.txt) 6,040 3,416 165.50 292.63 999611
本地数据处理(test1.txt) 6,040 3,416 165.50 292.63 999611
本地数据处理(test2.txt) 6,040 3,416 165.50 292.63 999611

表1:ML-1M数据处理后结果分析

虽然论文仓库中提供了处理后的 ml-1m.txt,但我根据原始 ratings.dat 按照论文的筛选与排序策略重新处理并重编号,得到 test1.txt。尽管文件内容行顺序不同,其统计特征与 ml-1m.txt 一致。由于仓库仅提供了处理 Amazon 的脚本,我对其改写以适配 MovieLens 数据,生成的 test2.txt 亦具备相同的数据分布,但行内容仍存在差异。

应该是编码方式存在差异,但我也没能找到原论文处理的具体方式

  • test1.txt重编码: 对用户与物品交互先排序,再按排序后的出现顺序依次编码
  • test2.txt重编码: 先按物品与用户的出现顺序重新编码再排序
  • Title: 基于SASRec的序列推荐模型研究
  • Author: YYk
  • Created at : 2025-05-22 16:22:32
  • Updated at : 2025-06-10 20:50:50
  • Link: https://yykwd.github.io/2025/05/22/Projects/Sasrec/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
基于SASRec的序列推荐模型研究