Skip to content

Latest commit

 

History

History
400 lines (328 loc) · 28.9 KB

changelog.rst

File metadata and controls

400 lines (328 loc) · 28.9 KB

Changelog

You can find the latest changes in the GitHub releases

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 #743
  • Remove undefined variables in match.__main__() by @jeongyoonlee in #749
  • Fix distr_plot_single_sim() by @jeongyoonlee in #750
  • Add with_std, with_counts to create_table_one by @lee-junseok in #748
  • fix stratified sampling call by @IanDelbridge in #756
  • 20240207 honest leaf size by @IanDelbridge in #753
  • 757: add return_ci=True in sensitivity by @lee-junseok in #758
  • Update sensitivity tests with more meta-learners by @jeongyoonlee in #759
  • manually specify multiprocessing use fork in setup.py by @IanDelbridge in #754

New contributors

  • @lee-junseok made their first contribution in #748
  • @IanDelbridge made their first contribution in #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 #673
  • Add build.[os, tools.python] to .readthedocs.yml by @jeongyoonlee in #676
  • Update notebook example with causal trees interpretation by @alexander-pv in #683
  • Remove the numpy and pandas version restriction in pyproject.toml by @jeongyoonlee in #681
  • Add governance documents by @jeongyoonlee in #688
  • Update GOVERNANCE.md by @ras44 in #691
  • Dev/governance docs to snake-case by @ras44 in #693
  • Reduce sklearn dependency in causalml by @alexander-pv in #686
  • Update MAINTAINERS.md by @jeongyoonlee in #696
  • Modified to speed up UpliftTreeClassifier.growDecisionTreeFrom. by @peterloleungyau in #695
  • Update README.md by @ras44 in #698
  • Add notebook examples to docs by @jeongyoonlee in #697
  • resolves change requests in #166 by @ras44 in #701
  • Fix the readthedocs build error by @jeongyoonlee in #702
  • Replace Stack and PriorityHeap with cpp stack/heap methods in trees by @SuperBo in #700
  • Hotfix for #701 by @jeongyoonlee in #705
  • Dev/699 win build fix by @ras44 in #710
  • expose n_jobs for rlearner by @ZiJiaW in #714
  • minimal fix to resolve #707 by @ras44 in #720
  • Add Python 3.10, 3.11, 3.12 to the testing by @cclauss in #454
  • Remove Python 3.12 from the build tests in python-test.yaml by @jeongyoonlee in #726
  • fix plot_std_diffs, add bal_tol, condense to one plot by @ras44 in #723
  • Dev/677 documentation by @ras44 in #725
  • documentation updates by @ras44 in #728
  • resolves #730, docs clean conda install by @ras44 in #731
  • minimal wrapper of MAQ #662 by @ras44 in #729
  • Temporary fix for causal trees missing values support #733 by @alexander-pv in #734
  • resolves #639, credit due to Dong Liu by @ras44 in #722

New contributors

  • @peterloleungyau made their first contribution in #695
  • @SuperBo made their first contribution in #700
  • @ZiJiaW made their first contribution in #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 #633
  • Update Cython dependency by @alexander-pv in #640
  • Fix for builds on Mac M1 infrastructure by @bsaunders27 in #641
  • code cleanups by @xhulianoThe1 in #634
  • support valid error early stopping by @zpppy in #614
  • fix: update to envs/ conda build for precompiled M1 installs by @bsaunders27 in #646
  • Installation updates to README and .github/workflows by @ras44 in #637
  • fix: simulate_randomized_trial by @bsaunders23 in #656
  • issue 252 by @vincewu51 in #660
  • ras44/651 graph viz, resolves #651 by @ras44 in #661
  • linted with black by @ras44 in #663
  • Fix issue 650 by @vincewu51 in #659
  • Install graphviz in the workflow builds by @jeongyoonlee in #668
  • Update docs/installation.rst by @jeongyoonlee in #667
  • Schedule monthly PyPI install tests by @jeongyoonlee in #670

New contributors

  • @bsaunders27 made their first contribution in #641
  • @xhulianoThe1 made their first contribution in #634
  • @zpppy made their first contribution in #614
  • @bsaunders23 made their first contribution in #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 #545
  • Add pyproject.toml with basic build dependencies for PEP518 compliance by @darthtrevino in #553
  • bump numpy from 1.20.3 to 1.23.2 in environment-py38.yml #338 by @ras44 in #550
  • CausalTree split criterions fix and fit optimization by @alexander-pv in #557
  • fixing math notations for proper rendering by @AbhishekVermaDH in #558
  • Update methodology.rst by @joel-mcmurry in #568
  • Causal trees bootstrapping and max_leaf_nodes fixes with minor update by @alexander-pv in #583
  • Fix #596 by @AlxClt in #597
  • Add **kwargs to Explainer.plot_shap_values() by @jeongyoonlee in #603
  • Make the Adam optimization optional and learning rate/epochs configurable in DragonNet by @jeongyoonlee in #604
  • Fix bug in variance calculation in drivlearner. by @huigangchen in #606
  • Bug Fix in Dragonnet: Adam parameter name lr depreciation by @huigangchen in #617
  • Fix AttributeError in builds with numpy>=1.24 and pandas>=2.0 by @jeongyoonlee in #631
  • Pass on **kwargs in plot_shap_values of base meta leaner by @kklein in #627
  • Bump scipy from 1.4.1 to 1.10.0 by @dependabot in #629
  • Feature/ttest criterion by @volico in #570
  • Added Interaction Tree (IT), Causal Inference Tree (CIT), and Invariant DDP (IDDP) by @jroessler in #562
  • Causal trees option to return counterfactual outcomes by @alexander-pv in #623

