Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Merlion — Сквозной Python-фреймворк для интеллектуального анализа временных рядов, предлагающий обнаружение аномалий, прогнозирование, обнаружение точек изменения, AutoML, ансамбли и конвейеры бенчмаркинга. | Kitploit
Инструменты/GitHubGitHub/salesforce/merlion
Утилиты и фреймворкиМашинное ОбучениеОбнаружение АномалийArchived
GitHubsalesforce/merlion

Merlion

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

Репозиторий
4.5k3585 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Логотип
Tests Coverage PyPI Version docs

Merlion: библиотека машинного обучения для временных рядов

Оглавление

  1. Введение
  2. Сравнение с аналогичными библиотеками
  3. Установка
  4. Документация
  5. Начало работы
    1. Обнаружение аномалий
    2. Прогнозирование
  6. Оценка и бенчмаркинг
  7. Технический отчет и цитирование Merlion

Введение

Merlion — это библиотека Python для интеллектуального анализа временных рядов. Она предоставляет сквозной фреймворк машинного обучения, который включает загрузку и преобразование данных, создание и обучение моделей, постобработку выходных данных моделей и оценку качества моделей. Она поддерживает различные задачи обучения на временных рядах, включая прогнозирование, обнаружение аномалий и обнаружение точек изменения как для одномерных, так и для многомерных временных рядов. Библиотека призвана предоставить инженерам и исследователям комплексное решение для быстрой разработки моделей под их конкретные задачи с временными рядами и их сравнения на множестве наборов данных временных рядов.

Ключевые возможности Merlion:

  • Стандартизированная и легко расширяемая загрузка данных и бенчмаркинг для широкого круга наборов данных для прогнозирования и обнаружения аномалий. Включает прозрачную поддержку пользовательских наборов данных.
  • Библиотека разнообразных моделей для обнаружения аномалий, прогнозирования и обнаружения точек изменения, объединенных общим интерфейсом. Модели включают классические статистические методы, ансамбли деревьев и подходы глубокого обучения. Опытные пользователи могут полностью настраивать каждую модель по своему желанию.
  • Абстрактные модели DefaultDetector и DefaultForecaster, которые эффективны, стабильно показывают хорошие результаты и служат отправной точкой для новых пользователей.
  • AutoML для автоматической настройки гиперпараметров и выбора моделей.
  • Единый API для использования широкого спектра моделей прогнозирования с экзогенными регрессорами.
  • Практичные правила постобработки для детекторов аномалий, вдохновленные отраслевыми задачами, которые делают оценки аномалий более интерпретируемыми и одновременно снижают количество ложных срабатываний.
  • Простые в использовании ансамбли, которые объединяют выходные данные нескольких моделей для достижения более устойчивой производительности.
  • Гибкие конвейеры оценки, которые имитируют «живое» развертывание и переобучение модели в производстве и оценивают производительность как при прогнозировании, так и при обнаружении аномалий.
  • Встроенная поддержка визуализации прогнозов моделей, в том числе с помощью интерактивного визуального интерфейса.
  • Распределенный вычислительный бэкенд на базе PySpark, который можно использовать для обслуживания приложений на временных рядах в промышленных масштабах.

Сравнение с аналогичными библиотеками

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

Следующие возможности появились в Merlion 2.0:

Установка

Merlion состоит из двух подрепозиториев: merlion реализует основные функции библиотеки для интеллектуального анализа временных рядов, а ts_datasets предоставляет стандартизированные загрузчики данных для нескольких наборов данных временных рядов. Эти загрузчики загружают временные ряды как pandas.DataFrame s с сопутствующими метаданными.

Вы можете установить merlion из PyPI, выполнив pip install salesforce-merlion. Вы также можете установить из исходного кода, клонировав этот репозиторий и выполнив pip install Merlion/, или pip install -e Merlion/ для установки в режиме редактирования. Вы можете установить дополнительные зависимости через pip install salesforce-merlion[all] или, при установке из исходного кода, выполнив pip install "Merlion/[all]". В отдельности дополнительные зависимости включают dashboard для графической панели управления, spark для распределенного вычислительного бэкенда с PySpark и deep-learning для всех моделей глубокого обучения.

Чтобы установить пакет загрузки данных ts_datasets, клонируйте этот репозиторий и выполните pip install -e Merlion/ts_datasets/. Этот пакет необходимо устанавливать в режиме редактирования (то есть с флагом -e), если вы не хотите вручную указывать корневой каталог каждого набора данных при инициализации его загрузчика.

Обратите внимание на следующие внешние зависимости:

  1. Некоторые из наших моделей прогнозирования зависят от OpenMP. Если вы используете conda, пожалуйста, выполните conda install -c conda-forge lightgbm перед установкой нашего пакета. Это гарантирует, что OpenMP будет настроен для работы с пакетом lightgbm (одной из наших зависимостей) в вашем окружении conda. Если вы используете Mac, установите Homebrew и выполните brew install libomp, чтобы библиотека OpenMP была доступна для модели.

  2. Некоторые из наших моделей обнаружения аномалий зависят от Java Development Kit (JDK). Для Ubuntu выполните sudo apt-get install openjdk-11-jdk. Для Mac OS установите Homebrew и выполните brew tap adoptopenjdk/openjdk && brew install --cask adoptopenjdk11. Также убедитесь, что java доступен в вашем PATH и установлена переменная окружения JAVA_HOME.

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

