Changelog#

Unreleased#

  • Python package

  • R package

    • abess can be used in mlr3extralearners, a package like scikit-learn. Please see mlr3extralearners for usage.

Version 0.4.7#

  • R package

  • Python package

    • Support no-intercept model for most regressors in abess.linear with argument fit_intercept=False. We assume that the data has been centered for these models.

    • Use CMake on compiling to increase scalability.

  • C++

    • Support limiting beta into a range by clipping method. One application is to perform non-negative fitting.

    • Support AUC criterion for Logistic and Multinomial Regression.

Version 0.4.6#

  • R package

  • Python package

    • Support score function for all GLM estimators.

    • Rearrange some arguments to improve legibility. Please check here for the latest API.

    • Better docstring, e.g. move important arguments to the front.

    • Combine metrics.py and functions.py.

  • C++

    • Support the base model for GLM. The Sparse GLM model can be implemented much easilier.

    • Re-write logistic, poisson and gamma regression on the basis of GLM base model.

Versions 0.4.2 -- 0.4.5#

  • R package

    • Change the structure of R package such that the parameter check can be reused by different methods. As a by-production, code coverage for R package is impressively improved.

    • Support ordinal regression

    • Update README.md to synchronize with the layout change of abess official website.

  • Python package

    • Fix bugs in sparse principal component analysis

    • Support ordinal regression

    • Support predicting survival function in CoxPHSurvivalAnalysis()

    • Modify python package to adapt to the criteria of conda-forge and abess is going to appear on conda-forge.

    • Spectra library is no long appear in python/include directory

    • Improve pytest by suppress unnecessary come from scikit-learn and the warning about API-name change. Moreover, some test will be skipped if some dependencies are missing.

    • Add estimator check from scikit-learn into pytest

    • Refine the configuration in setup.py to facilitate the source code installation

    • Support get_params and set_params methods for each model

  • C++

    • Support ordinal regression

    • Fix bugs for multiple-regressors' API

    • Add more comments to improve readability, mainly in Algorithm.h, utilities.h, and workflow.h

  • Project development

    • Test the package automatic submission. (It explains why the version number is quickly shifted.)

    • Python maintainer changes from Kangkang Jiang to Junhao Huang!

Version 0.4.1#

  • R package

    • Support user-specified initial active set.

  • Python package

    • The API name shifts from abessXXX to xxxRegression and from abessXXX to SparsePCA

    • Improve the PEP8 criteria and scikit-learn criterion

    • The interface between python and cpp changes from swig to pybind11.

    • On Windows, the recommended C++ compiler for abess package installation shifts from Mingw to Microsoft Visual Studio because it is suggested that MinGW works with all Python versions up to 3.4.

    • Using cibuildwheel and github action to build and test wheel files automatically

    • Fix bugs in sparse principal component analysis

  • Project development

    • Documentation

      • Add instruction for Gamma regression.

      • Update the usage of support_size in PCA.

      • Use Sphinx-Gallery for website layout, and update the layout of the Tutorial section.

Version 0.4.0#

It is the fourth stable release for abess. More features and concrete algorithms are supported now and the main Cpp code has been refactored to improve scalability.

  • Cpp

    • New features:

      • Support user-specified cross validation division.

      • Support user-specified initial active set.

      • Support flexible support size for sequentially best subset selection for principal component analysis (PCA).

    • New best subset selection tasks:

      • Generalized linear model when the link function is gamma distribution.

      • Robust principal component analysis (RPCA).

    • Performance improvement:

      • Bug fixed

  • Python

    • New best subset selection features and tasks implemented in Cpp are wrapped in Python functions.

    • More comprehensive test files.

    • A new release in Pypi.

  • R package

    • New best subset selection features and tasks implemented in Cpp are wrapped in R functions.

    • A new release in CRAN.

  • Project development

    • Source code

      • Refactoring the Cpp source code to improve its readability and scalability. Please check Code Developing section for more details.

      • Combine all parameters (e.g. support_size and lambda) in one list to improve expandability.

      • Move the core code src directory to the root of repository.

    • Documentation

      • Add instruction for robust principal component analysis in Tutorial.

      • Add instruction for user-specified cross validation division in Advanced Features.

      • Update development guideline according to cpp source code change in Code Developing.

      • Adding more details and giving more links related to core functions.

    • Code coverage

      • Add more test suites to improve coverage and stability

    • Code format

Version 0.3.0#

