uber / causalml

Uplift modeling and causal inference with machine learning algorithms
Other
4.91k stars 762 forks source link

About the training of slearner #657

Open Ramlinbird opened 11 months ago

Ramlinbird commented 11 months ago

I read the implementation of slearner for estimating causal effects with multiple treatments, and find that it will train multiple models of each treatment-control pair. My question is, can I only train one overall model, which consider the treatments/control as one input feature? And then I can loop all the treatments/control and choose the largest output's corresponding input as final choice.

I tried training one overall model as I said before, and the training/test auc is high. But in the uplift by deciles graph, the mse between actual uplift and predict uplift can be large in some treatment-control pair. How can I calibrate the predict uplift? (In fact, I trained the ESMM model with one append feature- treatment/control.)

huigangchen commented 11 months ago

Hi, I think this is an interesting idea. It is pretty straightforward to implement in S-learner and in an ideal situation it should produce similar results as done separately in the current implementation. But given the various capabilities of ML algorithms to approximate the data generating process and more importantly the potential imbalance of treat/control pairs in some cases it may produce different results.

S-learner may have bias in the uplift estimation (for example potentially from regularization bias). I wonder if it helps to calibrate the outcome for each treatment/control arm separately and then use the calibrated outcomes to generate the uplift estimate (I know it can be cheating as it looks more like T learner now).