Revision 90737e470bc8e929bd564a1c8e2d113fea339271 authored by InterpretML on 08 January 2021, 23:55:28 UTC, committed by InterpretML on 08 January 2021, 23:55:28 UTC
Co-Authored-By: S Jenkins <69673492+nopdive@users.noreply.github.com> Co-Authored-By: Harsha-Nori <5302119+Harsha-Nori@users.noreply.github.com>
1 parent 77bbd40
CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and the versioning is mostly derived from [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v0.2.2] - 2020-10-19
### Fixed
- Fixed bug on predicting unknown categories with EBM.
- Fixed bug on max value being placed in its own bin for EBM pre-processing.
- Numerous native fixes and optimizations.
### Added
- Added `max_interaction_bins` as argument to EBM learners for different sized
bins on interactions, separate to mains.
- New binning method 'quantile_humanized' for EBM.
### Changed
- Interactions in EBM now use their own pre-processing, separate to mains.
- Python 3.5 no longer supported.
- Switched from Python to native code for binning.
- Switched from Python to native code for PRNG in EBM.
## [v0.2.1] - 2020-08-07
### Added
- Python 3.8 support.
### Changed
- Dash based visualizations will always default to listen port 7001 on first attempt;
if the first attempt fails it will try a random port between 7002-7999.
### Experimental (WIP)
- Further cloud environment support.
- Improvements for multiclass EBM global graphs.
## [v0.2.0] - 2020-07-21
### Breaking Changes
- With warning, EBM classifier adapts internal validation size
when there are too few instances relative to number of unique classes.
This ensures that there is at least one instance of each class in the validation set.
- Cloud Jupyter environments now use a CDN to fix major rendering bugs and performance.
- CDN currently used is https://unpkg.com
- If you want to specify your own CDN, add the following as the top cell
```python
from interpret import set_visualize_provider
from interpret.provider import InlineProvider
from interpret.version import __version__
# Change this to your custom CDN.
JS_URL = "https://unpkg.com/@interpretml/interpret-inline@{}/dist/interpret-inline.js".format(__version__)
set_visualize_provider(InlineProvider(js_url=JS_URL))
```
- EBM has changed initialization parameters:
- ```
schema -> DROPPED
n_estimators -> outer_bags
holdout_size -> validation_size
scoring -> DROPPED
holdout_split -> DROPPED
main_attr -> mains
data_n_episodes -> max_rounds
early_stopping_run_length -> early_stopping_rounds
feature_step_n_inner_bags -> inner_bags
training_step_epsiodes -> DROPPED
max_tree_splits -> max_leaves
min_cases_for_splits -> DROPPED
min_samples_leaf -> ADDED (Minimum number of samples that are in a leaf)
binning_strategy -> binning
max_n_bins -> max_bins
```
- EBM has changed public attributes:
- ```
n_estimators -> outer_bags
holdout_size -> validation_size
scoring -> DROPPED
holdout_split -> DROPPED
main_attr -> mains
data_n_episodes -> max_rounds
early_stopping_run_length -> early_stopping_rounds
feature_step_n_inner_bags -> inner_bags
training_step_epsiodes -> DROPPED
max_tree_splits -> max_leaves
min_cases_for_splits -> DROPPED
min_samples_leaf -> ADDED (Minimum number of samples that are in a leaf)
binning_strategy -> binning
max_n_bins -> max_bins
attribute_sets_ -> feature_groups_
attribute_set_models_ -> additive_terms_ (Pairs are now transposed)
model_errors_ -> term_standard_deviations_
main_episode_idxs_ -> breakpoint_iteration_[0]
inter_episode_idxs_ -> breakpoint_iteration_[1]
mean_abs_scores_ -> feature_importances_
```
### Fixed
- Internal fixes and refactor for native code.
- Updated dependencies for JavaScript layer.
- Fixed rendering bugs and performance issues around cloud Jupyter notebooks.
- Logging flushing bug fixed.
- Labels that are shaped as nx1 matrices now automatically transform to vectors for training.
### Experimental (WIP)
- Added support for AzureML notebook VM.
- Added local explanation visualizations for multiclass EBM.
## [v0.1.22] - 2020-04-27
### Upcoming Breaking Changes
- EBM initialization arguments and public attributes will change in a near-future release.
- There is a chance Explanation API will change in a near-future release.
### Added
- Docstrings for top-level API including for glassbox and blackbox.
### Fixed
- Minor fix for linear models where class wasn't propagating for logistic.
### Experimental
- For research use, exposed optional_temp_params for EBM's Python / native layer.
## [v0.1.21] - 2020-04-02
### Added
- Module "glassbox.ebm.research" now has purification utilities.
- EBM now exposes "max_n_bins" argument for its preprocessing stage.
### Fixed
- Fix intercept not showing for local EBM binary classification.
- Stack trace information exposed for extension system failures.
- Better handling of sparse to dense conversions for all explainers.
- Internal fixes for native code.
- Better NaN / infinity handling within EBM.
### Changed
- Binning strategy for EBM now defaulted to 'quantile' instead of 'uniform'.
## [v0.1.20] - 2019-12-11
### Fixed
- **Major bug fix** around EBM interactions. If you use interactions, please upgrade immediately.
Part of the pairwise selection was not operating as expected and has been corrected.
- Fix for handling dataframes when no named columns are specified.
- Various EBM fixes around corner-case datasets.
### Changed
- All top-level methods relating to show's backing web server now use visualize provider directly.
In theory this shouldn't affect top-level API usage, but please raise an issue in the event of failure.
- Memory footprint heavily reduced for EBM at around 2-3 times.
## [v0.1.19] - 2019-10-25
### Changed
- Changed classification metric exposed between C++/python for EBMs to log loss for future public use.
- Warnings provided when extensions error on load.
### Fixed
- Package joblib added to interpret-core as "required" extra.
- Compiler fixes for Oracle Developer Studio.
- Removed undefined behavior in EBM for several unlikely scenarios.
## [v0.1.18] - 2019-10-09
### Added
- Added "main_attr" argument to EBM models. Can now select a subset of features to train main effects on.
- Added AzureML notebook VM detection for visualizations (switches to inline).
### Fixed
- Missing values now correctly throw exceptions on explainers.
- Major visualization fix for pairwise interaction heatmaps from EBM.
- Corrected inline visualization height in Notebooks.
### Changed
- Various internal C++ fixes.
- New error messages around EBM if the model isn't fitted before calling explain_*.
## [v0.1.17] - 2019-09-24
### Fixed
- Morris sensitivity now works for both predict and predict_proba on scikit models.
- Removal of debug print statements around blackbox explainers.
### Changed
- Dependencies for numpy/scipy/pandas/scikit-learn relaxed to (1.11.1,0.18.1,0.19.2, 0.18.1) respectively.
- Visualization provider defaults set by environment detection (cloud and local use different providers).
### Experimental (WIP)
- Inline visualizations for show(explanation). This allows cloud notebooks, and offline notebook support.
Dashboard integration still ongoing.
## [v0.1.16] - 2019-09-17
### Added
- Visualize and compute platforms are now refactored and use an extension system. Details on use upcoming in later release.
- Package interpret is now a meta-package using interpret-core.
This enables partial installs via interpret-core for production environments.
### Fixed
- Updated SHAP dependency to require dill.
### Experimental (WIP)
- Greybox introduced (explainers that only work for specific types of models). Starting with SHAP tree and TreeInterpreter.
- Extension system now works across all explainer types and providers.
## [v0.1.15] - 2019-08-26
### Experimental (WIP)
- Multiclass EBM added. Includes visualization and postprocessing. Currently does not support multiclass pairs.
## [v0.1.14] - 2019-08-20
### Fixed
- Fixed occasional browser crash relating to density graphs.
- Fixed decision trees not displaying in Jupyter notebooks.
### Changed
- Dash components no longer pinned. Upgraded to latest.
- Upgrade from dash-table-experiment to dash-table.
- Numerous renames within native code.
### Experimental (WIP)
- Explanation data methods for PDP, EBM enabled for mli interop.
## [v0.1.13] - 2019-08-14
### Added
- EBM has new parameter 'binning_strategy'. Can now support quantile based binning.
- EBM now gracefully handles many edge cases around data.
- Selenium support added for visual smoke tests.
### Fixed
- Method debug_mode now works in wider environments including WSL.
- Linear models in last version returned the same graphs no matter the selection. Fixed.
### Changed
- Testing requirements now fully separate from default user install.
- Internal EBM class has many renames associated with native codebase. Attribute has been changed to Feature.
- Native codebase has many renames. Diff commits from v0.1.12 to v0.1.13 for more details.
- Dependency gevent lightened to take 1.3.6 or greater. This affects cloud/older Python environments.
- Installation for interpret package should now be 'pip install -U interpret'.
- Removal of skope-rules as a required dependency. User now has to install it manually.
- EBM parameter 'cont_n_bins' renamed to 'max_n_bins'.
### Experimental (WIP)
- Extensions validation method is hardened to ensure blackbox specs are closely met.
- Explanation methods data and visual, require key of form ('mli', key), to access mli interop.
## [v0.1.12] - 2019-08-09
### Fixed
- Fixed EBM bug where 2 features with 1 state are included in the dataset.
- Fixed EBM bug that was causing processing of attributes past an attribute combination with 0 useful attributes to
fail.
## [v0.1.11] - 2019-08-09
### Added
- C++ testing framework added.
- More granular options for training EBM (not public-facing, added for researchers)
### Fixed
- Improved POSIX compliance for build scripts.
- Failure cases handled better for EBM in both Python/native layer.
- Fixed a bug around dash relating to dependencies.
- Removed dead code around web server for visualization.
### Changed
- For Python setup.py, requirements.txt now used for holding dependencies.
- Directory structure changed for whole repository, in preparation for R support.
- Native code further optimized with compiler flags.
- Consistent scaling for EBM plots across all features.
- For explanation's data method, behavior will be non-standard at key equals -1.
- Testing suite for visual interface added via selenium.
### Experimental (WIP)
- Extension system for blackbox explainers added. Enables other packages to register into interpret.
- Data standardization under way, currently for linear, LIME, SHAP where key equals -1 for data method.
## [v0.1.10] - 2019-07-16
### Fixed
- Fix for duplicated logs.
- EBM now throws exception for multi-class (not supported yet).
- Added requests as dependency.
### Changed
- File requirements.txt renamed to dev-requirements.txt
- Native libraries' names now start with 'lib_' prefix.
- Adjusted return type for debug_mode method to provide logging handler.
- EBM native layer upgraded asserts to use logging.
- EBM native layer hardened for edge case data.
- Adjustments to dev dependencies.
- Method debug_mode defaults log level to INFO.
## [v0.1.9] - 2019-06-14
### Added
- Added method debug_mode in develop module.
- Connected native logging to Python layer.
- Native libraries can now be in release/debug mode.
### Fixed
- Increased system compatibility for C++ code.
### Changed
- Debug related methods expose memory info in human readable form.
- Clean-up of logging levels.
- Various internal C+ fixes.
## [v0.1.8] - 2019-06-07
### Fixed
- Fixed calibration issue with EBM.
- Method show_link fix for anonymous explanation lists.
### Changed
- Method show_link now takes same arguments as show.
- Better error messages with random port allocation.
- More testing for various modules.
- Various internal C+ fixes.
## [v0.1.7] - 2019-06-03
### Added
- Added show_link method. Exposes the URL of show(explanation) as a returned string.
### Fixed
- Fixed shutdown_show_server, can now be called multiple times without failure.
### Changed
- Hardened status_show_server method.
- Testing added for interactive module.
- Removal of extra memory allocation in C++ code for EBM.
- Various internal C++ fixes.
## [v0.1.6] - 2019-05-31
### Added
- Integer indexing for preserve method.
- Public-facing CI build added. Important for pull requests.
### Changed
- Visual-related imports are now loaded when visualize is called for explanations.
## [v0.1.5] - 2019-05-30
### Added
- Added preserve method. Can now save visuals into notebook/file - does not work with decision trees.
- Added status_show_server method. Acts as a check for server reachability.
- Exposed init_show_server method. Can adjust address, base_url, etc.
- Added print_debug_info method in develop module. Important for troubleshooting/bug-reports.
### Fixed
- Various internal C++ fixes.
- Minor clean up on example notebooks.
### Changed
- Additional dependency required: psutil.
- Test refactoring.
## [v0.1.4] - 2019-05-23
### Added
- Root path for show server now has a light monitor page.
- Logging registration can now print to both standard streams and files.
### Fixed
- Error handling for non-existent links fixed for visualization backend.
- In some circumstances, Python process will hang. Resolved with new threading.
### Changed
- Unpinning scipy version, upstream dependencies now compatible with latest.
- Show server is now run by a thread directly, not via executor pools.
- Re-enabled notebook/show tests, new threading resolves hangs.
- Small clean-up of setup.py and Azure pipelines config.
## [v0.1.3] - 2019-05-21
### Added
- Model fit can now support lists of lists as instance data.
- Model fit can now support lists for label data.
### Fixed
- Various internal C++ fixes.
### Changed
- Removed hypothesis as public test dependency.
- C++ logging introduced (no public access).
## [v0.1.2] - 2019-05-17
### Added
- EBM can now disable early stopping with run length set to -1.
- EBM tracking of final episodes per base estimator.
### Fixed
- Pinning scipy, until upstream dependencies are compatible.
### Changed
- Clean-up of EBM logging for training.
- Temporary disable of notebook/show tests until CI environment is fixed.
## [v0.1.1] - 2019-05-16
### Added
- Added server shutdown call for 'show' method.
### Fixed
- Axis titles now included in performance explainer.
- Fixed hang on testing interface.
## [v0.1.0] - 2019-05-14
### Added
- Added port number assignments for 'show' method.
- Includes codebase of v0.0.6.
### Changed
- Native code build scripts hardened.
- Libraries are statically linked where possible.
- Code now conforms to Python Black and its associated flake8.
[v0.2.2]: https://github.com/microsoft/interpret/releases/tag/v0.2.2
[v0.2.1]: https://github.com/microsoft/interpret/releases/tag/v0.2.1
[v0.2.0]: https://github.com/microsoft/interpret/releases/tag/v0.2.0
[v0.1.22]: https://github.com/microsoft/interpret/releases/tag/v0.1.22
[v0.1.21]: https://github.com/microsoft/interpret/releases/tag/v0.1.21
[v0.1.20]: https://github.com/microsoft/interpret/releases/tag/v0.1.20
[v0.1.19]: https://github.com/microsoft/interpret/releases/tag/v0.1.19
[v0.1.18]: https://github.com/microsoft/interpret/releases/tag/v0.1.18
[v0.1.17]: https://github.com/microsoft/interpret/releases/tag/v0.1.17
[v0.1.16]: https://github.com/microsoft/interpret/releases/tag/v0.1.16
[v0.1.15]: https://github.com/microsoft/interpret/releases/tag/v0.1.15
[v0.1.14]: https://github.com/microsoft/interpret/releases/tag/v0.1.14
[v0.1.13]: https://github.com/microsoft/interpret/releases/tag/v0.1.13
[v0.1.12]: https://github.com/microsoft/interpret/releases/tag/v0.1.12
[v0.1.11]: https://github.com/microsoft/interpret/releases/tag/v0.1.11
[v0.1.10]: https://github.com/microsoft/interpret/releases/tag/v0.1.10
[v0.1.9]: https://github.com/microsoft/interpret/releases/tag/v0.1.9
[v0.1.8]: https://github.com/microsoft/interpret/releases/tag/v0.1.8
[v0.1.7]: https://github.com/microsoft/interpret/releases/tag/v0.1.7
[v0.1.6]: https://github.com/microsoft/interpret/releases/tag/v0.1.6
[v0.1.5]: https://github.com/microsoft/interpret/releases/tag/v0.1.5
[v0.1.4]: https://github.com/microsoft/interpret/releases/tag/v0.1.4
[v0.1.3]: https://github.com/microsoft/interpret/releases/tag/v0.1.3
[v0.1.2]: https://github.com/microsoft/interpret/releases/tag/v0.1.2
[v0.1.1]: https://github.com/microsoft/interpret/releases/tag/v0.1.1
[v0.1.0]: https://github.com/microsoft/interpret/releases/tag/v0.1.0
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...