package | |
---|---|
tests | |
docs | |
license | |
stats | |
support | |
languages | |
mirror | |
funding |
FEDOT - это open-source фреймворк для решения задач из области автоматизированного моделирования и машинного обучения (AutoML). Фреймворк распространяется под лицензией 3-Clause BSD.
FEDOT предоставляет возможность использовать генеративный дизайн для проектирования пайплайнов машинного обучения для различных реальных задач. Ядро фреймворка основано на эволюционном подходе и поддерживает классификацию (бинарную и мультиклассовую), регрессию, и задачи прогнозирования временных рядов.
Ключевой особенностью фреймворка является управление сложными взаимодействиями между различными частями пайплайнов. Они представлены в виде графа, который определяет связи между предварительной обработкой данных и блоками модели.
Проект поддерживается исследовательской группой Natural Systems Simulation Lab, которая является частью Национального центра когнитивных разработок Университета ИТМО.
Более подробная информация о FEDOT доступна в следующем видео:
- Гибкость. FEDOT может быть использован для автоматизации поиска решений для различных классов задач, типов данных (тексты, изображения, таблицы), и моделей;
- Расширяемость. Алгоритмы для оптимизации пайплайнов не зависят от вида данных и задач, однако можно использовать специальные стратегии для определенных классов задач или типов данных (прогнозирование временных рядов, NLP, табличные данные и т.д.) для повышения эффективности;
- Интегрируемость. FEDOT поддерживает широко используемые библиотеки МО (Scikit-learn, CatBoost, XGBoost и т.д.) и позволяет интегрировать пользовательские библиотеки;
- Тюнингуемость. Поддерживаются различные методы настройки гиперпараметров, включая пользовательские метрики оценивания и пространства параметров моделей;
- Универсальность. FEDOT не ограничивается конкретными задачами моделирования, например, его можно использовать в ODE или PDE;
- Воспроизводимость. Получаемые паплайны можно экспортировать в формате JSON отдельно или вместе с входными данными в формате архива ZIP, для воспроизведения экспериментов;
- Кастомизируемость. FEDOT позволяет настраивать сложность моделей, тем самым, получать необходимое качество.
- Cистема управления пакетами pip
Самый простой способ установить FEDOT - это использовать pip
:
$ pip install fedot
Установка с дополнительными зависимостями для обработки изображений и текста, а также для DNN:
$ pip install fedot[extra]
- Контенер Docker
Информацию по доступным образам можно посмотреть здесь.
FEDOT предоставляет высокоуровневый API, который удобно использовать. API может использоваться для задач классификации, регрессии и прогнозирования временных рядов.
Чтобы использовать API, выполните следующие действия:
- Импортируйте класс
Fedot
from fedot.api.main import Fedot
- Инициализируйте объект FEDOT и задайте тип задачи моделирования. Объект предоставит интерфейс fit/predict:
Fedot.fit()
запускает оптимизацию и возвращает получившийся составной пайплайн;Fedot.predict()
прогнозирует целевые значения для заданных входных данных, используя уже полученный пайплайн;Fedot.get_metrics()
оценивает качество предсказаний с использованием выбранных показателей.
В качестве источников входных данных могут использоваться массивы NumPy, датафреймы Pandas и путь к файлу. В приведенном ниже примере x_train
, y_train
и x_test
являются numpy.ndarray()
:
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").
Также доступны примеры на внешних платформах:
Расширенные примеры:
- Задача с кредитным скорингом binary classification task
- Прогнозирование временных рядов random process regression
- Обнаружение спама natural language preprocessing
- Предсказание сорта вина multi-modal data
Также доступно несколько видео уроков (на русском).
Мы опубликовали несколько постов о различных аспектах фреймворка:
На английском:
- 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. Основные текущие задачи и планы:
- Реализация большой языковой модели для задач автоматического машинного обучения в FEDOT.LLM.
- Реализация методов и алгоритмов мета-обучения в GAMLET.
- Повышение эффективности оптимизационного ядра GOLEM.
- Поддержка более сложных вариантов пайплайнов, особенно для задач прогнозирования временных рядов.
Кроме того, мы работаем над рядом исследовательских задач, связанных с бенчмаркингом прогнозирования временных рядов с помощью AutoML и мультимодального моделирования.
Наша научно-исследовательская команда открыта для сотрудничества с другими научными коллективами, а также с партнерами из индустрии.
Подробное описание FEDOT API доступно в разделе Read the Docs.
- Инструкция для добавления изменений находится в репозитории.
Мы благодарны контрибьютерам за их важный вклад, а участникам многочисленных конференций и семинаров - за их ценные советы и предложения.
- Оптимизационное ядро, вынесенное в библиотеку GOLEM.
- Прототип web-GUI для FEDOT доступен в FEDOT.WEB репозитории.
- Прототип реализации Meta-AutoML - MetaFEDOT.
- Прототип реализации LLM для AutoML - FEDOT.LLM.
- Telegram-канал для решения проблем и ответов на вопросы о FEDOT
- Команда Natural System Simulation
- Анна Калюжная, руководитель (anna.kalyuzhnaya@itmo.ru)
- Новостной Telegram-канал
- 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}}