Примеры кода и введение в Merlion см. в Jupyter-ноутбуках в examples и в интерактивном руководстве здесь. Подробную документацию по API (включая примеры кода) можно найти здесь. В техническом отчете описана общая архитектура Merlion и представлены экспериментальные результаты по обнаружению аномалий и прогнозированию как одномерных, так и многомерных временных рядов.

Начало работы

Самый простой способ начать работу — использовать веб-интерфейс панели управления. Эта панель позволяет быстро экспериментировать с множеством моделей на ваших собственных наборах данных. Для этого установите Merlion с дополнительной зависимостью dashboard (т.е. pip install salesforce-merlion[dashboard]) и выполните python -m merlion.dashboard из командной строки. Вы можете просмотреть панель по адресу http://localhost:8050. Ниже приведены скриншоты панели для обнаружения аномалий и прогнозирования.

Панель обнаружения аномалий

Панель прогнозирования

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

Обнаружение аномалий

Здесь показан код, воспроизводящий результаты панели обнаружения аномалий, приведенной выше. Начнем с импорта класса TimeSeries из Merlion и загрузчика данных для Numenta Anomaly Benchmark NAB. Затем мы можем разделить конкретный временной ряд из этого набора данных на обучающую и тестовую выборки.

root@kitploit:~
from merlion.utils import TimeSeries
from ts_datasets.anomaly import NAB

# Data loader returns pandas DataFrames, which we convert to Merlion TimeSeries
time_series, metadata = NAB(subset="realKnownCause")[3]
train_data = TimeSeries.from_pd(time_series[metadata.trainval])
test_data = TimeSeries.from_pd(time_series[~metadata.trainval])
test_labels = TimeSeries.from_pd(metadata.anomaly[~metadata.trainval])

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

root@kitploit:~
from merlion.models.defaults import DefaultDetectorConfig, DefaultDetector
model = DefaultDetector(DefaultDetectorConfig())
model.train(train_data=train_data)
test_pred = model.get_anomaly_label(time_series=test_data)

Далее визуализируем прогнозы модели.

root@kitploit:~
from merlion.plot import plot_anoms
import matplotlib.pyplot as plt
fig, ax = model.plot_anomaly(time_series=test_data)
plot_anoms(ax=ax, anomaly_labels=test_labels)
plt.show()

График аномалий

Наконец, мы можем количественно оценить модель. Точность и полнота определяются тем, что модель выдала 3 сигнала тревоги: 2 истинно положительных, 1 ложноотрицательный и 1 ложноположительный. Мы также оцениваем среднее время, за которое модель обнаружила каждую аномалию, которую она правильно определила.

root@kitploit:~
from merlion.evaluate.anomaly import TSADMetric
p = TSADMetric.Precision.value(ground_truth=test_labels, predict=test_pred)
r = TSADMetric.Recall.value(ground_truth=test_labels, predict=test_pred)
f1 = TSADMetric.F1.value(ground_truth=test_labels, predict=test_pred)
mttd = TSADMetric.MeanTimeToDetect.value(ground_truth=test_labels, predict=test_pred)
print(f"Precision: {p:.4f}, Recall: {r:.4f}, F1: {f1:.4f}\n"
      f"Mean Time To Detect: {mttd}")
root@kitploit:~
Precision: 0.6667, Recall: 0.6667, F1: 0.6667
Mean Time To Detect: 1 days 10:22:30

Прогнозирование

Здесь показан код, воспроизводящий результаты панели прогнозирования, приведенной выше. Начнем с импорта класса TimeSeries из Merlion и загрузчика данных для набора данных M4. Затем мы можем разделить конкретный временной ряд из этого набора данных на обучающую и тестовую выборки.

root@kitploit:~
from merlion.utils import TimeSeries
from ts_datasets.forecast import M4

# Data loader returns pandas DataFrames, which we convert to Merlion TimeSeries
time_series, metadata = M4(subset="Hourly")[0]
train_data = TimeSeries.from_pd(time_series[metadata.trainval])
test_data = TimeSeries.from_pd(time_series[~metadata.trainval])

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

root@kitploit:~
from merlion.models.defaults import DefaultForecasterConfig, DefaultForecaster
model = DefaultForecaster(DefaultForecasterConfig())
model.train(train_data=train_data)
test_pred, test_err = model.forecast(time_stamps=test_data.time_stamps)

Далее визуализируем прогнозы модели.

root@kitploit:~
import matplotlib.pyplot as plt
fig, ax = model.plot_forecast(time_series=test_data, plot_forecast_uncertainty=True)
plt.show()

График прогноза

Наконец, мы количественно оцениваем модель. sMAPE измеряет ошибку прогноза по шкале от 0 до 100 (чем меньше, тем лучше), а MSIS оценивает качество 95% доверительного интервала по шкале от 0 до 100 (чем меньше, тем лучше).

