Ecosyste.ms: Awesome

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

https://github.com/aimclub/FEDOT

Automated modeling and machine learning framework FEDOT
https://github.com/aimclub/FEDOT

automated-machine-learning automation automl evolutionary-algorithms fedot genetic-programming hyperparameter-optimization machine-learning multimodality parameter-tuning structural-learning

Last synced: 3 months ago
JSON representation

Automated modeling and machine learning framework FEDOT

Lists

README

        

.. |eng| image:: https://img.shields.io/badge/lang-en-red.svg
:target: /README_en.rst

.. |rus| image:: https://img.shields.io/badge/lang-ru-yellow.svg
:target: /README.rst

.. image:: docs/fedot_logo.png
:alt: Logo of FEDOT framework

.. start-badges
.. list-table::
:stub-columns: 1

* - package
- | |pypi| |python|
* - tests
- | |build| |integration| |coverage|
* - docs
- |docs|
* - license
- | |license|
* - stats
- | |downloads_stats|
* - support
- | |tg|
* - languages
- | |eng| |rus|
* - mirror
- | |gitlab|
* - funding
- | |ITMO| |NCCR|
.. end-badges

**FEDOT** - это open-source фреймворк для решения задач из области автоматизированного моделирования и машинного обучения (AutoML). Фреймворк распространяется под лицензией 3-Clause BSD.

FEDOT предоставляет возможность использовать генеративный дизайн для проектирования пайплайнов машинного обучения для различных реальных задач. Ядро фреймворка основано на эволюционном подходе и поддерживает классификацию (бинарную и мультиклассовую), регрессию, и задачи прогнозирования временных рядов.

.. image:: docs/fedot-workflow.png
:alt: Реализация процесса автоматического машинного обучения в FEDOT

Ключевой особенностью фреймворка является управление сложными взаимодействиями между различными частями пайплайнов. Они представлены в виде графа, который определяет связи между предварительной обработкой данных и блоками модели.

Проект поддерживается исследовательской группой Natural Systems Simulation Lab, которая является частью `Национального центра когнитивных разработок Университета ИТМО `__.

Более подробная информация о FEDOT доступна в следующем видео:

.. image:: https://res.cloudinary.com/marcomontalbano/image/upload/v1606396758/video_to_markdown/images/youtube--RjbuV6i6de4-c05b58ac6eb4c4700831b2b3070cd403.jpg
:target: http://www.youtube.com/watch?v=RjbuV6i6de4
:alt: Introducing Fedot

Концепции FEDOT'а
=================

- **Гибкость.** FEDOT может быть использован для автоматизации поиска решений для различных `классов задач `_, `типов данных `_ (тексты, изображения, таблицы), и `моделей `_;
- **Расширяемость.** Алгоритмы для оптимизации пайплайнов не зависят от вида данных и задач, однако можно использовать `специальные стратегии `_ для определенных классов задач или типов данных (прогнозирование временных рядов, NLP, табличные данные и т.д.) для повышения эффективности;
- **Интегрируемость.** FEDOT поддерживает широко используемые библиотеки МО (Scikit-learn, CatBoost, XGBoost и т.д.) и позволяет интегрировать `пользовательские библиотеки `_;
- **Тюнингуемость.** Поддерживаются различные методы `настройки гиперпараметров `_, включая пользовательские метрики оценивания и пространства параметров моделей;
- **Универсальность.** FEDOT `не ограничивается конкретными задачами моделирования `_, например, его можно использовать в ODE или PDE;
- **Воспроизводимость.** Получаемые паплайны можно `экспортировать в формате JSON отдельно `_ или `вместе с входными данными в формате архива ZIP `_, для воспроизведения экспериментов;
- **Кастомизируемость.** FEDOT позволяет `настраивать сложность моделей `_, тем самым, получать необходимое качество.

Установка
=========

Самый простой способ установить FEDOT - это использовать ``pip``:

.. code-block::

$ pip install fedot

Установка с дополнительными зависимостями для обработки изображений и текста, а также для DNN:

.. code-block::

$ pip install fedot[extra]

Как использовать
================

FEDOT предоставляет высокоуровневый API, который удобно использовать. API может использоваться для задач классификации, регрессии и прогнозирования временных рядов.
Чтобы использовать API, выполните следующие действия:

