Skip to content

VerbekeLab/UMCT

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Uplift modeling with continuous treatments: A predict-then-optimize approach
Simon De Vos, Christopher Rickermann, Stefan Lessmann, Wouter Verbeke

This paper introduces a predict-then-optimize framework for uplift modeling with continuous treatments, combining causal machine learning to estimate conditional average dose responses (CADRs) and integer linear programming to optimize dose allocation, enabling effective and adaptable decision-making across diverse applications while considering constraints like fairness and instance-dependent costs.

A preprint is available on ArXiv.

If you use this work, please cite it as:

De Vos, S., Bockel-Rickermann, C., Lessmann, S., & Verbeke, W. (2025). Uplift modeling with continuous treatments: A predict-then-optimize approach. European Journal of Operational Research.

@article{de2025uplift,
  title={Uplift modeling with continuous treatments: A predict-then-optimize approach},
  author={De Vos, Simon and Bockel-Rickermann, Christopher and Lessmann, Stefan and Verbeke, Wouter},
  journal={European Journal of Operational Research},
  year={2025},
  publisher={Elsevier}
}

Installing

We have provided a requirements.txt file:

pip install -r requirements.txt

Please use the above in a newly created virtual environment to avoid clashing dependencies (can take some minutes).

The code uses the Gurobi optimization software (version 11.0.1). Gurobi offers free academic licenses.

Instructions:

  • In main.ipynb:
    • Set the project directory to your custom folder. E.g., DIR = r'C:\Users\...\...\...'
    • Specify model in cell three. E.g.: model_settings = {"model_type": SLearner, "model_name": "randomf"}
    • Set data, methods, optimization, plot, and project configurations in their corresponding .yaml files

Repository Structure

This repository is organized as follows:

|- config/
    |- data/config.yaml          # dataset configurations
    |- methods/config.yaml       # method configurations
    |- optimization/config.yaml  # optimization configurations
    |- plot/config.yaml          # plot configurations
    |- project/config.yaml       # project configurations
|- data/
    |- ihdp_s_1/             
        |- IHDP-S-1.csv          # IHDP dataset
|- experimental results/         # figures as displayed in the paper, organized per experiment
    |- experiment 0/             # figure of Appendix C
    |- experiment 1/     
    |- experiment 2/
    |- experiment 3/
|- main.ipynb                    # Main notebook -- entry point for running experiments
|- src/
    |- data/
        |- utils/
            |- __init__.py
            |- _dclasses.py
            |- _functional.py
            |- _sampling.py
        |- ihdp_1.py
        |- utils.py
    |- methods/
        |- utils/
            |- classes.py
            |- drnet.py
            |- losses.py
            |- regressors.py
            |- vcnet.py
        |- neural.py
        |- other.py
    |- metrics/
        |- metrics.py
    |- optimization/
        |- optimizer.py
        |- utils.py
    |- utils/
        |- metrics.py
        |- plotting.py
        |- setup.py
        |- training.py
        |- viz.py

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 70.7%
  • Jupyter Notebook 29.3%