序列推荐数据集完全使用指南
序列推荐数据集项目是一个专门用于下载、预处理和批量加载常用序列推荐数据集的工具集。该项目收集了近年来研究论文中常用的序列推荐数据集,为推荐系统研究和开发提供了便利。
项目概述
序列推荐数据集项目采用模块化设计,核心功能集中在srdatasets目录中。项目支持短序列推荐(包括会话推荐)和长短序列推荐任务,预处理方法可根据具体任务进行自定义。
项目结构解析
项目的目录结构清晰明了:
- srdatasets/:核心数据处理模块,包含数据集下载、预处理和数据加载功能
- tests/:测试套件,确保各功能模块的正确性
- requirements.txt:项目依赖管理文件
- setup.py:项目安装脚本
- README.md:详细的使用说明文档
支持的数据集
项目支持多种流行的序列推荐数据集,包括:
- Amazon系列数据集:Amazon-Books、Amazon-Electronics、Amazon-Movies、Amazon-CDs、Amazon-Clothing等20多个类别
- CiteULike:学术论文推荐数据集
- FourSquare:地理位置签到数据集
- Gowalla:社交签到数据集
- Lastfm1K:音乐推荐数据集
- MovieLens20M:电影评分数据集
- Retailrocket:电商数据集
- TaFeng:零售数据集
- Taobao和Tmall:电商平台数据集
- Yelp:商业点评数据集
安装方法
稳定版本安装
pip install -U srdatasets —-user
最新版本安装
pip install git+https://gitcode.com/gh_mirrors/se/Sequential-Recommendation-Datasets.git --user
数据集下载
使用以下命令下载数据集:
srdatasets download --dataset=[dataset_name]
要查看所有数据集的下载和处理状态,运行:
srdatasets info
数据集处理
通用处理命令格式:
srdatasets process --dataset=[dataset_name] [--options]
数据集分割选项
项目提供两种数据集分割方法:基于用户的分割和基于时间的分割。
基于用户的分割:按照验证集和测试集的比例对每个用户行为序列进行分割 基于时间的分割:根据用户行为的日期进行分割
主要参数:
- --split-by:分割方式,user或time(默认:user)
- --test-split:测试集占完整数据集的比例(默认:0.2)
- --dev-split:验证集占完整训练集的比例(默认:0.1)
任务相关选项
对于短序列推荐任务,使用前input-len个项目预测后target-len个项目。如果给定session-interval,用户行为序列还可以被分割为会话。
对于长短序列推荐任务,使用pre-sessions个前会话和当前会话预测target-len个项目。
主要参数:
- --task:任务类型,short或long-short(默认:short)
- --input-len:前序项目数量(默认:5)
- --target-len:目标项目数量(默认:1)
- --pre-sessions:前序会话数量(默认:10)
- --pick-targets:从当前会话中随机或最后选择项目(默认:random)
- --session-interval:会话分割间隔(分钟)(默认:0)
- --min-session-len:长度小于此值的会话将被丢弃(默认:2)
- --max-session-len:长度大于此值的会话将被截断(默认:20)
通用选项
- --min-freq-item:频率小于此值的项目将被丢弃(默认:5)
- --min-freq-user:频率小于此值的用户将被丢弃(默认:5)
- --no-augment:不使用数据增强(默认:False)
- --remove-duplicates:移除用户序列或用户会话中的重复项目(默认:False)
数据集相关选项
- --rating-threshold:评分低于此值的交互将被丢弃(Amazon、Movielens、Yelp数据集)(默认:4)
- --item-type:推荐艺术家或歌曲(Lastfm数据集)(默认:song)
DataLoader使用指南
DataLoader是一个内置类,使加载已处理数据集变得简单。初始化数据加载器后,可以通过循环获取批量数据。
初始化参数
- dataset_name:数据集名称(不区分大小写)
- config_id:配置ID
- batch_size:批次大小(默认:1)
- train:加载训练数据集(默认:True)
- development:加载用于开发的数据集(默认:False)
- negatives_per_target:每个目标的负样本数量(默认:0)
- include_timestamp:将时间戳添加到批次数据中(默认:False)
- drop_last:丢弃最后不完整的批次(默认:False)
初始化示例
from srdatasets.dataloader import DataLoader
trainloader = DataLoader("amazon-books", "c1574673118829", batch_size=32, train=True, negatives_per_target=5, include_timestamp=True)
testloader = DataLoader("amazon-books", "c1574673118829", batch_size=32, train=False, include_timestamp=True)
对于PyTorch用户,提供了torch.utils.data.DataLoader的包装实现:
from srdatasets.dataloader_pytorch import DataLoader
trainloader = DataLoader("amazon-books", "c1574673118829", batch_size=32, train=True, negatives_per_target=5, include_timestamp=True, num_workers=8, pin_memory=True)
testloader = DataLoader("amazon-books", "c1574673118829", batch_size=32, train=False, include_timestamp=True, num_workers=8, pin_memory=True)
迭代模板
短序列推荐任务迭代:
for epoch in range(10):
# 训练
for users, input_items, target_items, input_item_timestamps, target_item_timestamps, negative_samples in trainloader:
# 数据形状说明
# users: (batch_size,)
# input_items: (batch_size, input_len)
# target_items: (batch_size, target_len)
# input_item_timestamps: (batch_size, input_len)
# target_item_timestamps: (batch_size, target_len)
# negative_samples: (batch_size, target_len, negatives_per_target)
pass
# 测试
for users, input_items, target_items, input_item_timestamps, target_item_timestamps in testloader:
pass
长短序列推荐任务迭代:
for epoch in range(10):
# 训练
for users, pre_sessions_items, cur_session_items, target_items, pre_sessions_item_timestamps, cur_session_item_timestamps, target_item_timestamps, negative_samples in trainloader:
# 数据形状说明
# users: (batch_size,)
# pre_sessions_items: (batch_size, pre_sessions * max_session_len)
# cur_session_items: (batch_size, max_session_len - target_len)
# target_items: (batch_size, target_len)
# pre_sessions_item_timestamps: (batch_size, pre_sessions * max_session_len)
# cur_session_item_timestamps: (batch_size, max_session_len - target_len)
# target_item_timestamps: (batch_size, target_len)
# negative_samples: (batch_size, target_len, negatives_per_target)
pass
# 测试
for users, pre_sessions_items, cur_session_items, target_items, pre_sessions_item_timestamps, cur_session_item_timestamps, target_item_timestamps in testloader:
pass
项目依赖
项目运行需要以下Python库:
- pandas>=0.25.0
- tqdm>=4.33.0
- tabulate>=0.8.5
- numpy>=1.16.4
使用建议
- 在开始使用前,仔细阅读README.md文档了解最新功能和使用方法
- 根据具体推荐任务选择合适的预处理参数
- 利用测试套件验证数据处理结果
- 注意各数据集的许可要求,确保合规使用
该工具集为序列推荐系统的研究和开发提供了完整的数据处理解决方案,帮助研究人员和开发者快速构建和测试推荐算法模型。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