1. Импортируйте класс ``Fedot``

.. code-block:: python

from fedot.api.main import Fedot

2. Инициализируйте объект FEDOT и задайте тип задачи моделирования. Объект предоставит интерфейс fit/predict:

- ``Fedot.fit()`` запускает оптимизацию и возвращает получившийся составной пайплайн;
- ``Fedot.predict()`` прогнозирует целевые значения для заданных входных данных, используя уже полученный пайплайн;
- ``Fedot.get_metrics()`` оценивает качество предсказаний с использованием выбранных показателей.

В качестве источников входных данных могут использоваться массивы NumPy, датафреймы Pandas и путь к файлу. В приведенном ниже примере ``x_train``, ``y_train`` и ``x_test`` являются ``numpy.ndarray()``:

.. code-block:: python

model = Fedot(problem='classification', timeout=5, preset='best_quality', n_jobs=-1)
model.fit(features=x_train, target=y_train)
prediction = model.predict(features=x_test)
metrics = model.get_metrics(target=y_test)

Более подробная информация об API доступна в `документации `__, а более сложные примеры показаны `в этом разделе `__.

Примеры
=======

Jupyter ноутбуки с примерами находятся в репозитории `fedot-examples `__. Там вы можете найти следующие руководства:

* `Intro to AutoML `__
* `Intro to FEDOT functionality `__
* `Intro to time series forecasting with FEDOT `__
* `Advanced time series forecasting `__
* `Gap-filling in time series and out-of-sample forecasting `__
* `Hybrid modelling with custom models `__

Версии ноутбуков выпускаются в соответствии с версиями релизов (версия по умолчанию - "latest").

Также доступны примеры на внешних платформах:

* `Kaggle: baseline for Microsoft Stock - Time Series Analysis task `__

Расширенные примеры:

- Задача с кредитным скорингом `binary classification task `__
- Прогнозирование временных рядов `random process regression `__
- Обнаружение спама `natural language preprocessing `__
- Предсказание сорта вина `multi-modal data `__

Также доступно несколько `видео уроков `__ (на русском).

Публикации о FEDOT
==================

Мы опубликовали несколько постов о различных аспектах фреймворка:

На английском:

- How AutoML helps to create composite AI? - `towardsdatascience.com `__
- AutoML for time series: definitely a good idea - `towardsdatascience.com `__
- AutoML for time series: advanced approaches with FEDOT framework - `towardsdatascience.com `__
- Winning a flood-forecasting hackathon with hydrology and AutoML - `towardsdatascience.com `__
- Clean AutoML for “Dirty” Data - `towardsdatascience.com `__
- FEDOT as a factory of human-competitive results - `youtube.com `__
- Hyperparameters Tuning for Machine Learning Model Ensembles - `towardsdatascience.com `__

На русском:

- Как AutoML помогает создавать модели композитного ИИ — говорим о структурном обучении и фреймворке FEDOT - `habr.com `__
- Прогнозирование временных рядов с помощью AutoML - `habr.com `__
- Как мы “повернули реки вспять” на Emergency DataHack 2021, объединив гидрологию и AutoML - `habr.com `__
- Чистый AutoML для “грязных” данных: как и зачем автоматизировать предобработку таблиц в машинном обучении - `ODS blog `__
- Фреймворк автоматического машинного обучения FEDOT (Конференция Highload++ 2022) - `presentation `__
- Про настройку гиперпараметров ансамблей моделей машинного обучения - `habr.com `__

На китайском:

- 生成式自动机器学习系统 (презентация на конференции "Open Innovations 2.0") - `youtube.com `__

Структура проекта
=================

Последняя стабильная версия FEDOT находится в `ветке master `__.

Репозиторий включает в себя следующие директории:

* В пакете `core `__ находятся основные классы и скрипты. Это *ядро* фреймворка FEDOT.
* В пакете `examples `__ собраны несколько примеров использования, с которых можно начать знакомство с FEDOT.
* Все тесты (unit и интеграционные) находятся в папке `test `__.
* Документация находится в папке `docs `__.

Текущие исследования/разработки и планы на будущее
==================================================

В настоящее время мы работаем над новыми функциями и пытаемся улучшить производительность и удобство использования FEDOT.
Основные текущие задачи и планы:

