Code Monkey home page Code Monkey logo

falkon's Introduction

Falkon

Python implementation of the Falkon algorithm for large-scale, approximate kernel ridge regression.

The code is optimized for scalability to large datasets with tens of millions of points and beyond. Full kernel matrices are never computed explicitly so that you will not run out of memory on larger problems.

Preconditioned conjugate gradient optimization ensures that only few iterations are necessary to obtain good results.

The basic algorithm is a Nyström approximation to kernel ridge regression, which needs only three hyperparameters:

  1. The number of centers M - this controls the quality of the approximation: a higher number of centers will produce more accurate results at the expense of more computation time, and higher memory requirements.
  2. The penalty term, which controls the amount of regularization.
  3. The kernel function. A good default is always the Gaussian (or RBF) kernel (falkon.kernels.GaussianKernel).

For more information about the algorithm and the optimized solver, you can download our paper: Kernel methods through the roof: handling billions of points efficiently

Documentation

The API is sklearn-like, so that Falkon should be easy to integrate in your existing code. Several worked-through examples are provided in the docs, and for more advanced usage, extensive documentation is available at https://falkonml.github.io/falkon/.

If you find a bug, please open a new issue on GitHub!

Installing

Prerequisites are PyTorch >= 1.9 (with the CUDA toolkit if GPU support is desired) and a patched version of KeOps (which is distributed as a git submodule of this repository), cmake, and a C++ compiler which can compile PyTorch extensions (i.e. capable of compiling with -std=c++14).

Once the prerequisites are met, you can pip install . from the root of this repository.

More detailed installation instructions are available in the documentation.

Gradient-based Hyperparameter Optimization

New! We added a new module for automatic hyperparameter optimization. The falkon.hopt module contains the implementation of several objective functions which can be minimized with respect to Falkon's hyperparameters (notably the penalty, the kernel parameters and the centers themselves).

For more details check out our paper: Efficient Hyperparameter Tuning for Large Scale Kernel Ridge Regression, and the automatic hyperparameter tuning notebook.

References

If you find this library useful for your work, please cite the following publications:

@inproceedings{falkonlibrary2020,
    title = {Kernel methods through the roof: handling billions of points efficiently},
    authors = {Meanti, Giacomo and Carratino, Luigi and Rosasco, Lorenzo and Rudi, Alessandro},
    year = {2020},
    booktitle = {Advances in Neural Information Processing Systems 32},
}
@inproceedings{falkonhopt2022,
    title = {Efficient Hyperparameter Tuning for Large Scale Kernel Ridge Regression},
    authors = {Meanti, Giacomo and Carratino, Luigi and De Vito, Ernesto and Rosasco, Lorenzo},
    year = {2022},
    booktitle = {(to appear in) Proceedings of The 25th International Conference on Artificial Intelligence and Statistics},
}

falkon's People

Contributors

akatsuki96 avatar giodiro avatar mathurinm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.