基于SASRec的序列推荐模型研究
数据预处理——ML-1M
为适配序列推荐任务,MovieLens-1M 数据集在模型训练前大致会进行如下预处理:
- 数据读取与筛选:从
ratings.dat文件中提取(UserID, ItemID, Timestamp)三元组。 - 时间排序:对每个用户的交互序列按照时间戳升序排序,形成用户行为序列。
- 过滤:移除交互次数少于一定阈值的用户和物品(论文中设置为5)。
- ID 重编码:将原始的用户和物品 ID 映射为从 1 开始的连续整数,方便 embedding 操作。
- 序列划分(Leave-one-out):对每位用户的行为序列划分为:
- 训练集:前
个物品; - 验证集:倒数第 2 个物品;
- 测试集:最后 1 个物品。
- 训练集:前
- 负采样(评估阶段):在验证和测试阶段,为每个目标物品构建包含负样本的候选集,进行 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