Skip to content

niceboy120/CRL

Repository files navigation

Controllable Decision Transformer for Recommendation

现已可在Movielens-1M、KuaiRand_Pure、Zhihu1M数据集上运行。 步骤如下:

1. 将本库下载到本地

如果下载到实验室服务器,不要下载在/home/你自己/目录下,这个目录不适合存放大文件,放不下项目数据。 请用df -h查看磁盘空间,每个服务器都挂载了额外硬盘,一般在/data/你自己/, 如果/data/下没有“你自己”目录,请联系管理员创造一个。

此时,在服务器上的/data/你自己/下,下载本库,并进入本库的根目录中

git clone https://github.com/chongminggao/CRL.git
cd CRL

2. 进入CRL目录,下载数据集

以下代码请逐行运行:

wget https://nas.chongminggao.top:4430/datasets/CRL/environments.zip --no-check-certificate
unzip environments.zip
rm environments.zip

3. 安装相应的环境:

首先创造一个conda环境,并激活

conda create -n CRL python=3.11

然后安装相应的库(已经用清华源对pip进行加速)

conda activate CRL
sh install.sh  # 清华源加速

4. 运行

python run_CRL.py --env ml-1m  # run ML-1M dataset (default) 
python run_CRL.py --env Zhihu-1M  # run Zhihu-1M dataset
python run_CRL.py --env KuaiRand-Pure  # run KuaiRand-Pure dataset

python run_SL_main.py --epoch 10 --device 1 --model_name esmm --env ml-1m  --augment_rate 10 # 待尝试 & 
python run_SL_main.py --epoch 10 --device 2 --model_name esmm --env Zhihu-1M  --augment_rate 10 # 还没调试 &
python run_SL_main.py --epoch 10 --device 3 --model_name esmm --env KuaiRand-Pure  --augment_rate 10 # 还没调试 &

python run_DT4Rec.py --env ml-1m
python run_DT4Rec.py --env Zhihu-1M
python run_DT4Rec.py --env KuaiRand-Pure

说明: 首次运行时,会计算并存储一些文件,比如调用DeepCTR的库填补出所有一个groundtruth矩阵,即所有用户对所有商品的评分。这个过程稍慢一些。之后运行就会变快。

我写的比较结构化,借鉴了DeepCTR库中的feature_column的设计,以及tianshou库中的buffer设计。都已经自我包含了(不需要额外下载其他库),需要先读懂整个逻辑。 评估与训练是交替进行的。

TODO:

  • 快速在MovieLens调出性能。
  • 将该逻辑实现在公开数据集ZhihuRec以及KuaiRand-Pure数据集上。逻辑均与MovieLens处理一致。
  • 现在KuaiRand-1K数据进行了简单的分析,但KuaiRand-1K数据集实在太大了,id太多跑不动,放弃。不用管1K的数据。需要单独下载KuaiRand-Pure数据集重新处理。
  • 实现对比算法。

需要快速整理related work, 整理出适合作为对比算法的methods,到网上找寻相关代码。related work包括的方向:

  1. 序列推荐算法,比如SASRec,GRU4REC,参照杨正一、辛鑫论文里的实验对比算法。

  2. multi-objective推荐算法,包括:

  3. 可控的算法,包括传统帕累托优化的一些方法,这些方法没有强调强化学习,例如:

  4. 已有策略算法

About

Controllable Reinforcement Learning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors