Older Releases

v3.1.1

This is a bugfix release for v3.1.0.

Changes from v3.1.0:

  • bugfix  Fix Javascript loading error for stability analysis visualizations
  • bugfix  Improve reliability of warning messages when running in IJulia

v3.1.0

Changes from v3.0.2:

  • feature  Support for macOS with ARM (M-series) processors

  • feature  Classification trees can be trained with regression_features to embed linear discriminant analysis (LDA) models in the leaves

  • feature  Support saving progress in checkpoint files during training for OptimalTreeLearner, GridSearch and RewardEstimator objects

  • feature  Add update check for new IAI versions that runs when Julia is started

  • feature  Add support for licenses managed through AWS License Manager

  • enhancement  Introduce penalty option for hyperplane_config in Optimal Trees to allow customizing the penalty for each additional coefficient in hyperplane splits

  • enhancement  Add progress bar during XGBoost training

  • enhancement  Update included version of XGBoost to 1.6.1

  • enhancement  Allow controlling whether "Not sure" buttons appear in questionnaires through the include_not_sure_buttons parameter

  • enhancement  Add :always_left as a permissible value for missingdatamode, and permit specifying a different missing data mode per feature

  • enhancement  Only show missing direction in visualizations when it is possible for missing values to reach a split

  • enhancement  Switch to loading Graphviz lazily to reduce number of required dependencies. This requires loading Graphviz_jll separately before using the static visualization functions.

  • enhancement  Support show_node_id parameter in static GraphViz visualizations

  • enhancement  Support variable_importance for Optimal Feature Selection learners with coordinated_sparsity

  • enhancement  Allow setting fit_kwargs on GridSearch to allow passing parameters for validation_criterion when set on the grid search directly

  • enhancement  Improve error message when applying regression models to data with missing values

  • enhancement  Improve error message in score when the specified criterion is not supported by the model being used

  • enhancement  Improvements to floating license server to support a wider range of licensing scenarios

  • bugfix  Fix numerical tolerance bug when loading GLMNet learners from JSON file

  • bugfix  Fix Javascript loading error in Jupyter notebooks

  • bugfix  Fix printing of some unfitted learners to show all parameters

  • bugfix  Fix license validation when hostname command is missing

  • bugfix  Fix for edge case in hyperplane pruning algorithm

  • bugfix  Fix interactivate visualization for trees with embedded logistic regression

  • bugfix  Fix multiprocessing issue caused by serialization bug in recent versions of Julia

  • bugfix  Fixes for missing value handling in localsearch

  • bugfix  Fix bug in prune_trees leading to inconsistent pruning

  • deprecation  The regression_sparsity parameter for Optimal Trees has been deprecated in favor of regression_features

v3.0.2

This is a bugfix release for v3.0.1.

Changes from v3.0.1:

  • bugfix  Compatibility with Julia 1.8

v3.0.1

This is a bugfix release for v3.0.0.

Changes from v3.0.0:

  • bugfix  Support setting sparsity=0 in Optimal Feature Selection learners
  • bugfix  Update internal dependencies to avoid problematic Parsers.jl release and permit JuMP.jl 0.22
  • bugfix  Fix bug in determining which features are used by tree learners after refitting

v3.0.0