It is the third stable release for abess. This version improve the runtime performance, the clarity of project’s documentation, and add helpful continuous integration.

  • Cpp

    • New features:

      • Support important searching to significantly improve computational efficiency when dimensionality is large.

    • Performance improvement:

      • Update the version of dependencies: from Spectra 0.9.0 to 1.0.0

      • Bug fixed

  • R package

    • Support important searching for generalized linear model in abess

    • A new release in CRAN.

  • Python package

    • Remove useless parameter to improve clarity.

    • Support important searching for generalized linear model abessLm, abessLogistic, abessPoisson, abessCox, abessMlm, abessMultinomial

    • A new release in Pypi.

  • Project development

    • Code coverage

      • Check line covering rate for both Python and R. And the coverage rates are summarized and report.

      • Add more test suites to improve coverage and stability

    • Documentation

      • Add docs2search for the R package’s website

      • Add a logo for the project

      • Improve documentation by adding two tutorial sections: detail of algorithm and power of abess.

    • Improve code coverage

    • Continuous integration

      • Check the installation in Windows, Mac, and Linux

      • Automatically generate the .whl files and publish the Python package into Pypi when tagging the project in github.

Version 0.2.0#

It is the second stable release for abess. This version includes multiple several generic features, and optimize memory usage when input data is a sparse matrix. We also significantly enhancements to the project’ documentation.

  • Cpp

    • New generic best subset features:

      • The selection of group-structured best subset selection;

      • Ridge-regularized penalty for parameter as a generic component.

    • New best subset selection tasks:

      • principal component analysis

    • Performance improvement:

      • Support sparse matrix as input

      • Support golden section search for optimal support size. It is much faster than sequentially searching strategy.

      • The logic behind cross validation is optimized to gain speed improvement

      • Covariance update

      • Bug fixed

  • R package

    • New best subset selection features and tasks implemented in Cpp are wrapped in R functions.

    • abesspca supports best subset selection for the first loading vector in principal component analysis. A iterative algorithm supports multiple loading vectors.

    • Generic S3 function for abesspca.

    • Both abess and abesspca supports sparse matrix input (inherit from class “sparseMatrix” as in package Matrix).

    • Upload to CRAN.

  • Python package

    • New best subset selection features and tasks implemented in Cpp are wrapped in Python functions.

    • abessPCA supports best subset selection for the first loading vector in principal component analysis. A iterative algorithm supports multiple loading vectors.

    • Support integration with scikit-learn. It is compatible with model evaluation and selection module with scikit-learn.

    • Initial Upload to Pypi.

  • Project development

    • Documentation

      • A more clear project website layout.

      • Add an instruction for

      • Add tutorials to show simple use-cases and non-trival examples of typical use-cases of the software.

      • Link to R-package website.

      • Add an instruction to help package development.

    • Code coverage for line covering rate for Python.

    • Continuous integration:

      • Change toolbox from Travis CI to Github-Action.

      • Auto deploy code coverage result to codecov.

Version 0.1.0#

We’re happy to announce the first major stable version of abess. This version includes multiple new algorithms and features. Here are some highlights of the big updates.

  • Cpp

    • New generic best subset features:

      • generic splicing technique

      • nuisance selection

    • New best subset selection tasks:

      • linear regression

      • logistic regression

      • poisson regression

      • cox proportional hazard regression

      • multi-gaussian regression

      • multi-nominal regression.

    • Cross validation and information criterion to select the optimal support size

    • Performance improvement:

      • Support OPENMP for the parallelism when performing cross validation

      • Warm start initialization

    • Create a List object to: 1. facilitate transfer the data object from Cpp to Python; 2. use the maximum compatible code for python and R

  • R package

    • All best subset selection features and tasks implemented in Cpp are wrapped in a R function abess.

    • Unified API for cross validation and information criterion to select the optimal support size.

    • Support generic S3 functions like coef and plot in R.

    • A short vignettes for demonstrating the usage of package.

    • Support formula interface.

    • Support convenient function for generating synthetic dataset.

    • Initial upload to CRAN.

  • Python

    • All best subset selection features implemented in Cpp are wrapped in a Python according to tasks. For instance, abessLm supports best subset selection for the linear model.

    • Write the Python class on the basis of scikit-learn package. The usage of the python package is the same as the common module in scikit-learn.

    • Support convenient function for generating synthetic dataset in Python.

  • Project developing

    • Build R package website via the pkgdown package.

    • Build a documentation website on based the Python package via the sphnix package.

    • The website is continuous integrated via Travis CI. The content will automatically change whether a Travis CI is triggered.

    • Complete testing for R functions in package.