Changelog¶
0.15.1 (Apr 2024)¶
This release fixes the build failure on macOS and a few bugs in
UpliftTreeClassifier
.We have two new contributors, @lee-junseok and @IanDelbridge. Thanks for your contributions!
Updates¶
Relax
pandas
version requirement by @jeongyoonlee in https://github.com/uber/causalml/pull/743Remove undefined variables in
match.__main__()
by @jeongyoonlee in https://github.com/uber/causalml/pull/749Fix
distr_plot_single_sim()
by @jeongyoonlee in https://github.com/uber/causalml/pull/750Add
with_std
,with_counts
tocreate_table_one
by @lee-junseok in https://github.com/uber/causalml/pull/748fix stratified sampling call by @IanDelbridge in https://github.com/uber/causalml/pull/756
20240207 honest leaf size by @IanDelbridge in https://github.com/uber/causalml/pull/753
757: add
return_ci=True
in sensitivity by @lee-junseok in https://github.com/uber/causalml/pull/758Update sensitivity tests with more meta-learners by @jeongyoonlee in https://github.com/uber/causalml/pull/759
manually specify
multiprocessing
usefork
insetup.py
by @IanDelbridge in https://github.com/uber/causalml/pull/754
New contributors¶
@lee-junseok made their first contribution in https://github.com/uber/causalml/pull/748
@IanDelbridge made their first contribution in https://github.com/uber/causalml/pull/756
0.15.0 (Feb 2024)¶
In this release, we revamped documentation, cleaned up dependencies, and improved installation - in addition to the long list of bug fixes.
We have three new contributors, @peterloleungyau, @SuperBo, and @ZiJiaW, who submitted their first PRs to CausalML. @erikcs also contributed to @ras44’s PR #729 to add the wrapper for his MAQ implementation to CausalML. Thanks for your contributions!
Updates¶
Update python-publish.yml by @jeongyoonlee in https://github.com/uber/causalml/pull/673
Add build.[os, tools.python] to .readthedocs.yml by @jeongyoonlee in https://github.com/uber/causalml/pull/676
Update notebook example with causal trees interpretation by @alexander-pv in https://github.com/uber/causalml/pull/683
Remove the numpy and pandas version restriction in pyproject.toml by @jeongyoonlee in https://github.com/uber/causalml/pull/681
Add governance documents by @jeongyoonlee in https://github.com/uber/causalml/pull/688
Update GOVERNANCE.md by @ras44 in https://github.com/uber/causalml/pull/691
Dev/governance docs to snake-case by @ras44 in https://github.com/uber/causalml/pull/693
Reduce sklearn dependency in causalml by @alexander-pv in https://github.com/uber/causalml/pull/686
Update MAINTAINERS.md by @jeongyoonlee in https://github.com/uber/causalml/pull/696
Modified to speed up UpliftTreeClassifier.growDecisionTreeFrom. by @peterloleungyau in https://github.com/uber/causalml/pull/695
Update README.md by @ras44 in https://github.com/uber/causalml/pull/698
Add notebook examples to docs by @jeongyoonlee in https://github.com/uber/causalml/pull/697
resolves change requests in #166 by @ras44 in https://github.com/uber/causalml/pull/701
Fix the readthedocs build error by @jeongyoonlee in https://github.com/uber/causalml/pull/702
Replace Stack and PriorityHeap with cpp stack/heap methods in trees by @SuperBo in https://github.com/uber/causalml/pull/700
Hotfix for #701 by @jeongyoonlee in https://github.com/uber/causalml/pull/705
Dev/699 win build fix by @ras44 in https://github.com/uber/causalml/pull/710
expose n_jobs for rlearner by @ZiJiaW in https://github.com/uber/causalml/pull/714
minimal fix to resolve #707 by @ras44 in https://github.com/uber/causalml/pull/720
Add Python 3.10, 3.11, 3.12 to the testing by @cclauss in https://github.com/uber/causalml/pull/454
Remove Python 3.12 from the build tests in python-test.yaml by @jeongyoonlee in https://github.com/uber/causalml/pull/726
fix plot_std_diffs, add bal_tol, condense to one plot by @ras44 in https://github.com/uber/causalml/pull/723
Dev/677 documentation by @ras44 in https://github.com/uber/causalml/pull/725
documentation updates by @ras44 in https://github.com/uber/causalml/pull/728
resolves #730, docs clean conda install by @ras44 in https://github.com/uber/causalml/pull/731
minimal wrapper of MAQ #662 by @ras44 in https://github.com/uber/causalml/pull/729
Temporary fix for causal trees missing values support #733 by @alexander-pv in https://github.com/uber/causalml/pull/734
resolves #639, credit due to Dong Liu by @ras44 in https://github.com/uber/causalml/pull/722
New contributors¶
@peterloleungyau made their first contribution in https://github.com/uber/causalml/pull/695
@SuperBo made their first contribution in https://github.com/uber/causalml/pull/700
@ZiJiaW made their first contribution in https://github.com/uber/causalml/pull/714
0.14.1 (Aug 2023)¶
This release mainly addressed installation issues and updated documentation accordingly.
We have 4 new contributors. @bsaunders27, @xhulianoThe1, @zpppy, and @bsaunders23. Thanks for your contributions!
Updates¶
Update the python-publish workflow file to fix the package publish Gi… by @jeongyoonlee in https://github.com/uber/causalml/pull/633
Update Cython dependency by @alexander-pv in https://github.com/uber/causalml/pull/640
Fix for builds on Mac M1 infrastructure by @bsaunders27 in https://github.com/uber/causalml/pull/641
code cleanups by @xhulianoThe1 in https://github.com/uber/causalml/pull/634
support valid error early stopping by @zpppy in https://github.com/uber/causalml/pull/614
fix: update to
envs/
conda build for precompiled M1 installs by @bsaunders27 in https://github.com/uber/causalml/pull/646Installation updates to README and .github/workflows by @ras44 in https://github.com/uber/causalml/pull/637
fix: simulate_randomized_trial by @bsaunders23 in https://github.com/uber/causalml/pull/656
issue 252 by @vincewu51 in https://github.com/uber/causalml/pull/660
ras44/651 graph viz, resolves #651 by @ras44 in https://github.com/uber/causalml/pull/661
linted with black by @ras44 in https://github.com/uber/causalml/pull/663
Fix issue 650 by @vincewu51 in https://github.com/uber/causalml/pull/659
Install graphviz in the workflow builds by @jeongyoonlee in https://github.com/uber/causalml/pull/668
Update docs/installation.rst by @jeongyoonlee in https://github.com/uber/causalml/pull/667
Schedule monthly PyPI install tests by @jeongyoonlee in https://github.com/uber/causalml/pull/670
New contributors¶
@bsaunders27 made their first contribution in https://github.com/uber/causalml/pull/641
@xhulianoThe1 made their first contribution in https://github.com/uber/causalml/pull/634
@zpppy made their first contribution in https://github.com/uber/causalml/pull/614
@bsaunders23 made their first contribution in https://github.com/uber/causalml/pull/656
0.14.0 (July 2023)¶
CausalML surpassed 2MM downloads on PyPI and 4,100 stars on GitHub. Thanks for choosing CausalML and supporting us on GitHub.
We have 7 new contributors: @darthtrevino, @ras44, @AbhishekVermaDH, @joel-mcmurry, @AlxClt, @kklein, and @volico. Thanks for your contributions!
Updates¶
Fix the readthedocs build failure by @jeongyoonlee in https://github.com/uber/causalml/pull/545
Add
pyproject.toml
with basic build dependencies for PEP518 compliance by @darthtrevino in https://github.com/uber/causalml/pull/553bump
numpy
from 1.20.3 to 1.23.2 inenvironment-py38.yml
#338 by @ras44 in https://github.com/uber/causalml/pull/550CausalTree split criterions fix and fit optimization by @alexander-pv in https://github.com/uber/causalml/pull/557
fixing math notations for proper rendering by @AbhishekVermaDH in https://github.com/uber/causalml/pull/558
Update
methodology.rst
by @joel-mcmurry in https://github.com/uber/causalml/pull/568Causal trees bootstrapping and
max_leaf_nodes
fixes with minor update by @alexander-pv in https://github.com/uber/causalml/pull/583Fix #596 by @AlxClt in https://github.com/uber/causalml/pull/597
Add
**kwargs
toExplainer.plot_shap_values()
by @jeongyoonlee in https://github.com/uber/causalml/pull/603Make the Adam optimization optional and learning rate/epochs configurable in DragonNet by @jeongyoonlee in https://github.com/uber/causalml/pull/604
Fix bug in variance calculation in drivlearner. by @huigangchen in https://github.com/uber/causalml/pull/606
Bug Fix in Dragonnet: Adam parameter name lr depreciation by @huigangchen in https://github.com/uber/causalml/pull/617
Fix AttributeError in builds with
numpy>=1.24
andpandas>=2.0
by @jeongyoonlee in https://github.com/uber/causalml/pull/631Pass on
**kwargs
inplot_shap_values
of base meta leaner by @kklein in https://github.com/uber/causalml/pull/627Bump
scipy
from 1.4.1 to 1.10.0 by @dependabot in https://github.com/uber/causalml/pull/629Feature/ttest criterion by @volico in https://github.com/uber/causalml/pull/570
Added Interaction Tree (IT), Causal Inference Tree (CIT), and Invariant DDP (IDDP) by @jroessler in https://github.com/uber/causalml/pull/562
Causal trees option to return counterfactual outcomes by @alexander-pv in https://github.com/uber/causalml/pull/623
New contributors¶
@darthtrevino made their first contribution in https://github.com/uber/causalml/pull/553
@ras44 made their first contribution in https://github.com/uber/causalml/pull/550
@AbhishekVermaDH made their first contribution in https://github.com/uber/causalml/pull/558
@joel-mcmurry made their first contribution in https://github.com/uber/causalml/pull/568
@AlxClt made their first contribution in https://github.com/uber/causalml/pull/597
@kklein made their first contribution in https://github.com/uber/causalml/pull/627
@volico made their first contribution in https://github.com/uber/causalml/pull/570
0.13.0 (Sep 2022)¶
CausalML surpassed 1MM downloads on PyPI and 3,200 stars on GitHub. Thanks for choosing CausalML and supporting us on GitHub.
We have 7 new contributors @saiwing-yeung, @lixuan12315, @aldenrogers, @vincewu51, @AlkanSte, @enzoliao, and @alexander-pv. Thanks for your contributions!
@alexander-pv revamped CausalTreeRegressor and added CausalRandomForestRegressor with more seamless integration with scikit-learn’s Cython tree module. He also added integration with shap for causal tree/ random forest interpretation. Please check out the example notebook.
We dropped the support for Python 3.6 and removed its test workflow.
Updates¶
Fix typo
(% -> $)
by @saiwing-yeung in https://github.com/uber/causalml/pull/488Add function for calculating PNS bounds by @t-tte in https://github.com/uber/causalml/pull/482
Fix hard coding bug by @t-tte in https://github.com/uber/causalml/pull/492
Update README of
conda
install and instruction of maintain inconda-forge
by @ppstacy in https://github.com/uber/causalml/pull/485Update
examples.rst
by @lixuan12315 in https://github.com/uber/causalml/pull/496Fix incorrect
effect_learner_objective
inXGBRRegressor
by @jeongyoonlee in https://github.com/uber/causalml/pull/504Fix Filter F doesn’t work with latest
statsmodels
’ F test f-value format by @paullo0106 in https://github.com/uber/causalml/pull/505Exclude tests in
setup.py
by @aldenrogers in https://github.com/uber/causalml/pull/508Enabling higher orders feature importance for F filter and LR filter by @zhenyuz0500 in https://github.com/uber/causalml/pull/509
Ate pretrain 0506 by @vincewu51 in https://github.com/uber/causalml/pull/511
Update
methodology.rst
by @AlkanSte in https://github.com/uber/causalml/pull/518Fix the bug of incorrect result in qini for multiple models by @enzoliao in https://github.com/uber/causalml/pull/520
Test
get_qini()
by @enzoliao in https://github.com/uber/causalml/pull/523Fixed typo in
uplift_trees_with_synthetic_data.ipynb
by @jroessler in https://github.com/uber/causalml/pull/531Remove Python 3.6 test from workflows by @jeongyoonlee in https://github.com/uber/causalml/pull/535
Causal trees update by @alexander-pv in https://github.com/uber/causalml/pull/522
Causal trees interpretation example by @alexander-pv in https://github.com/uber/causalml/pull/536
0.12.3 (Feb 2022)¶
This patch is to release a version without the constraint for Shap to be abled to use for Conda.
Updates¶
#483 by @ppstacy: Modify the requirement version of Shap
0.12.2 (Feb 2022)¶
This patch includes three updates by @tonkolviktor and @heiderich as follows. We also start using black, a Python formatter. Please check out the updated contribution guideline to learn how to use it.
Updates¶
0.12.1 (Feb 2022)¶
This patch includes two bug fixes for UpliftRandomForestClassifier as follows:
Updates¶
0.12.0 (Jan 2022)¶
CausalML surpassed 637K downloads on PyPI and 2,500 stars on Github!
We have 4 new community contributors, Luis (@lgmoneda), Ravi (@raviksharma), Louis (@LouisHernandez17) and JackRab (@JackRab). Thanks for the contribution!
We refactored and speeded up UpliftTreeClassifier/UpliftRandomForestClassifier by 5x with Cython (#422 #440 by @jeongyoonlee)
We revamped our API documentation, it now includes the latest methodology, references, installation, notebook examples, and graphs! (#413 by @huigangchen @t-tte @zhenyuz0500 @jeongyoonlee @paullo0106)
Our team gave talks at 2021 Conference on Digital Experimentation @ MIT (CODE@MIT), Causal Data Science Meeting 2021, and KDD 2021 Tutorials on CausalML introduction and applications. Please take a look if you missed them! Full list of publications and talks can be found here.
Updates¶
Update documentation on Instrument Variable methods @huigangchen (#447)
Add benchmark simulation studies example notebook by @t-tte (#443)
Add sample_weight support for R-learner by @paullo0106 (#425)
Fix incorrect binning of numeric features in UpliftTreeClassifier by @jeongyoonlee (#420)
Update papers, talks, and publication info to README and refs.bib by @zhenyuz0500 (#410 #414 #433)
Add instruction for contributing.md doc by @jeongyoonlee (#408)
Fix incorrect feature importance calculation logic by @paullo0106 (#406)
Add parallel jobs support for NearestNeighbors search with n_jobs parameter by @paullo0106 (#389)
Fix bug in simulate_randomized_trial by @jroessler (#385)
Add GA pytest workflow by @ppstacy (#380)
0.11.0 (2021-07-28)¶
CausalML surpassed 2K stars!
We have 3 new community contributors, Jannik (@jroessler), Mohamed (@ibraaaa), and Leo (@lleiou). Thanks for the contribution!
Major Updates¶
Minor Updates¶
Fix inconsistent feature importance calculation in uplift tree by @paullo0106 (#372)
Fix filter method failure with NaNs in the data issue by @manojbalaji1 (#367)
Add automatic package publish by @jeongyoonlee (#354)
Fix typo in unit_selection optimization by @jeongyoonlee (#347)
Fix docs build failure by @jeongyoonlee (#335)
Convert pandas inputs to numpy in S/T/R Learners by @jeongyoonlee (#333)
Require scikit-learn as a dependency of setup.py by @ibraaaa (#325)
Fix AttributeError when passing in Outcome and Effect learner to R-Learner by @paullo0106 (#320)
Fix error when there is no positive class for KL Divergence filter by @lleiou (#311)
Add versions to cython and numpy in setup.py for requirements.txt accordingly by @maccam912 (#306)
0.10.0 (2021-02-18)¶
CausalML surpassed 235,000 downloads!
We have 5 new community contributors, Suraj (@surajiyer), Harsh (@HarshCasper), Manoj (@manojbalaji1), Matthew (@maccam912) and Václav (@vaclavbelak). Thanks for the contribution!
Major Updates¶
Minor Updates¶
Add propensity_learner to R-learner by @jeongyoonlee (#297)
Add BaseLearner class for other meta-learners to inherit from without duplicated code by @jeongyoonlee (#295)
Fix installation issue for Shap>=0.38.1 by @paullo0106 (#287)
Fix import error for sklearn>= 0.24 by @jeongyoonlee (#283)
Fix KeyError issue in Filter method for certain dataset by @surajiyer (#281)
Fix inconsistent cumlift score calculation of multiple models by @vaclavbelak (#273)
Fix duplicate values handling in feature selection method by @manojbalaji1 (#271)
Fix the color spectrum of SHAP summary plot for feature interpretations of meta-learners by @paullo0106 (#269)
Add IIA and value optimization related documentation by @t-tte (#264)
Fix StratifiedKFold arguments for propensity score estimation by @paullo0106 (#262)
Refactor the code with string format argument and is to compare object types, and change methods not using bound instance to static methods by @harshcasper (#256, #260)
0.9.0 (2020-10-23)¶
CausalML won the 1st prize at the poster session in UberML’20
DoWhy integrated CausalML starting v0.4 (release note)
CausalML team welcomes new project leadership, Mert Bay
We have 4 new community contributors, Mario Wijaya (@mwijaya3), Harry Zhao (@deeplaunch), Christophe (@ccrndn) and Georg Walther (@waltherg). Thanks for the contribution!
Major Updates¶
Minor Updates¶
Implement propensity model abstraction for common interface by @waltherg (#223)
Fix bug in BaseSClassifier and BaseXClassifier by @yungmsh and @ppstacy (#217), (#218)
Fix parentNodeSummary for UpliftDecisionTrees by @paullo0106 (#238)
Add pd.Series for propensity score condition check by @paullo0106 (#242)
Fix the uplift random forest prediction output by @ppstacy (#236)
Add functions and methods to init for optimization module by @mwijaya3 (#228)
Install GitHub Stale App to close inactive issues automatically @jeongyoonlee (#237)
Update documentation by @deeplaunch, @ccrndn, @ppstacy(#214, #231, #232)
0.8.0 (2020-07-17)¶
CausalML surpassed 100,000 downloads! Thanks for the support.
Major Updates¶
Minor Updates¶
0.7.1 (2020-05-07)¶
Special thanks to our new community contributor, Katherine (@khof312)!
Major Updates¶
Minor Updates¶
0.7.0 (2020-02-28)¶
Special thanks to our new community contributor, Steve (@steveyang90)!
Major Updates¶
Add a new nn inference submodule with DragonNet implementation by @yungmsh
Add a new feature selection submodule with filter feature selection methods by @zhenyuz0500
Minor Updates¶
Make propensity scores optional in all meta-learners by @ppstacy
Replace eli5 permutation importance with sklearn’s by @yluogit
Replace ElasticNetCV with LogisticRegressionCV in propensity.py by @yungmsh
Fix the normalized uplift curve plot with negative ATE by @jeongyoonlee
Fix the TravisCI FOSSA error for PRs from forked repo by @steveyang90
Add documentation about tree visualization by @zhenyuz0500
0.6.0 (2019-12-31)¶
Special thanks to our new community contributors, Fritz (@fritzo), Peter (@peterfoley) and Tomasz (@TomaszZamacinski)!
Improve UpliftTreeClassifier’s speed by 4 times by @jeongyoonlee
Fix impurity computation in CausalTreeRegressor by @TomaszZamacinski
Fix XGBoost related warnings by @peterfoley
Fix typos and improve documentation by @peterfoley and @fritzo
0.5.0 (2019-11-26)¶
Special thanks to our new community contributors, Paul (@paullo0106) and Florian (@FlorianWilhelm)!
Add TMLELearner, targeted maximum likelihood estimator to inference.meta by @huigangchen
Add an option to DGPs for regression to simulate imbalanced propensity distribution by @huigangchen
Fix incorrect edge connections, and add more information in the uplift tree plot by @paullo0106
Fix an installation error related to Cython and numpy by @FlorianWilhelm
Drop Python 2 support from setup.py by @jeongyoonlee
Update causaltree.pyx Cython code to be compatible with scikit-learn>=0.21.0 by @jeongyoonlee
0.4.0 (2019-10-21)¶
Add uplift_tree_plot() to inference.tree to visualize UpliftTreeClassifier by @zhenyuz0500
Add the Explainer class to inference.meta to provide feature importances using SHAP and eli5’s PermutationImportance by @yungmsh
Add bootstrap confidence intervals for the average treatment effect estimates of meta learners by @ppstacy
0.3.0 (2019-09-17)¶
Extend meta-learners to support classification by @t-tte
Extend meta-learners to support multiple treatments by @yungmsh
Fix a bug in uplift curves and add Qini curves/scores to metrics by @jeongyoonlee
Add inference.meta.XGBRRegressor with early stopping and ranking optimization by @yluogit
0.2.0 (2019-08-12)¶
Add optimize.PolicyLearner based on Athey and Wager 2017 [6]
Add the CausalTreeRegressor estimator based on Athey and Imbens 2016 [4] (experimental)
Add missing imports in features.py to enable label encoding with grouping of rare values in LabelEncoder()
Fix a bug that caused the mismatch between training and prediction features in inference.meta.tlearner.predict()
0.1.0 (unreleased)¶
Initial release with the Uplift Random Forest, and S/T/X/R-learners.