Changes from v2.2.0:

  • feature  Support added for multi-threading to Optimal Trees and OptImpute training, as well as all prediction and score APIs

  • feature  Support embedding logistic and cox regression in the leaves of trees (for use with refit_learner and refit_leaves!)

  • feature  Add refit_leaves! and copy_splits_and_refit_leaves! to enable refitting an existing tree structure with new leaf models

  • feature  Add refit_learner to enable refitting more complicated models in each leaf during tree training

  • feature  Add prune_trees! to allow pruning an existing tree to the best size according to a new validation dataset

  • feature  Add coordinated-sparsity fitting to OptimalFeatureSelection

  • feature  Add fit_and_expand! and transform_and_expand along with ZeroImputationLearner to allow imputation-free handling of datasets with missing data (e.g. for adaptive regression)

  • feature  Add evaluation_time to allow conducting reward estimation on survival outcomes with the goal of maximizing survival probability at a given time

  • feature  Added GLMNetCVClassifier and GLMNetCVSurvivalLearner to use GLMNet for classification and survival problems

  • feature  When expanded to onehot encoding, ordinal features are now also expanded to include value <= level features as well as value == level features for better efficiency in regression models

  • feature  Add predict_reward to permit estimating rewards with different parameters without retraining a Reward Estimator

  • feature  Add get_machine_id to allow querying the machine ID easily

  • feature  Add weighted_minbucket parameter to tree learners to enforce a minimum sample weight in each leaf

  • feature  Add skip_curve_fitting to allow skipping survival curve fitting during tree training

  • feature  Add ls_scan_reverse_split parameter to tree learners to enable a slightly more thorough search for parallel splits at the expense of additional computation

  • feature  Add cp_tuning_se_tolerance to support standard-error tolerance in cp-tuning

  • feature  Add smooth_survival_curves parameter to permit fitting piecewise-constant survival curves rather than piecewise-linear

  • breaking  Disallow :imputation as a task type in split_data

  • breaking  Replace refit_l1 parameter on OptimalFeatureSelection learners with with refit_learner for more control of refitting process

  • breaking  Breaking changes to JSON storage format for :opt_tree based imputation

  • breaking  The first return value of fit_predict! and predict with Reward Estimation is now a Dict containing the rewards as well as the estimated outcomes and propensity scores rather than just the rewards

  • enhancement  Support read_json/write_json for Reward Estimators and all unfitted learners

  • enhancement  Support calculating variable_importance for tree learners based on the distribution of features in a new dataset

  • enhancement  Add support for training XGBoost using tweedie criterion

  • enhancement  Add support for sample weights when calculating Harrell's c-statistic

  • enhancement  Modernized theme for questionnaire visualizations

  • enhancement  Include graphviz from Graphviz_jll so that static visualizations no longer require a separate graphviz installation

  • enhancement  Support passing extra columns not used during training to data-grid visualizations

  • enhancement  New cp-tuning algorithm for trees with hyperplanes that delivers more precise tuned values for cp

  • enhancement  Add progress bars for Reward Estimation training

  • enhancement  Miscellaneous performance improvements, including significant improvements to OptimalFeatureSelection on large problems

  • deprecation  Deprecate impute and impute_cv from OptImpute

  • deprecation  Remove some previously-deprecated functions

  • bugfix  Change grid splitting for imputation to split matrix entries rather than splitting based on samples

  • bugfix  Fix floating point precision issue in full local likelihood criterion

  • bugfix  Fix onehot-encoding of unseen level categoric levels

  • bugfix  Fix threshold-based score calculation to use predicted labels when threshold is not supplied

  • bugfix  Fix bug when checking the number of labels before calculating AUC

  • bugfix  Fix stability analysis with categoric features

  • bugfix  Use scaled weights for hyperplane and linear model importance

v2.2.0

Changes from v2.1.0:

  • feature  Add functionality for analyzing tree stability

  • feature  Add doubly-robust reward estimation for numeric treatments and improve causality in outcome estimation under numeric treatments

  • feature  Add reward estimation for survival outcomes

  • feature  Add survival learners RandomForestSurvivalLearner and XGBoostSurvivalLearner to Heuristics

  • feature  Add predict_shap for XGBoost learners to predict the SHAP values for a trained model

  • feature  Add get_features_used to extract the set of features used by a fitted learner

  • feature  Add split_data for AbstractRange and Integer inputs to obtain indices for splitting into training and testing data

  • feature  Add Plots.jl recipe for ROCCurve

  • feature  Allow setting n_folds and train_proportion on GridSearch

  • feature  Allow calculating variable_importance with respect to new data and/or a different criterion

  • feature  Allow fitting Optimal Regression Trees with linear predictions in the leaves without intercept terms (using the regression_intercept parameter)

  • feature  Add get_grid_result_details to retrieve results and trained learners from a GridSearch for each parameter combination tested

  • deprecation  Rename get_grid_results to get_grid_result_summary

  • enhancement  The default minbucket value for random forest learners now depends on the problem type (following the grf package in R)

  • enhancement  When calling API functions like predict, only the features used by the model for predictions need to be supplied

  • enhancement  Allow passing only data=X in when visualizing data in write_html

  • enhancement  Significant reduction in memory use when training Optimal Tree learners

  • enhancement  Add support for sample weights when training XGBoost learners

  • enhancement  Add support for sample weights when calculating AUC

  • enhancement  Latency improvements due to Julia type inference fixes

  • bugfix  Fix progress bar error for long output lines

  • bugfix  Fix bug in RNG where first value is very correlated with seed

  • bugfix  Fixes to ordinal split printing in tree visualizations

  • bugfix  Fix policy trees being mutated by some API functions

  • bugfix  Fix bug in determining best trees when calculating variable importance

  • bugfix  Improve error message when renaming feature to one that already exists

  • bugfix  Remove artificial 2047 node limit when training tree learners

v2.1.0