* Реализация методов и алгоритмов мета-обучения
* Повышение эффективности оптимизационного ядра GOLEM.
* Поддержка более сложных вариантов пайплайнов, особенно для задач прогнозирования временных рядов.

Кроме того, мы работаем над рядом исследовательских задач, связанных с бенчмаркингом прогнозирования временных рядов с помощью AutoML и мультимодального моделирования.

Наша научно-исследовательская команда открыта для сотрудничества с другими научными коллективами, а также с партнерами из индустрии.

Документация
============

Подробное описание FEDOT API доступно в разделе `Read the Docs `__.

Как участвовать
===============

- Инструкция для добавления изменений находится в `репозитории `__.

Благодарности
=============

Мы благодарны контрибьютерам за их важный вклад, а участникам многочисленных конференций и семинаров - за их ценные советы и предложения.

Дополнительные проекты
======================
- Оптимизационное ядро, вынесенное в библиотеку `GOLEM `__.
- Прототип реализации Meta-AutoML - `MetaFEDOT `__.
- Прототип web-GUI для FEDOT - `FEDOT.WEB `__.

Контакты
========
- `Telegram-канал `_ для решения проблем и ответов на вопросы о FEDOT
- Команда `Natural System Simulation `_
- `Анна Калюжная `_, руководитель ([email protected])
- `Новости `_
- `Youtube канал `_

Разработка ведётся при поддержке
================================

- `Национальный центр когнитивных разработок Университета ИТМО `_

Цитирование
===========

@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}}

Другие статьи доступны на `ResearchGate `_.

.. |docs| image:: https://readthedocs.org/projects/ebonite/badge/?style=flat
:target: https://fedot.readthedocs.io/en/latest/
:alt: Documentation Status

.. |build| image:: https://github.com/aimclub/FEDOT/workflows/Build/badge.svg?branch=master
:alt: Build Status
:target: https://github.com/aimclub/FEDOT/actions

.. |integration| image:: https://github.com/aimclub/FEDOT/workflows/Integration/badge.svg?branch=master
:alt: Integration Build Status
:target: https://github.com/aimclub/FEDOT/actions/workflows/integration-build.yml

.. |coverage| image:: https://codecov.io/gh/aimclub/FEDOT/branch/master/graph/badge.svg
:alt: Coverage Status
:target: https://codecov.io/gh/aimclub/FEDOT

.. |pypi| image:: https://badge.fury.io/py/fedot.svg
:alt: Supported Python Versions
:target: https://badge.fury.io/py/fedot

.. |python| image:: https://img.shields.io/pypi/pyversions/fedot.svg
:alt: Supported Python Versions
:target: https://img.shields.io/pypi/pyversions/fedot

.. |license| image:: https://img.shields.io/github/license/aimclub/FEDOT
:alt: Supported Python Versions
:target: https://github.com/aimclub/FEDOT/blob/master/LICENSE.md

.. |downloads_stats| image:: https://static.pepy.tech/personalized-badge/fedot?period=total&units=international_system&left_color=grey&right_color=brightgreen&left_text=Downloads
:target: https://pepy.tech/project/fedot

.. |tg| image:: https://img.shields.io/badge/Telegram-Group-blue.svg
:target: https://t.me/FEDOT_helpdesk
:alt: Telegram Chat

.. |ITMO| image:: https://github.com/ITMO-NSS-team/open-source-ops/blob/add_badge/badges/ITMO_badge_rus.svg
:alt: Acknowledgement to ITMO
:target: https://itmo.ru

.. |NCCR| image:: https://github.com/ITMO-NSS-team/open-source-ops/blob/add_badge/badges/NCCR_badge.svg
:alt: Acknowledgement to NCCR
:target: https://actcognitive.org/

.. |gitlab| image:: https://camo.githubusercontent.com/9bd7b8c5b418f1364e72110a83629772729b29e8f3393b6c86bff237a6b784f6/68747470733a2f2f62616467656e2e6e65742f62616467652f6769746c61622f6d6972726f722f6f72616e67653f69636f6e3d6769746c6162
:alt: GitLab mirror for this repository
:target: https://gitlab.actcognitive.org/itmo-nss-team/FEDOT