Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Non Parametric DML with the weighting trick and ForestDML, ForestDRLearner with CIs #170

Merged
merged 87 commits into from
Dec 4, 2019

Conversation

vasilismsr
Copy link
Contributor

@vasilismsr vasilismsr commented Nov 18, 2019

Added a SubsampledHonestForest scikit-learn extension, which is a regression forest that implements honesty and instead of bootstrap, performs subsampling to construct each tree. It also offers predict_interval via the bootstrap of little bags approach and the asymptotic normal characterization of the prediction estimate.

Added NonParamDMLCateEstimator, which is essentially another meta-learner that has an arbitrary final stage that supports fit and predict (albeit fit must accept sample_weight). This is based on the observation that, when treatment is single-dimensional or binary one can view the RLearner problem as a weighted regression.

Added ForestDMLCateEstimator (which is essentially a causal forest implemented slightly differently via viewing it as a weighted non-parametric regression and piggy backing on scikit-learn tree construction) and has bootstrap of little bags based inference. This is essentially a NonParamDMLCateEstimator with a SubsampledHonestForest final model.

Also added ForestDRLearner, which uses the doubly robust approach and uses an honest forest for each pseudo outcome regression. This also offers non-parametric confidence intervals to the Doubly Robust estimation classes. This is essentially a DRLearner with a SubsampledHonestForest final model.

Side additions:

  • re-organized inference class hierarchy to make most of code re-use.
  • added monte_carlo folder and monte_carlo experiments for LinearDMLCateEstimator and SubsampledHonestForest

@vasilismsr vasilismsr added the enhancement New feature or request label Nov 18, 2019
@kbattocchi
Copy link
Collaborator

Is there a reason to combine both of these changes into one PR? It makes for a lot of code to review at once...

Copy link
Collaborator

@kbattocchi kbattocchi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

econml/sklearn_extensions/ensemble.py Outdated Show resolved Hide resolved
econml/sklearn_extensions/ensemble.py Show resolved Hide resolved
econml/sklearn_extensions/ensemble.py Show resolved Hide resolved
econml/sklearn_extensions/ensemble.py Outdated Show resolved Hide resolved
@vasilismsr vasilismsr merged commit f7cf669 into master Dec 4, 2019
@vasilismsr vasilismsr deleted the vasilis/forest_dml branch December 4, 2019 23:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants