ALICE (Automated Learning and Intelligence for Causation and Economics) is a Microsoft Research project aimed at applying Artificial Intelligence concepts to economic decision making. One of its goals is to build a toolkit that combines state-of-the-art machine learning techniques with econometrics in order to bring automation to complex causal inference problems. To date, the ALICE Python SDK (econml) implements orthogonal machine learning algorithms such as the double machine learning work of Chernozhukov et al. This toolkit is designed to measure the causal effect of some treatment variable(s) t on an outcome variable y, controlling for a set of features x.
Hi @kbattocchi,
Thanks for all your work on econml!
Is there any specific reason that SingleTreePolicyInterpreter.interpret cannot support the sample_weight param?
The core learning should work: Internally, it could just pass the weights to PolicyTree.fit [0, 1].
From a quick look some peripheral functionality would also need to be adapted:
The sample_treatment_costs would need to be multiplied by the weights (or pre-multiplied by the caller).
The policy_value_ and always_treat_value_ would need to be converted to weighted averages.
Am I missing something?
An alternative is using a PolicyTree or DRPolicyTree directly, however, they do not output the CATEs and standard errors like the SingleTreePolicyInterpreter. In other words, the SingleTreePolicyInterpreter has the advantage of conveniently bundling both recommended treatments AND the underlying CATE estimates (along with other functionality like risk preferences and treatment costs).
Hi @kbattocchi, Thanks for all your work on econml!
Is there any specific reason that
SingleTreePolicyInterpreter.interpret
cannot support thesample_weight
param?The core learning should work: Internally, it could just pass the weights to
PolicyTree.fit
[0, 1].From a quick look some peripheral functionality would also need to be adapted:
sample_treatment_costs
would need to be multiplied by the weights (or pre-multiplied by the caller).policy_value_
andalways_treat_value_
would need to be converted to weighted averages.Am I missing something?
An alternative is using a PolicyTree or DRPolicyTree directly, however, they do not output the CATEs and standard errors like the
SingleTreePolicyInterpreter
. In other words, theSingleTreePolicyInterpreter
has the advantage of conveniently bundling both recommended treatments AND the underlying CATE estimates (along with other functionality like risk preferences and treatment costs).[0] https://github.com/microsoft/EconML/blob/b84072baff8ee9f44ebd6e19aff3a7194a66b0f4/econml/cate_interpreter/_interpreters.py#L414 [1] https://econml.azurewebsites.net/_autosummary/econml.policy.PolicyTree.html#econml.policy.PolicyTree.fit