This is the code for the experiments in the paper.
Python environment
environment.yml
Hardware?
Everything here we have run on CPU, except where specified. There, a single NVIDIA A40 GPU is used.
For all of these, the shell scripts must be modified to use your own data directories and wandb username. Run all of the below from the parent directory, not the data_prep directory.
Synthetic data
./data_prep/generate_data_synthetic.sh
MIND dataset (semisynthetic) (1) Download and process MIND (news data), (2) generate features using text, to be used for training, (3) generate features using text, to generate DGP, (4) generate DGP using features. Steps 2 and 3 use GPU.
./data_prep/process_data_MIND.sh
./data_prep/generate_text_features.sh
./data_prep/generate_text_labels.sh
./data_prep/generate_data_semisynthetic.sh
For all of these, the shell scripts and/or config files must be modified to use your own data directories and weights and biases (wandb) username. The trained models are saved in subdirectories inside the data directories.
Synthetic dataset To train flexible neural net sequence models on synthetic dataset: run
./shell_scripts/train_context_synthetic.sh
MIND dataset (semisynthetic) To train flexible neural net sequence models on synthetic dataset: run
./shell_scripts/train_context_semisynthetic.sh
We run and cache some bandit algorithms, with commands listed here. Others (that are faster) we run directly alongside plotting in a jupyter notebook (see next section).
- For all of these, the shell scripts must be modified to use the directories containing the sequential models trained in the previous step.
- In these shell scripts, we have a for-loop over many environments. Please parallelize appropriately according to your resources.
- Adjust the bandit algorithm as appropriate (argument
--bandit_alg).
Examples for TS-Gen:
./shell_scripts/run_bandit_synthetic.sh
./shell_scripts/run_bandit_semisynthetic.sh
Examples for TS-Neural-Linear:
./shell_scripts/run_bandit_neural_linear_synthetic.sh
./shell_scripts/run_bandit_neural_linear_semisynthetic.sh
Synthetic (bimodal) dataset
synthetic_regret.ipynb
MIND (news) dataset
semisynthetic_regret.ipynb
Fit priors for TS-Linear and TS-Neural-Linear
fit_prior_ts_linear.ipynb
fit_prior_ts_neural_linear.ipynb
Additional code for some experiments in the appendix are in the extras folder