New contributors

  • @darthtrevino made their first contribution in #553
  • @ras44 made their first contribution in #550
  • @AbhishekVermaDH made their first contribution in #558
  • @joel-mcmurry made their first contribution in #568
  • @AlxClt made their first contribution in #597
  • @kklein made their first contribution in #627
  • @volico made their first contribution in #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 #488
  • Add function for calculating PNS bounds by @t-tte in #482
  • Fix hard coding bug by @t-tte in #492
  • Update README of conda install and instruction of maintain in conda-forge by @ppstacy in #485
  • Update examples.rst by @lixuan12315 in #496
  • Fix incorrect effect_learner_objective in XGBRRegressor by @jeongyoonlee in #504
  • Fix Filter F doesn't work with latest statsmodels' F test f-value format by @paullo0106 in #505
  • Exclude tests in setup.py by @aldenrogers in #508
  • Enabling higher orders feature importance for F filter and LR filter by @zhenyuz0500 in #509
  • Ate pretrain 0506 by @vincewu51 in #511
  • Update methodology.rst by @AlkanSte in #518
  • Fix the bug of incorrect result in qini for multiple models by @enzoliao in #520
  • Test get_qini() by @enzoliao in #523
  • Fixed typo in uplift_trees_with_synthetic_data.ipynb by @jroessler in #531
  • Remove Python 3.6 test from workflows by @jeongyoonlee in #535
  • Causal trees update by @alexander-pv in #522
  • Causal trees interpretation example by @alexander-pv in #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

  • #473 by @tonkolviktor: Open up the scipy dependency version
  • #476 by @heiderich: Use preferred backend for joblib instead of hard-coding it
  • #477 by @heiderich: Allow parallel prediction for UpliftRandomForestClassifier and make the joblib's preferred backend configurable

0.12.1 (Feb 2022)

This patch includes two bug fixes for UpliftRandomForestClassifier as follows:

Updates

  • #462 by @paullo0106: Use the correct treatment_idx for fillTree() when applying validation data set
  • #468 by @jeongyoonlee: Switch the joblib backend for UpliftRandomForestClassifier to threading to avoid memory copy across trees

0.12.0 (Jan 2022)

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)

Major Updates

  • Make tensorflow dependency optional and add python 3.9 support by @jeongyoonlee (#343)
  • Add delta-delta-p (ddp) tree inference approach by @jroessler (#327)
  • Add conda env files for Python 3.6, 3.7, and 3.8 by @jeongyoonlee (#324)

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)

Major Updates

  • Add Policy learner, DR learner, DRIV learner by @huigangchen (#292)
  • Add wrapper for CEVAE, a deep latent-variable and variational autoencoder based model by @ppstacy(#276)

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

  • Add feature importance and its visualization to UpliftDecisionTrees and UpliftRF by @yungmsh (#220)
  • Add feature selection example with Filter methods by @paullo0106 (#223)

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

  • Add value optimization to optimize by @t-tte (#183)
  • Add counterfactual unit selection to optimize by @t-tte (#184)
  • Add sensitivity analysis to metrics by @ppstacy (#199, #212)
  • Add the iv estimator submodule and add 2SLS model to it by @huigangchen (#201)

Minor Updates

  • Add GradientBoostedPropensityModel by @yungmsh (#193)
  • Add covariate balance visualization by @yluogit (#200)
  • Fix bug in the X learner propensity model by @ppstacy (#209)
  • Update package dependencies by @jeongyoonlee (#195, #197)
  • Update documentation by @jeongyoonlee, @ppstacy and @yluogit (#181, #202, #205)

0.7.1 (2020-05-07)

Special thanks to our new community contributor, Katherine (@khof312)!

Major Updates

  • Adjust matching distances by a factor of the number of matching columns in propensity score matching by @yungmsh (#157)
  • Add TMLE-based AUUC/Qini/lift calculation and plotting by @ppstacy (#165)

Minor Updates

  • Fix typos and update documents by @paullo0106, @khof312, @jeongyoonlee (#150, #151, #155, #163)
  • Fix error in UpliftTreeClassifier.kl_divergence() for pk == 1 or 0 by @jeongyoonlee (#169)
  • Fix error in BaseRRegressor.fit() without propensity score input by @jeongyoonlee (#170)

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 :cite:`athey2017efficient`
  • Add the CausalTreeRegressor estimator based on Athey and Imbens 2016 :cite:`athey2016recursive` (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.