root@kitploit:~
# Evaluate the model's predictions quantitatively
from scipy.stats import norm
from merlion.evaluate.forecast import ForecastMetric

# Compute the sMAPE of the predictions (0 to 100, smaller is better)
smape = ForecastMetric.sMAPE.value(ground_truth=test_data, predict=test_pred)

# Compute the MSIS of the model's 95% confidence interval (0 to 100, smaller is better)
lb = TimeSeries.from_pd(test_pred.to_pd() + norm.ppf(0.025) * test_err.to_pd().values)
ub = TimeSeries.from_pd(test_pred.to_pd() + norm.ppf(0.975) * test_err.to_pd().values)
msis = ForecastMetric.MSIS.value(ground_truth=test_data, predict=test_pred,
                                 insample=train_data, lb=lb, ub=ub)
print(f"sMAPE: {smape:.4f}, MSIS: {msis:.4f}")
root@kitploit:~
sMAPE: 4.1944, MSIS: 18.9331

Оценка и бенчмаркинг

Одна из ключевых особенностей Merlion — конвейер оценки, который имитирует «живое» развертывание модели на исторических данных. Это позволяет сравнивать модели на соответствующих им наборах данных, в условиях, которые могут возникнуть в производственной среде. Наш конвейер оценки работает следующим образом:

  1. Обучите начальную модель на недавних исторических обучающих данных (обозначенных как обучающая выборка временного ряда).
  2. Через регулярные промежутки времени (например, раз в день) полностью переобучайте модель на самых свежих данных. Это может быть либо вся история временного ряда, либо более ограниченное окно (например, 4 недели).
  3. Получите прогнозы модели (оценки аномалий или прогнозируемые значения) для значений временного ряда, которые появляются между переобучениями. Вы можете настроить способ выполнения: пакетно (прогнозирование всех значений сразу), потоково (обновление внутреннего состояния модели после каждой точки данных без полного переобучения) или с какой-либо промежуточной частотой.
  4. Сравните прогнозы модели с эталонными данными (размеченными аномалиями для обнаружения аномалий или фактическими значениями временного ряда для прогнозирования) и укажите количественные метрики оценки.

Мы предоставляем скрипты, которые позволяют использовать этот конвейер для оценки произвольных моделей на произвольных наборах данных. Например, выполнение

root@kitploit:~
python benchmark_anomaly.py --dataset NAB_realAWSCloudwatch --model IsolationForest --retrain_freq 1d

выполнит оценку качества обнаружения аномалий модели IsolationForest (переобучаемой раз в день) на подмножестве "realAWSCloudwatch" набора данных NAB. Аналогично, выполнение

root@kitploit:~
python benchmark_forecast.py --dataset M4_Hourly --model ETS

выполнит оценку пакетного прогнозирования (то есть без переобучения) модели ETS на подмножестве "Hourly" набора данных M4. Результаты выполнения этих скриптов можно найти в разделе Experiments технического отчета.

Технический отчет и цитирование Merlion

Более подробную информацию можно найти в нашем техническом отчете: https://arxiv.org/abs/2109.09265

Если вы используете Merlion в своих исследованиях или приложениях, пожалуйста, цитируйте его с помощью этого BibTeX:

root@kitploit:~
@article{bhatnagar2021merlion,
      title={Merlion: A Machine Learning Library for Time Series},
      author={Aadyot Bhatnagar and Paul Kassianik and Chenghao Liu and Tian Lan and Wenzhuo Yang
              and Rowan Cassius and Doyen Sahoo and Devansh Arpit and Sri Subramanian and Gerald Woo
              and Amrita Saha and Arun Kumar Jagota and Gokulakrishnan Gopalakrishnan and Manpreet Singh
              and K C Krithika and Sukumar Maddineni and Daeki Cho and Bo Zong and Yingbo Zhou
              and Caiming Xiong and Silvio Savarese and Steven Hoi and Huan Wang},
      year={2021},
      eprint={2109.09265},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

Планы

Мы стремимся использовать моделирование временных рядов с GPU для дальнейшего повышения скорости и пропускной способности Merlion. Оставайтесь с нами ...

Скачать инструмент
MerlionProphetAlibi DetectKatsdartsstatsmodelsnixtlaGluonTSRRCFSTUMPYGreykitepmdarima
Прогнозирование одномерных рядов✅✅✅✅✅✅✅✅✅
Прогнозирование многомерных рядов✅✅✅✅✅✅
Обнаружение аномалий в одномерных рядах✅✅✅✅✅✅✅✅✅
Обнаружение аномалий в многомерных рядах✅✅✅✅✅✅
Предобработка✅✅✅✅✅✅✅✅
Постобработка✅✅
AutoML✅✅✅
Ансамбли✅✅✅✅
Бенчмаркинг✅✅✅✅✅
Визуализация✅✅✅✅✅
MerlionProphetAlibi DetectKatsdartsstatsmodelsnixtlaGluonTSRRCFSTUMPYGreykitepmdarima
Экзогенные регрессоры✅✅✅✅✅✅
Обнаружение точек изменения✅✅✅✅✅
Интерактивный визуальный интерфейс✅
Распределенный бэкенд✅✅