All Projects → nccr-itmo → FEDOT

nccr-itmo / FEDOT

Licence: BSD-3-Clause License
Automated modeling and machine learning framework FEDOT

Programming Languages

python
139335 projects - #7 most used programming language
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to FEDOT

Tpot
A Python Automated Machine Learning tool that optimizes machine learning pipelines using genetic programming.
Stars: ✭ 8,378 (+2585.26%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning, parameter-tuning
mindware
An efficient open-source AutoML system for automating machine learning lifecycle, including feature engineering, neural architecture search, and hyper-parameter tuning.
Stars: ✭ 34 (-89.1%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Autogluon
AutoGluon: AutoML for Text, Image, and Tabular Data
Stars: ✭ 3,920 (+1156.41%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Smac3
Sequential Model-based Algorithm Configuration
Stars: ✭ 564 (+80.77%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Hypernets
A General Automated Machine Learning framework to simplify the development of End-to-end AutoML toolkits in specific domains.
Stars: ✭ 221 (-29.17%)
Mutual labels:  hyperparameter-optimization, evolutionary-algorithms, automl
EvolutionaryForest
An open source python library for automated feature engineering based on Genetic Programming
Stars: ✭ 56 (-82.05%)
Mutual labels:  genetic-programming, automl, automated-machine-learning
Hpbandster
a distributed Hyperband implementation on Steroids
Stars: ✭ 456 (+46.15%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Auto Sklearn
Automated Machine Learning with scikit-learn
Stars: ✭ 5,916 (+1796.15%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Nni
An open source AutoML toolkit for automate machine learning lifecycle, including feature engineering, neural architecture search, model compression and hyper-parameter tuning.
Stars: ✭ 10,698 (+3328.85%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Mljar Supervised
Automated Machine Learning Pipeline with Feature Engineering and Hyper-Parameters Tuning 🚀
Stars: ✭ 961 (+208.01%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Auptimizer
An automatic ML model optimization tool.
Stars: ✭ 166 (-46.79%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Auto ml
[UNMAINTAINED] Automated machine learning for analytics & production
Stars: ✭ 1,559 (+399.68%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
Lale
Library for Semi-Automated Data Science
Stars: ✭ 198 (-36.54%)
Mutual labels:  hyperparameter-optimization, automl, automated-machine-learning
FEDOT.Web
Graphic tool for the automated evolutionary design of composite models
Stars: ✭ 33 (-89.42%)
Mutual labels:  automl, fedot
MAP-Elites
Python implementation of the genetic algorithm MAP-Elites with applications in constrained optimization
Stars: ✭ 38 (-87.82%)
Mutual labels:  genetic-programming, evolutionary-algorithms
SimpleGP
Simple Genetic Programming for Symbolic Regression in Python3
Stars: ✭ 20 (-93.59%)
Mutual labels:  genetic-programming, evolutionary-algorithms
featuretoolsOnSpark
A simplified version of featuretools for Spark
Stars: ✭ 24 (-92.31%)
Mutual labels:  automl, automated-machine-learning
Auto-Surprise
An AutoRecSys library for Surprise. Automate algorithm selection and hyperparameter tuning 🚀
Stars: ✭ 19 (-93.91%)
Mutual labels:  automl, automated-machine-learning
AutoPrognosis
Codebase for "AutoPrognosis: Automated Clinical Prognostic Modeling via Bayesian Optimization", ICML 2018.
Stars: ✭ 47 (-84.94%)
Mutual labels:  automl, automated-machine-learning
vita
Vita - Genetic Programming Framework
Stars: ✭ 24 (-92.31%)
Mutual labels:  genetic-programming, evolutionary-algorithms

Logo of FEDOT framework

package
tests
docs Documentation Status
license
Supported Python Versions
stats
downloads_stats
support

This repository contains FEDOT - an open-source framework for automated modeling and machine learning (AutoML). It can build custom modeling pipelines for different real-world processes in an automated way using an evolutionary approach. FEDOT supports classification (binary and multiclass), regression, clustering, and time series prediction tasks.

The structure of the modeling pipeline that can be optimised by FEDOT

The main feature of the framework is the complex management of interactions between various blocks of pipelines. First of all, this includes the stage of machine learning model design. FEDOT allows you to not just choose the best type of the model, but to create a complex (composite) model. It allows you to combine several models of different complexity, which helps you to achieve better modeling quality than when using any of these models separately. Within the framework, we describe composite models in the form of a graph defining the connections between data preprocessing blocks and model blocks.

The framework is not limited to specific AutoML tasks (such as pre-processing of input data, feature selection, or optimization of model hyperparameters), but allows you to solve a more general structural learning problem - for a given data set, a solution is built in the form of a graph (DAG), the nodes of which are represented by ML models, pre-processing procedures, and data transformation.

The project is maintained by the research team of the Natural Systems Simulation Lab, which is a part of the National Center for Cognitive Research of ITMO University.

The intro video about Fedot is available here:

Introducing Fedot

FEDOT features

The main features of the framework are as follows:

  • The FEDOT architecture is highly flexible and therefore the framework can be used to automate the creation of mathematical models for various problems, types of data, and models;
  • FEDOT already supports popular ML libraries (scikit-learn, keras, statsmodels, etc.), but you can also integrate custom tools into the framework if necessary;
  • Pipeline optimization algorithms are not tied to specific data types or tasks, but you can use special templates for a specific task class or data type (time series forecasting, NLP, tabular data, etc.) to increase the efficiency;
  • The framework is not limited only to machine learning, it is possible to embed models related to specific areas into pipelines (for example, models in ODE or PDE);
  • Additional methods for hyperparameters tuning can be seamlessly integrated into FEDOT (in addition to those already supported);
  • The resulting pipelines can be exported in a human-readable JSON format, which allows you to achieve reproducibility of the experiments.

Thus, compared to other frameworks, FEDOT:

  • Is not limited to specific modeling tasks and claims versatility and expandability;
  • Allows managing the complexity of models and thereby achieving better results.
  • Allows building models using input data of various nature (texts, images, tables, etc.) and consisting of different types of models.

Installation

Common installation:

$ pip install fedot

In order to work with FEDOT source code:

$ git clone https://github.com/nccr-itmo/FEDOT.git
$ cd FEDOT
$ pip install -r requirements.txt
$ pytest -s test

How to use

FEDOT provides a high-level API that allows you to use its capabilities in a simple way. At the moment, the API can be used for classification and regression tasks only. But the time series forecasting and clustering support will be implemented soon (you can still solve these tasks via advanced initialization, see below). Input data must be either in NumPy arrays or CSV files.

To use the API, follow these steps:

  1. Import Fedot class
from fedot.api.main import Fedot
  1. Initialize the Fedot object and define the type of modeling problem. It provides a fit/predict interface:
  • fedot.fit runs the optimization and returns the resulting composite model;
  • fedot.predict returns the prediction for the given input data;
  • fedot.get_metrics estimates the quality of predictions using selected metrics

Numpy arrays, pandas data frames, and file paths can be used as sources of input data.

model = Fedot(problem='classification')

model.fit(features=train_data.features, target=train_data.target)
prediction = model.predict(features=test_data.features)

metrics = model.get_metrics()

For more advanced approaches, please use Examples & Tutorials section.

Examples & Tutorials

Jupyter notebooks with tutorials are located in the examples repository. There you can find the following guides:

Notebooks are issued with the corresponding release versions (the default version is 'latest').

Also, external examples are available:

Extended examples:

Also, several video tutorials are available (in Russian).

Publications about FEDOT

We also published several posts and news devoted to the different aspects of the framework:

In English:

In Russian:

  • General concepts of evolutionary design for composite pipelines - habr.com
  • Automated time series forecasting with FEDOT - habr.com
  • Details of FEDOT-based solution for Emergency DataHack - habr.com

Project structure

The latest stable release of FEDOT is on the master branch.

The repository includes the following directories:

  • Package core contains the main classes and scripts. It is the core of FEDOT framework
  • Package examples includes several how-to-use-cases where you can start to discover how FEDOT works
  • All unit and integration tests can be observed in the test directory
  • The sources of the documentation are in the docs

Also, you can check benchmarking a repository that was developed to provide a comparison of FEDOT against some well-known AutoML frameworks.

Current R&D and future plans

Currently, we are working on new features and trying to improve the performance and the user experience of FEDOT. The major ongoing tasks and plans:

  • Effective and ready-to-use pipeline templates for certain tasks and data types;
  • Integration with GPU via Rapids framework;
  • Alternative optimization methods of fixed-shaped pipelines;
  • Integration with MLFlow for import and export of the pipelines;
  • Improvement of high-level API.

Also, we are doing several research tasks related to AutoML time-series benchmarking and multi-modal modeling.

Any contribution is welcome. Our R&D team is open for cooperation with other scientific teams as well as with industrial partners.

Documentation

The general description is available in FEDOT.Docs repository.

Also, a detailed FEDOT API description is available in the Read the Docs.

Contribution Guide

  • The contribution guide is available in the repository.

Acknowledgments

We acknowledge the contributors for their important impact and the participants of the numerous scientific conferences and workshops for their valuable advice and suggestions.

Side projects

  • The prototype of web-GUI for FEDOT is available in FEDOT.WEB repository.

Contacts

Supported by

Citation

@article{nikitin2021automated,
title = {Automated evolutionary approach for the design of composite machine learning pipelines}, author = {Nikolay O. Nikitin and Pavel Vychuzhanin and Mikhail Sarafanov and Iana S. Polonskaia and Ilia Revin and Irina V. Barabanova and Gleb Maximov and Anna V. Kalyuzhnaya and Alexander Boukhanovsky}, journal = {Future Generation Computer Systems}, year = {2021}, issn = {0167-739X}, doi = {https://doi.org/10.1016/j.future.2021.08.022}}
@inproceedings{polonskaia2021multi,
title={Multi-Objective Evolutionary Design of Composite Data-Driven Models}, author={Polonskaia, Iana S. and Nikitin, Nikolay O. and Revin, Ilia and Vychuzhanin, Pavel and Kalyuzhnaya, Anna V.}, booktitle={2021 IEEE Congress on Evolutionary Computation (CEC)}, year={2021}, pages={926-933}, doi={10.1109/CEC45853.2021.9504773}}

Other papers - in ResearchGate.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].