Changes from v2.0.0:

  • feature  Add Heuristics package for running XGBoost, Random Forests and GLMNet inside IAI ecosystem

  • feature  RewardEstimation has been completely rewritten to support both categorical and numeric treatments

  • feature  Add ability to calculate score directly from data

  • feature  Add plot support for Optimal Feature Selection grid search results

  • feature  Support questionnaire visualizations for Optimal Feature Selection

  • feature  Add refit_l1 to Optimal Feature Selection for refitting L1-regularized model to selected features

  • feature  Add write_pdf and write_svg to save trees as static vector images

  • feature  Add get_survival_expected_time and get_survival_hazard to query information from survival trees

  • feature  Add predict_treatment_rank and predict_treatment_outcome for policy learners to access predicted treatment rankings

  • feature  Support keyword argument in predict for survival learners to evaluate probability of survival at a given time t

  • feature  Add get_roc_curve_data to access ROC curve fields

  • enhancement  Optimal Trees use adaptive sorting algorithm resulting in up to 5% speedup on large problems

  • enhancement  Significantly reduce memory usage during grid search

  • enhancement  Add check_leaf to tree structure API to permit accessing data at split nodes

  • enhancement  Improved quality and speed for regression-in-leaf fitting inside Optimal Trees

  • enhancement  Improved algorithm for variable importance for Optimal Trees

  • enhancement  Improvements to appearance and configurability of write_png

  • bugfix  Fix behavior of OptimalFeatureSelectionClassifier in unbalanced problems

  • bugfix  Miscellaneous bugfixes and improvements

v2.0.0

Changes from v1.2.0:

  • breaking  Change default criterion for Optimal Survival Trees to :localfulllikelihood
  • breaking  Use multi-class SVM when imputing categorical variables with :opt_svm
  • breaking  Remove kernel parameter from :opt_svm imputation and only support linear kernels
  • breaking  Remove some previously-deprecated functions
  • deprecation  Rename OptimalTreeSurvivor to OptimalTreeSurvivalLearner
  • feature  Add Optimal Policy Trees
  • feature  Add Reward Estimation to replace PrescriptionUtils.jl
  • feature  Option to include dataset in interactive tree visualization
  • feature  More customization options for tree visualizations
  • feature  Add tree visualization support for GridSearch
  • feature  Support for multiple warmstarts in OptImpute during transform
  • feature  Add variable_importance for Optimal Feature Selection
  • feature  Allow evaluating survival models with classification criteria
  • feature  Ability to construct ROCCurve from predicted probabilities and labels
  • feature  Add shuffle keyword argument to split_data
  • feature  Add predict_expected_survival_time for survival learners
  • enhancement  Treat PooledVectors as categorical data
  • enhancement  Support DataFrames-style column indexing for OptimalTrees parameters split_features, regression_features, and feature_set in hyperplane_config
  • enhancement  When making predictions on new data, columns can be in any order, as long as all columns from training are present
  • enhancement  Reduce file size for models saved as JSON
  • enhancement  Indicate which class is positive in OptimalFeatureSelectionClassifier display
  • bugfix  Fix bug in Optimal Feature Selection where both levels of a binary feature could be selected
  • bugfix  Fix calculation of :l1hinge and :l2hinge criteria during OptimalFeatureSelectionRegressor training

v1.2.0

Changes from v1.1.0:

  • deprecation  :rbf value for :svm_kernel parameter of OptSVMImputationLearner has been deprecated. In the next major release, the default kernel will be :linear, and the ability to specify a kernel will be removed.
  • deprecation  Many functions that operated on GridSearch and applied the function to the underlying learner are now deprecated. Instead of f(grid), prefer using f(IAI.get_learner(grid)) for these functions.
  • feature  Harrell's c-statistic has been added as a new scoring criterion for survival problems. This should be the preferred criterion when validating and evaluating survival problems.
  • feature  read_json/write_json now support ImputationLearners.
  • enhancement  New progress meter display compatible with grid search.
  • enhancement  Further algorithmic improvements in fitting ImputationLearners to significantly lower memory usage.
  • enhancement  Algorithmic improvements in fitting OptimalTreeLearners (~5% speedup).
  • enhancement  :sparsity parameter for OptimalFeatureSelectionLearners can be specified with any values permitted by RelativeParameterInput.

v1.1.0

Changes from v1.0.1:

  • feature  New Optimal Feature Selection module
  • feature  New advanced visualization interface for better control of tree visualizations
  • feature  GridSearch can now be saved and loaded using write_json/read_json
  • enhancement  Algorithmic improvements to OptImpute to significantly lower memory usage

v1.0.1

Changes from v1.0.0:

  • enhancement  Show machine ID when license is expiring or has expired for easier renewal
  • enhancement  Throw error if multiple features/levels/labels are the same after renaming
  • bugfix  Fix for cumulative hazard calculation edge-case
  • bugfix  Fix for distributed job dispatch when using subset of available workers
  • bugfix  Fix AUC calculation when predictions are skewed
  • bugfix  Fix color conversions in tree visualization
  • bugfix  Fix issue showing probabilities in text representation of tree when display label is set

v1.0.0