FEDOT
.. |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 может быть использован для автоматизации поиска решений для различных
,классов задач <https://fedot.readthedocs.io/en/master/introduction/fedot_features/main_features.html#involved-tasks>
(тексты, изображения, таблицы), итипов данных <https://fedot.readthedocs.io/en/master/introduction/fedot_features/automation_features.html#data-nature>
_;моделей <https://fedot.readthedocs.io/en/master/advanced/automated_pipelines_design.html> - Расширяемость. Алгоритмы для оптимизации пайплайнов не зависят от вида данных и задач, однако можно использовать
_ для определенных классов задач или типов данных (прогнозирование временных рядов, NLP, табличные данные и т.д.) для повышения эффективности;специальные стратегии <https://fedot.readthedocs.io/en/master/api/strategies.html> - Интегрируемость. FEDOT поддерживает широко используемые библиотеки МО (Scikit-learn, CatBoost, XGBoost и т.д.) и позволяет интегрировать
_;пользовательские библиотеки <https://fedot.readthedocs.io/en/master/api/strategies.html#module-fedot.core.operations.evaluation.custom> - Тюнингуемость. Поддерживаются различные методы
_, включая пользовательские метрики оценивания и пространства параметров моделей;настройки гиперпараметров <https://fedot.readthedocs.io/en/master/advanced/hyperparameters_tuning.html> - Универсальность. FEDOT
_, например, его можно использовать в ODE или PDE;не ограничивается конкретными задачами моделирования <https://fedot.readthedocs.io/en/master/advanced/architecture.html> - Воспроизводимость. Получаемые паплайны можно
_ илиэкспортировать в формате JSON отдельно <https://fedot.readthedocs.io/en/master/advanced/pipeline_import_export.html>
_, для воспроизведения экспериментов;вместе с входными данными в формате архива ZIP <https://fedot.readthedocs.io/en/master/advanced/project_import_export.html> - Кастомизируемость. FEDOT позволяет
_, тем самым, получать необходимое качество.настраивать сложность моделей <https://fedot.readthedocs.io/en/master/introduction/fedot_features/automation_features.html#models-used>
Установка
- Cистема управления пакетами pip
Самый простой способ установить FEDOT - это использовать
:
.. code-block::
$ pip install fedot
Установка с дополнительными зависимостями для обработки изображений и текста, а также для DNN:
.. code-block::
$ pip install fedot[extra]
- Контенер Docker
Информацию по доступным образам можно посмотреть
_.
Как использовать
FEDOT предоставляет высокоуровневый API, который удобно использовать. API может использоваться для задач классификации, регрессии и прогнозирования временных рядов. Чтобы использовать API, выполните следующие действия:
- Импортируйте класс Fedot
.. code-block:: python
from fedot.api.main import Fedot
- Инициализируйте объект FEDOT и задайте тип задачи моделирования. Объект предоставит интерфейс fit/predict:
запускает оптимизацию и возвращает получившийся составной пайплайн;Fedot.fit()
прогнозирует целевые значения для заданных входных данных, используя уже полученный пайплайн;Fedot.predict()
оценивает качество предсказаний с использованием выбранных показателей.Fedot.get_metrics()
В качестве источников входных данных могут использоваться массивы NumPy, датафреймы Pandas и путь к файлу. В приведенном ниже примере
,
и
являются
:
.. 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 ноутбуки с примерами находятся в репозитории
__. Там вы можете найти следующие руководства:
__Intro to AutoML <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/1_intro_to_automl.ipynb>
__Intro to FEDOT functionality <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/2_intro_to_fedot.ipynb>
__Intro to time series forecasting with FEDOT <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/3_intro_ts_forecasting.ipynb>
__Advanced time series forecasting <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/4_auto_ts_forecasting.ipynb>
__Gap-filling in time series and out-of-sample forecasting <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/5_ts_specific_cases.ipynb>
__Hybrid modelling with custom models <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/6_hybrid_modelling.ipynb>
Версии ноутбуков выпускаются в соответствии с версиями релизов (версия по умолчанию - "latest").
Также доступны примеры на внешних платформах:
__Kaggle: baseline for Microsoft Stock - Time Series Analysis task <https://www.kaggle.com/dreamlone/microsoft-stocks-price-prediction-automl>
Расширенные примеры:
- Задача с кредитным скорингом
__binary classification task <https://github.com/aimclub/FEDOT/blob/master/cases/credit_scoring/credit_scoring_problem.py> - Прогнозирование временных рядов
__random process regression <https://github.com/aimclub/FEDOT/blob/master/cases/metocean_forecasting_problem.py> - Обнаружение спама
__natural language preprocessing <https://github.com/aimclub/FEDOT/blob/master/cases/spam_detection.py> - Предсказание сорта вина
__multi-modal data <https://github.com/aimclub/FEDOT/blob/master/examples/advanced/multimodal_text_num_example.py>
Также доступно несколько
__ (на русском).
Публикации о FEDOT
Мы опубликовали несколько постов о различных аспектах фреймворка:
На английском:
- How AutoML helps to create composite AI? -
__towardsdatascience.com <https://towardsdatascience.com/how-automl-helps-to-create-composite-ai-f09e05287563> - AutoML for time series: definitely a good idea -
__towardsdatascience.com <https://towardsdatascience.com/automl-for-time-series-definitely-a-good-idea-c51d39b2b3f> - AutoML for time series: advanced approaches with FEDOT framework -
__towardsdatascience.com <https://towardsdatascience.com/automl-for-time-series-advanced-approaches-with-fedot-framework-4f9d8ea3382c> - Winning a flood-forecasting hackathon with hydrology and AutoML -
__towardsdatascience.com <https://towardsdatascience.com/winning-a-flood-forecasting-hackathon-with-hydrology-and-automl-156a8a7a4ede> - Clean AutoML for “Dirty” Data -
__towardsdatascience.com <https://towardsdatascience.com/clean-automl-for-dirty-data-how-and-why-to-automate-preprocessing-of-tables-in-machine-learning-d79ac87780d3> - FEDOT as a factory of human-competitive results -
__youtube.com <https://www.youtube.com/watch?v=9Rhqcsrolb8&ab_channel=NSS-Lab> - Hyperparameters Tuning for Machine Learning Model Ensembles -
__towardsdatascience.com <https://towardsdatascience.com/hyperparameters-tuning-for-machine-learning-model-ensembles-8051782b538b>
На русском:
- Как AutoML помогает создавать модели композитного ИИ — говорим о структурном обучении и фреймворке FEDOT -
__habr.com <https://habr.com/ru/company/spbifmo/blog/558450> - Прогнозирование временных рядов с помощью AutoML -
__habr.com <https://habr.com/ru/post/559796/> - Как мы “повернули реки вспять” на Emergency DataHack 2021, объединив гидрологию и AutoML -
__habr.com <https://habr.com/ru/post/577886/> - Чистый AutoML для “грязных” данных: как и зачем автоматизировать предобработку таблиц в машинном обучении -
__ODS blog <https://habr.com/ru/company/ods/blog/657525/> - Фреймворк автоматического машинного обучения FEDOT (Конференция Highload++ 2022) -
__presentation <https://docs.yandex.ru/docs/view?url=ya-disk-public%3A%2F%2Fi27LScu3s3IIHDzIXt9O5EiEAMl6ThY6QLu3X1oYH%2FFiAl%2BLcNp4O4yTSYd2gRZnW5aDQ4kMZEXE%2BwNjbq78ug%3D%3D%3A%2F%D0%94%D0%B5%D0%BD%D1%8C%201%2F4.%D0%A1%D0%B8%D0%BD%D0%BD%D0%B0%D0%BA%D1%81%2F9.Open%20source-%D1%82%D1%80%D0%B8%D0%B1%D1%83%D0%BD%D0%B0_HL_FEDOT.pptx&name=9.Open%20source-%D1%82%D1%80%D0%B8%D0%B1%D1%83%D0%BD%D0%B0_HL_FEDOT.pptx> - Про настройку гиперпараметров ансамблей моделей машинного обучения -
__habr.com <https://habr.com/ru/post/672486/>
На китайском:
- 生成式自动机器学习系统 (презентация на конференции "Open Innovations 2.0") -
__youtube.com <https://www.youtube.com/watch?v=PEET0EbCSCY>
Структура проекта
Последняя стабильная версия FEDOT находится в
__.
Репозиторий включает в себя следующие директории:
- В пакете
__ находятся основные классы и скрипты. Это ядро фреймворка FEDOT.core <https://github.com/aimclub/FEDOT/tree/master/fedot/core> - В пакете
__ собраны несколько примеров использования, с которых можно начать знакомство с FEDOT.examples <https://github.com/aimclub/FEDOT/tree/master/examples> - Все тесты (unit и интеграционные) находятся в папке
__.test <https://github.com/aimclub/FEDOT/tree/master/test> - Документация находится в папке
__.docs <https://github.com/aimclub/FEDOT/tree/master/docs>
Текущие исследования/разработки и планы на будущее
В настоящее время мы работаем над новыми функциями и пытаемся улучшить производительность и удобство использования FEDOT. Основные текущие задачи и планы:
- Реализация методов и алгоритмов мета-обучения
- Повышение эффективности оптимизационного ядра GOLEM.
- Поддержка более сложных вариантов пайплайнов, особенно для задач прогнозирования временных рядов.
Кроме того, мы работаем над рядом исследовательских задач, связанных с бенчмаркингом прогнозирования временных рядов с помощью AutoML и мультимодального моделирования.
Наша научно-исследовательская команда открыта для сотрудничества с другими научными коллективами, а также с партнерами из индустрии.
Документация
Подробное описание FEDOT API доступно в разделе
__.
Как участвовать
- Инструкция для добавления изменений находится в
__.репозитории <https://github.com/aimclub/FEDOT/blob/master/docs/source/contribution.rst>
Благодарности
Мы благодарны контрибьютерам за их важный вклад, а участникам многочисленных конференций и семинаров - за их ценные советы и предложения.
Дополнительные проекты
- Оптимизационное ядро, вынесенное в библиотеку
__.GOLEM <https://github.com/aimclub/GOLEM/> - Прототип реализации Meta-AutoML -
__.MetaFEDOT <https://github.com/ITMO-NSS-team/MetaFEDOT> - Прототип web-GUI для FEDOT -
__.FEDOT.WEB <https://github.com/aimclub/FEDOT.Web>
Контакты
_ для решения проблем и ответов на вопросы о FEDOTTelegram-канал <https://t.me/FEDOT_helpdesk>- Команда
_Natural System Simulation <https://itmo-nss-team.github.io/>
_, руководитель (anna.kalyuzhnaya@itmo.ru)Анна Калюжная <https://scholar.google.com/citations?user=bjiILqcAAAAJ&hl=ru>
_Новости <https://t.me/NSS_group>
_Youtube канал <https://www.youtube.com/channel/UC4K9QWaEUpT_p3R4FeDp5jA>
Разработка ведётся при поддержке
_Национальный центр когнитивных разработок Университета ИТМО <https://actcognitive.org/>
Цитирование
@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}}
Другие статьи доступны на
_.
.. |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/actions/workflows/unit-build.yml/badge.svg :alt: Build Status :target: https://github.com/aimclub/FEDOT/actions/workflows/unit-build.yml
.. |integration| image:: https://github.com/aimclub/FEDOT/actions/workflows/integration-build.yml/badge.svg :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://raw.githubusercontent.com/aimclub/open-source-ops/43bb283758b43d75ec1df0a6bb4ae3eb20066323/badges/ITMO_badge_rus.svg :alt: Acknowledgement to ITMO :target: https://itmo.ru
.. |NCCR| image:: https://raw.githubusercontent.com/aimclub/open-source-ops/43bb283758b43d75ec1df0a6bb4ae3eb20066323/badges/NCCR_badge.svg :alt: Acknowledgement to NCCR :target: https://actcognitive.org/
.. |gitlab| image:: https://img.shields.io/badge/mirror-GitLab-orange :alt: GitLab mirror for this repository :target: https://gitlab.actcognitive.org/itmo-nss-team/FEDOT
Описание
Automated modeling and machine learning framework FEDOT
Языки
Python
- Dockerfile
- Shell