TiM4Rec: An Efficient Sequential Recommendation Model Based on Time-Aware Structured State Space Duality Model
由于实验室规定,文章未正式发表前不允许公布模型源代码,所以目前的资源库还不完整,不过您不用担心,文章正式发表后我们会立即补充完整的模型代码。 您也可以先使用我们发布的训练日志文件检查TiM4Rec模型的性能。😊
If you want to read the English version, please click README_Eng.md.
TiM4Rec: An Efficient Sequential Recommendation Model Based on Time-Aware Structured State Space Duality Model
范昊,朱萌逸,胡彦蓉,冯海林,何志杰,刘洪久,刘清扬
Paper: https://arxiv.org/abs/2409.16182
我们提出了基于时间感知 SSD 的高效序列推荐模型TiM4Rec(Time-aware Mamba For Recommendation)。 我们在序列推荐领域对 Mamba 架构的时间感知增强方法进行了开创性的探索。 通过对 SSM 和 SSD 的深入分析,我们首次提出了适用于 SSD 架构的线性计算复杂度的时间感知增强方法。
接下来,我们将逐步引导您使用该资源库。 🤗
git clone https://github.com/AlwaysFHao/TiM4Rec.git
cd TiM4Rec/
以下是运行本项目所需的主要环境依赖:
- cuda 11.8
- python 3.10.14
- pytorch 2.3.0
- recbole 1.2.0
- mamba-ssm 2.2.2
- casual-conv1d 1.2.2 (由于我们使用 "nn.Conv1d "实现了与 casual-conv1d 相对应的功能,因此该条为可选项)
- psutil 6.1.0
- numpy 1.26.4
如果您在安装 Mamba 时遇到困难,请参阅我们编写的安装教程: https://github.com/AlwaysFHao/Mamba-Install 。
您还可以在文件 environment.yaml 查看所需的环境细节。
我们的工作利用了以下三个数据集,其中包括由 RecBole 提供的 🎦 MovieLens-1M
和 🛒 Amazon-Beauty
, 以及由 SSD4Rec 作者提供的 📱 KuaiRand
。
您可以通过以下链接获得所有的数据集: Quark Drive (password: SVzs) / BaiDu Cloud Drive (password: 1296) / Google Drive。
🎦 MovieLens-1M
: 该数据集包含从 MovieLens 平台收集的约 100 万条用户对电影的评分。🛒 Amazon-Beauty
: 亚马逊平台上收集至 2014 年的美容类别商品的用户评论数据集。📱 KuaiRand
: 该数据集取自 "快手 "APP的推荐日志,其中包括数百万次涉及随机显示物品的交互记录。
在本节中,我们将介绍项目结构。您可以点击展开下面的目录来查看项目结构:
📁 TiM4Rec
- 📁 assert | (存储readme相关的图片)
- 📁 baseline | (存储论文中所对比的基线模型)
- 📁 BERT4Rec
- 📜 config.yaml
- 🐍 run.py
- 📁 ...
- 📁 config | (存储TiM4Rec模型的配置文件)
- 📜 config4beauty_64d.yaml
- 📜 config4kuai_64d.yaml
- 📜 config4movie_64d.yaml
- 📜 config4movie_256d.yaml
- 📁 dataset | (存储数据集文件)
- 📁 amazon-beauty
- 📖 amazon-beauty.inter
- 📖 amazon-beauty.item
- 📁 ...
- 📁 log | (存储训练日志文件)
- 📁 log_tensorboard | (存储tensorboard的训练日志文件)
- 📁 saved | (存储模型权重保存文件)
- 📜 environment.yaml
- 🐍 run.py
- 🐍 ssd.py
- 🐍 test.py
- 🐍 tim4rec.py
您可以从云盘中下载文件 Quark Drive (password: SVzs) / BaiDu Cloud Drive (password: 1296) / Google Drive,并将它们放到相应的文件夹中。
好了,恭喜你🎇, 你已经完成所有的准备工作👍,我们可以开始训练模型了!😄
本节将介绍模型的训练方法。
在准备好所有运行环境和必要文件(如数据集)后, 请按照以下格式修改 🐍 run.py
中的配置文件路径:
config = Config(model=TiM4Rec, config_file_list=['config/config4{dataset_name}_{dim}d.yaml'])
完成上述步骤之后,即可直接运行:
python run.py
如果要进行断点续训,则需要在相应配置文件的 checkpoint_path
配置项中添加模型权重路径。
checkpoint_path: saved/model_weight_name.pth
您可以直接选择我们在 📁 baseline
中提供的模型文件进行对比, 这里我们用 SASRec
模型进行举例。
cd ./baseline/SASRec
python run.py
如果你想直接测试指定模型权重的性能,可以参考 3.1 章节, 修改 🐍 test.py
文件中的配置文件名, 在配置文件中添加项 checkpoint_path
, 然后运行test文件:
python test.py
我们的代码实现是基于 RecBole 和 Pytorch 框架, 并且参考 Mamba4Rec 和 Mamba 的工作。 基线模型的实现参考了 TiSASRec.pytorch 和 LRURec。 此外,我们在编写readme文档时还参考了 MISSRec 工作。
如果我们的工作对您有所启发或提供了参考,请考虑引用:
@article{fan2024tim4rec,
title={TiM4Rec: An Efficient Sequential Recommendation Model Based on Time-Aware Structured State Space Duality Model},
author={Fan, Hao and Zhu, Mengyi and Hu, Yanrong and Feng, Hailin and He, Zhijie and Liu, Hongjiu and Liu, Qingyang},
journal={arXiv preprint arXiv:2409.16182},
year={2024}
}