Interpret Versions Save

Fit interpretable models. Explain blackbox machine learning.

v0.6.1

2 weeks ago

v0.6.1 - 2024-04-14

Fixed

  • added compatibility with numpy 2.0 thanks to @DerWeh in PR #525
  • fixed bug that was preventing SIMD from being used in python
  • removed approximate division in SIMD since the approximation was too inaccurate

Changed

  • EBM fitting time reduced

v0.6.0

1 month ago

v0.6.0 - 2024-03-16

Added

  • Documentation on recommended hyperparameters to help users optimize their models.
  • Support for monotone_constraints during model fitting, although post-processed monotonization is still suggested/preferred.
  • The EBMModel class now includes _more_tags for better integration with the scikit-learn API, thanks to contributions from @DerWeh.

Changed

  • Default max_rounds parameter increased from 5,000 to 25,000, for improved model accuracy.
  • Numerous code simplifications, additional tests, and enhancements for scikit-learn compatibility, thanks to @DerWeh.
  • The greedy boosting algorithm has been updated to support variable-length greedy sections, offering more flexibility during model training.
  • Full compatibility with Python 3.12.
  • Removal of the DecisionListClassifier from our documentation, as the skope-rules package seems to no longer be actively maintained.

Fixed

  • The sweep function now properly returns self, correcting an oversight identified by @alvanli.
  • Default exclude parameter set to None, aligning with scikit-learn's expected defaults, fixed by @DerWeh.
  • A potential bug when converting features from categorical to continuous values has been addressed.
  • Updated to handle the new return format for TreeShap in the SHAP 0.45.0 release.

Breaking Changes

  • replaced the greediness __init__ parameter with greedy_ratio and cyclic_progress parameters for better control of the boosting process (see documentation for notes on greedy_ratio and cyclic_progress)
  • replaced breakpoint_iteration_ with best_iteration_, which now contains the number of boosting steps rather than the number of boosting rounds

v0.5.1

2 months ago

v0.5.1 - 2024-02-08

Added

  • Added new __init__ parameter: interaction_smoothing_rounds
  • Added new __init__ parameter: min_hessian
  • synthetic dataset generator (make_synthetic) for testing GAMs and for documentation

Changed

  • default parameters have been modified to improve the accuracy of EBMs
  • changed boosting internals to use LogitBoost to improve accuracy
  • changed interaction detection to use hessians to improve interaction selection
  • enabled smoothing_rounds by default to improve the smoothness of EBMs
  • added the ability to specify interactions via feature names or negative indexing
  • improved the speed of Morris sensitivity and partial dependence
  • python 3.12 support for core EBMs. Some of our optional dependencies do not yet support python 3.12 though
  • made early stopping more consistent and changed the early_stopping_tolerance to be a percentage

Fixed

  • avoid displaying a scroll bar by default in jupyter notebook cells
  • removed the dependency on deprecated distutils

Breaking Changes

  • changed the internal representation for classifiers that have just 1 class

v0.5.0

4 months ago

v0.5.0 - 2023-12-13

Added

  • added support for AVX-512 in PyPI installations to improve fitting speed
  • introduced an option to disable SIMD optimizations through the debug_mode function in python
  • exposed public utils.link_func and utils.inv_link functions

Changed

  • the interpret-core package now installs the dependencies required to build and predict EBMs by default without needing to specify the [required] pip install flag
  • experimental/private support for OVR multiclass EBMs
  • added bagged_intercept_ attribute to store the intercepts for the bagged models

Fixed

  • resolved an issue in merge_ebms where the merge would fail if all EBMs in the merge contained features with only one bin (issue #485)
  • resolved multiple future warnings from other packages

Breaking Changes

  • changed how monoclassification (degenerate classification with 1 class) is expressed
  • replaced predict_and_contrib function with simpler eval_terms function that returns only the per-term contribution values. If you need both the contributions and predictions use: interpret.utils.inv_link(ebm.eval_terms(X).sum(axis=1) + ebm.intercept_, ebm.link_)
  • separate to_json into to_jsonable (for python objects) and to_json (for files) functions
  • create a new link function string for multiclass that is separate from binary classification
  • for better scikit-learn compliance, removed the decision_function from the ExplainableBoostingRegressor

v0.4.4

8 months ago

v0.4.4 - 2023-08-26

Added

  • added the following model editing functions: copy, remove_terms, remove_features, sweep, scale
  • added experimental support for a JSON exporter function: to_json

v0.4.3

8 months ago

v0.4.3 - 2023-08-04

Changed

  • Training speed improvements due to the use of SIMD on Intel processors in PyPI release Results may vary, but expect approx 2.75x faster for classification and 1.3x faster for RMSE regression
  • Changed from using 64-bit floats to using 32-bit floats internally. Regression performed on datasets with large targets that sum to greater than 3.4E+38 will overflow.

Fixed

  • Fixed an issue with the monotonize function that would occur when monotonizing a feature with missing values
  • Resolved issue where excluding the 1st feature would cause an exception

v0.4.2

10 months ago

v0.4.2 - 2023-05-31

Added

  • support for specifying outer bags

Changed

  • exceptions raised in the joblib child processes will be re-raised in the main process rather than be expressed as a TerminatedWorkerError
  • small additional improvements in memory compression
  • small improvements in maximizing the benefit of the privacy budget for Differentially Private EBMs

Fixed

  • fixed segfault that was occurring in the Anaconda build
  • fixed a bug that would prevent Differentially Private EBMs from using the exclude parameter

v0.4.1

11 months ago

[v0.4.1] - 2023-05-16

Added

  • support for visualizations in streamlit

Fixed

  • fixed dangling pointer issue in call to CalcInteractionStrength

v0.4.0

11 months ago

[v0.4.0] - 2023-05-11

Added

  • alternative objective functions: poisson_deviance, tweedie_deviance, gamma_deviance, pseudo_huber, rmse_log (log link)
  • greediness __init__ parameter that allows selecting a behavior between cyclic boosting and greedy boosting
  • smoothing_rounds __init__ parameter
  • added type hints to the EBM __init__ parameters and class attributes
  • init_score parameter to allow boosting and prediction on top of a previous model
  • multiclass support in merge_ebms
  • ability to monotonize features using post process model editing

Changed

  • default BaseLinear regressor is changed from Lasso to LinearRegression class
  • placed limits on the amount of memory used to find interactions with high cardinality categoricals

Fixed

  • validation_size of 0 is now handled by disabling early_stopping and using the final model

Breaking Changes

  • replaced the __init__ param "mains" with "exclude"
  • removed the binning __init__ param as this functionality was already fully supported in feature_types
  • removed the unused zero_val_count attribute and n_samples attribute
  • renamed the noise_scale_ attribute to noise_scale_boosting_ and added noise_scale_binning_ to DPEBMs

v0.3.2

1 year ago

[v0.3.2] - 2023-03-14

Fixed

  • fix the issue that the shared library would only work on newer linux versions