WWW 2026 paper: "R2NS: Recall and Re-ranking of Negative Samples for Sequential Recommendation"
本仓库是 WWW 2026 论文 R2NS: Recall and Re-ranking of Negative Samples for Sequential Recommendation 的官方代码仓库。
仓库主要包含三部分:
Ours/:R2NS 主方法实现Baselines/:多种负采样基线方法WWW_2026_Camera_Ready.pdf:论文 camera-ready 版本
- 中文:仓库结构
- 中文:环境依赖
- 中文:数据格式
- 中文:主方法运行
- 中文:基线运行
- 中文:输出结果
- 中文:复现注意事项
- English: Overview
- English: Environment
- English: Data Format
- English: Run R2NS
- English: Run Baselines
- English: Reproducibility Notes
R2NS/
├── Ours/
│ ├── data/
│ ├── run_finetune.bash
│ ├── run_finetune_full.py
│ ├── datasets.py
│ ├── models.py
│ ├── modules.py
│ ├── trainers.py
│ └── utils.py
├── Baselines/
│ ├── Neg_samples_DNS+/
│ ├── Neg_samples_gnno/
│ ├── Neg_samples_posmix/
│ ├── Neg_samples_srns/
│ └── Neg_samples_two_pass/
├── WWW_2026_Camera_Ready.pdf
└── README.md
仓库目前没有提供固定版本的 requirements.txt,需要手动安装依赖。
建议环境:
- Python 3.9+
- 支持 CUDA 的 PyTorch
- NVIDIA GPU
代码中实际使用到的核心依赖包括:
torchnumpyscipypandasscikit-learntqdmopenpyxltexttabletransformersrecbolemamba-ssm
一个常见的环境配置方式如下:
conda create -n r2ns python=3.10 -y
conda activate r2ns
# 请根据你的 CUDA 版本先安装 PyTorch
# 例如:
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install numpy scipy pandas scikit-learn tqdm openpyxl texttable transformers recbole mamba-ssm代码默认每个数据集包含三个切分文件:
DATASET_train.txtDATASET_val.txtDATASET_test.txt
每一行表示一个用户的交互序列,物品 ID 之间用空格分隔,例如:
1802 1314
1802 1314 1313
当前仓库中只附带了 Beauty 的样例数据:
Ours/data/Beauty_train.txtOurs/data/Beauty_val.txtOurs/data/Beauty_test.txt
如果你要接入自己的数据集,只需要把三个文件放进 data/ 目录,并保持命名方式不变。
请从 Ours/ 目录启动:
cd Ours
python run_finetune_full.py \
--data_name Beauty \
--backbone SASRec \
--stage2_epoch 30 \
--neg_sampler Uniform \
--CL_type Gentle \
--loss_type BCE \
--M 5 \
--N 100 \
--K1 0.05代码和脚本中常见的 backbone 包括:
SASRecMamba4RecGRU4RecLightSANsLinrecFMLPRecModel
cd Ours
bash run_finetune.bash运行批处理脚本前,建议先检查并修改:
modelsdatasetsK1stage2_epochAVAILABLE_GPUSJOBS_PER_GPU
该脚本会并行启动多个训练任务,并将日志写入脚本中配置的输出目录。
仓库中包含以下基线目录:
Baselines/Neg_samples_DNS+Baselines/Neg_samples_gnnoBaselines/Neg_samples_posmixBaselines/Neg_samples_srnsBaselines/Neg_samples_two_pass
每个基线目录都带有各自的 run_finetune_full.py 和 run_finetune.bash。
基线脚本默认从 ./data/ 读取数据,但当前仓库里实际只有 Ours/data/。
因此在运行基线前,你需要做下面两件事中的一种:
- 在对应基线目录下创建一个名为
data的软链接。 - 手动运行
run_finetune_full.py,并显式传入--data_dir ../../Ours/data/。
示例:
ln -s ../../Ours/data Baselines/Neg_samples_srns/data
cd Baselines/Neg_samples_srns
bash run_finetune.bash或者:
cd Baselines/Neg_samples_srns
python run_finetune_full.py \
--data_dir ../../Ours/data/ \
--data_name Beauty \
--backbone SASRec \
--neg_sampler DNS \
--CL_type Radical \
--start_epoch 30 \
--N 100根据不同脚本和目录,程序通常会生成:
- 实验日志目录,例如
res/、res2/或其他自定义目录 - 保存在
output/下的模型 checkpoint - 类似
CL1.xlsx的 Excel 汇总文件
这个仓库已经足够用于阅读和继续实验,但如果你准备大规模复现,建议先检查以下几点:
Ours/run_finetune_full.py在写结果时使用了args.start2_epoch,但参数解析里实际定义的是stage2_epoch。Ours/utils.py里写 Excel 时使用了args.K,而主方法脚本中定义的是K1和K2。- 多个批量脚本里带有手工覆盖过的数据集列表、模型列表、GPU ID 和输出目录。
- 当前仓库快照里只包含
Ours/data/Beauty_*这组示例数据。
如果你要严格复现论文最终表格,建议先检查一遍脚本参数和结果落盘逻辑,再启动长时间训练任务。
如果这个仓库对你的研究有帮助,请引用对应的 WWW 2026 论文。
This repository is the official implementation of the WWW 2026 paper "R2NS: Recall and Re-ranking of Negative Samples for Sequential Recommendation".
The repository mainly contains:
Ours/: the implementation of R2NSBaselines/: several negative sampling baselinesWWW_2026_Camera_Ready.pdf: the camera-ready paper
- Overview
- Repository Structure
- Environment
- Data Format
- Run R2NS
- Run Baselines
- Outputs
- Reproducibility Notes
R2NS/
├── Ours/
│ ├── data/
│ ├── run_finetune.bash
│ ├── run_finetune_full.py
│ ├── datasets.py
│ ├── models.py
│ ├── modules.py
│ ├── trainers.py
│ └── utils.py
├── Baselines/
│ ├── Neg_samples_DNS+/
│ ├── Neg_samples_gnno/
│ ├── Neg_samples_posmix/
│ ├── Neg_samples_srns/
│ └── Neg_samples_two_pass/
├── WWW_2026_Camera_Ready.pdf
└── README.md
This repository does not currently provide a pinned requirements.txt, so dependencies need to be installed manually.
Recommended environment:
- Python 3.9+
- PyTorch with CUDA support
- NVIDIA GPU
Core dependencies used by the code include:
torchnumpyscipypandasscikit-learntqdmopenpyxltexttabletransformersrecbolemamba-ssm
A typical setup is:
conda create -n r2ns python=3.10 -y
conda activate r2ns
# Install PyTorch first according to your CUDA version
# Example:
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install numpy scipy pandas scikit-learn tqdm openpyxl texttable transformers recbole mamba-ssmEach dataset is expected to contain three split files:
DATASET_train.txtDATASET_val.txtDATASET_test.txt
Each line is a user interaction sequence represented by space-separated item IDs, for example:
1802 1314
1802 1314 1313
The current repository snapshot only includes example files for Beauty:
Ours/data/Beauty_train.txtOurs/data/Beauty_val.txtOurs/data/Beauty_test.txt
To use your own dataset, place the three files under a data/ directory and keep the naming convention unchanged.
Run from the Ours/ directory:
cd Ours
python run_finetune_full.py \
--data_name Beauty \
--backbone SASRec \
--stage2_epoch 30 \
--neg_sampler Uniform \
--CL_type Gentle \
--loss_type BCE \
--M 5 \
--N 100 \
--K1 0.05Common backbone choices in the codebase include:
SASRecMamba4RecGRU4RecLightSANsLinrecFMLPRecModel
cd Ours
bash run_finetune.bashBefore launching the batch script, you should review:
modelsdatasetsK1stage2_epochAVAILABLE_GPUSJOBS_PER_GPU
The script launches multiple jobs in parallel and writes logs to its configured output directory.
The repository includes the following baseline directories:
Baselines/Neg_samples_DNS+Baselines/Neg_samples_gnnoBaselines/Neg_samples_posmixBaselines/Neg_samples_srnsBaselines/Neg_samples_two_pass
Each baseline directory has its own run_finetune_full.py and run_finetune.bash.
Baseline scripts read data from ./data/ by default, while this repository currently only includes Ours/data/.
So before running a baseline, do one of the following:
- Create a symbolic link named
datainside the target baseline directory. - Run
run_finetune_full.pymanually and pass--data_dir ../../Ours/data/.
Example:
ln -s ../../Ours/data Baselines/Neg_samples_srns/data
cd Baselines/Neg_samples_srns
bash run_finetune.bashOr:
cd Baselines/Neg_samples_srns
python run_finetune_full.py \
--data_dir ../../Ours/data/ \
--data_name Beauty \
--backbone SASRec \
--neg_sampler DNS \
--CL_type Radical \
--start_epoch 30 \
--N 100Depending on the script and directory, the code may generate:
- experiment log directories such as
res/,res2/, or other custom folders - model checkpoints under
output/ - Excel summary files such as
CL1.xlsx
This repository is usable for reading and continuing experiments, but a few details should be checked before large-scale reproduction:
Ours/run_finetune_full.pywrites results usingargs.start2_epoch, while the parser actually definesstage2_epoch.Ours/utils.pyexpectsargs.Kwhen writing Excel results, while the main R2NS script definesK1andK2.- Several batch scripts contain manually overwritten dataset lists, model lists, GPU IDs, and output directories.
- The current repository snapshot only includes
Ours/data/Beauty_*.
If you plan to reproduce the final tables strictly, review the script arguments and result-writing logic before launching long runs.
If you find this repository useful, please cite the corresponding WWW 2026 paper.