Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mathurinm/celer

Fast solver for L1-type problems: Lasso, sparse Logisitic regression, Group Lasso, weighted Lasso, Multitask Lasso, etc.
https://github.com/mathurinm/celer

Last synced: 9 days ago
JSON representation

Fast solver for L1-type problems: Lasso, sparse Logisitic regression, Group Lasso, weighted Lasso, Multitask Lasso, etc.

Awesome Lists containing this project

README

        

# celer

![build](https://github.com/mathurinm/celer/workflows/build/badge.svg)
![coverage](https://codecov.io/gh/mathurinm/celer/branch/main/graphs/badge.svg?branch=main)
![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)
[![Downloads](https://static.pepy.tech/badge/celer)](https://pepy.tech/project/celer)
[![Downloads](https://pepy.tech/badge/celer/month)](https://pepy.tech/project/celer)
[![PyPI version](https://badge.fury.io/py/celer.svg)](https://pypi.org/project/celer)

``celer`` is a Python package that solves Lasso-like problems and provides estimators that follow the ``scikit-learn`` API. Thanks to a tailored implementation, ``celer`` provides a fast solver that tackles large-scale datasets with millions of features **up to 100 times faster than ``scikit-learn``**.

Currently, the package handles the following problems:

| Problem | Support Weights | Native cross-validation
| ----------- | ----------- |----------------
| Lasso | ✓ | ✓
| ElasticNet | ✓ | ✓
| Group Lasso | ✓ | ✓
| Multitask Lasso | ✕ | ✓
| Sparse Logistic regression | ✕ | ✕

If you are interested in other models, such as non convex penalties (SCAD, MCP), sparse group lasso, group logistic regression, Poisson regression, Tweedie regression, have a look at our companion package [``skglm``](https://github.com/scikit-learn-contrib/skglm)

## Cite

``celer`` is licensed under the [BSD 3-Clause](https://github.com/mathurinm/celer/blob/main/LICENSE). Hence, you are free to use it.
If you do so, please cite:

```bibtex
@InProceedings{pmlr-v80-massias18a,
title = {Celer: a Fast Solver for the Lasso with Dual Extrapolation},
author = {Massias, Mathurin and Gramfort, Alexandre and Salmon, Joseph},
booktitle = {Proceedings of the 35th International Conference on Machine Learning},
pages = {3321--3330},
year = {2018},
volume = {80},
}

@article{massias2020dual,
author = {Mathurin Massias and Samuel Vaiter and Alexandre Gramfort and Joseph Salmon},
title = {Dual Extrapolation for Sparse GLMs},
journal = {Journal of Machine Learning Research},
year = {2020},
volume = {21},
number = {234},
pages = {1-33},
url = {http://jmlr.org/papers/v21/19-587.html}
}
```

## Why ``celer``?

``celer`` is specially designed to handle Lasso-like problems which makes it a fast solver of such problems.
In particular, it comes with tools such as:

- automated parallel cross-validation
- support of sparse and dense data
- optional feature centering and normalization
- unpenalized intercept fitting

``celer`` also provides easy-to-use estimators as it is designed under the ``scikit-learn`` API.

## Get started

To get started, install ``celer`` via pip

```shell
pip install -U celer
```

On your python console,
run the following commands to fit a Lasso estimator on a toy dataset.

```python
>>> from celer import Lasso
>>> from celer.datasets import make_correlated_data
>>> X, y, _ = make_correlated_data(n_samples=100, n_features=1000)
>>> estimator = Lasso()
>>> estimator.fit(X, y)
```

This is just a starter example.
Make sure to browse [``celer`` documentation ](https://mathurinm.github.io/celer/) to learn more about its features.
To get familiar with [``celer`` API](https://mathurinm.github.io/celer/api.html), you can also explore the gallery of examples
which includes examples on real-life datasets as well as timing comparisons with other solvers.

## Contribute to celer

``celer`` is an open-source project and hence relies on community efforts to evolve.
Your contribution is highly valuable and can come in three forms

- **bug report:** you may encounter a bug while using ``celer``. Don't hesitate to report it on the [issue section](https://github.com/mathurinm/celer/issues).
- **feature request:** you may want to extend/add new features to ``celer``. You can use the [issue section](https://github.com/mathurinm/celer/issues) to make suggestions.
- **pull request:** you may have fixed a bug, enhanced the documentation, ... you can submit a [pull request](https://github.com/mathurinm/celer/pulls) and we will respond asap.

For the last mean of contribution, here are the steps to help you setup ``celer`` on your local machine:

1. Fork the repository and afterwards run the following command to clone it on your local machine

```shell
git clone https://github.com/{YOUR_GITHUB_USERNAME}/celer.git
```

2. ``cd`` to ``celer`` directory and install it in edit mode by running

```shell
cd celer
pip install -e .
```

3. To run the gallery examples and build the documentation, run the following

```shell
cd doc
pip install -e .[doc]
make html
```

## Further links

- https://mathurinm.github.io/celer/
- https://arxiv.org/abs/1802.07481
- https://arxiv.org/abs/1907.05830