First release under the name PsyML, prepared for CRAN.
supervised_ml()), unsupervised learning
(unsupervised_ml()) and causal inference (causal_ml()). The package
help page (?PsyML), the new vignette "Three Approaches" and the
"Other supervised learning", "Other unsupervised learning" and "Other
causal inference" links in each help page show which functions belong to
each approach.reinforcement_ml() and its methods,
bandits, MDP and tabular agents, which depended on the contextual package)
was removed.vip package:
get_importance() now uses model-specific measures (impurity for ranger and
rpart, gain for xgboost, absolute coefficients for glmnet, absolute z/t
statistics for glm/lm) and falls back to permutation importance implemented
in the package.kernelshap (Suggests) instead of the
archived fastshap package; shapviz (Suggests) is still used for plots
when installed.seed arguments now default to NULL: the random number generator is
only seeded when a seed is supplied. supervised_ml() uses 2 cores by
default (n_cores = 2).export_verbose_txt(),
export_verbose_json(), generate_report_from_json(),
supervised_ml_export(), save_all_plots(), save_unsupervised_plots()
and generate_report_with_ai() require an explicit path.explain_with_ai() and generate_report_with_ai() no longer include a
shared API key; they read the key from api_key or from the environment
variable PSYML_API_KEY. explain_with_ai() gains a verbose argument.predict.unsupervisedml() now takes object as its first argument, and
Gaussian mixture clustering no longer attaches mclust.cluster_profile() gains a verbose argument.tidyverse and
tidymodels meta-packages are no longer imported).fit_models_cv(): in binary classification the cross-validated PR-AUC was
computed for the negative class, because tune::fit_resamples() passes the
first probability column to the metrics and pr_auc did not follow the
event_level. With imbalanced classes this gave implausible values (e.g.
.999 with 4% positives versus a true .786). It is now recomputed per fold
with the probability of the positive class. ROC-AUC was not affected.Fixes found while running supervised_ml() on data with strongly imbalanced
classes (4% positives) and highly collinear predictors.
compare_models(): supervised_ml() with a single model failed when
computing the average ranking.calculate_shap(): predictors removed by preprocessing (high correlation,
VIF, zero variance) appeared in the SHAP importance with value 0; they are
now excluded and reported in $removed_vars.calculate_shap(): new $collinear_vars with the predictors used that have
VIF > 5, and a note that the split of SHAP values among nearly redundant
predictors should not be interpreted variable by variable.calculate_shap(): in classification the SHAP sample is stratified with the
same number of cases per class ($sample_design).$threshold_optimization$source, $threshold_optimization$test_metrics).
Previously it was chosen and evaluated on the same test predictions.