uber / causalml

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

A few questions on CausalTreeRegressor and Meta Learners #398

Closed flippercy closed 9 months ago

flippercy commented 2 years ago

Hi @paullo0106, @jeongyoonlee :

First, nice work with this powerful library! I have a few questions:

  1. I am wondering whether algorithms in this library such as causaltreeregressor and meta learners can work with datasets with no control group. It is a common scenario in business (all customers got some types of treatment) and was discussed thoroughly in the reference papers; however, it seems that all algorithms / examples I've found here require a control group.

  2. Could the predict function of CausalTreeRegressor return a recommended treatment group based on the predicted treatment effect (as for upliftTreeClassifiers) ? What it returns so far is just the predicted treatment effect itself with the optimal treatment (I guess).

  3. Is CausalTreeRegressor the best option for an uplift modeling problem with multiple treatment options, no explicit control group and continuous response? Ideally I'd like the final model to be interpretable with common features such as variable importance.

Thank you.

jeongyoonlee commented 2 years ago

Hi @flippercy,

No method including causal trees estimates the treatment effect without control. It violates the requirement for one of the identification assumptions, probabilistic assignment, which requires every sample should have a probability to belong to either a control or a treatment group between 0 and 1. The intuition behind this requirement is that we need to observe "some" data from both the control and treatment groups to measure the treatment effect over control.

That being said, in your scenario, you can choose one of "treatments" as a control, and measure the treatment effects relative to that control. This way, you can use any meta-learners to estimate the relative treatment effects over the control.

Hope this helps.

flippercy commented 2 years ago

Thank you @jeongyoonlee! Could you also give me some insights on the question below, please?

Could the predict function of CausalTreeRegressor return a recommended treatment group based on the predicted treatment effect (as for upliftTreeClassifiers) ? What it returns now is just the predicted treatment effect itself with the optimal treatment (I guess).

ra312 commented 2 months ago

Hi @vincewu51, I have the same question as the last comment above. The whole issue's been closed as completed, but it seems CausalTreeRegressor is predicting the overall continuous effect of multiple treatment groups without specific score indicating the contribution factor of each treatment to the predicted response. Can you please provide more links to the corresponding code of the library or docs ?

jeongyoonlee commented 2 months ago

Hi, @ra312. CausalTreeRegressor, unlike UpliftTreeClassifier or most meta-learners, doesn't support multiple treatments at the moment.

I've created a feature request issue, #775, and will keep track of the progress there.

Thanks!