STUMPY: Ваш микроскоп для анализа временных рядов

Представьте, что у вас есть длинный временной ряд — например, показания датчиков оборудования, биржевые котировки или медицинские измерения. Как быстро найти в них повторяющиеся паттерны, аномалии или точки изменения поведения? Именно для таких задач создана библиотека STUMPY.
Что такое матричный профиль?
STUMPY вычисляет так называемый матричный профиль — компактное представление временного ряда, где для каждого участка данных (подпоследовательности) указывается его ближайший "сосед". Это как если бы для каждого кадра в фильме вы автоматически находили наиболее похожий кадр из всего видео.

На практике это позволяет решать множество задач:
- Обнаружение повторяющихся паттернов (мотивов)
- Выявление аномалий и необычных участков
- Сегментация временных рядов
- Анализ потоковых данных в реальном времени
- Поиск цепочек временных зависимостей
Почему стоит попробовать STUMPY?
1. Простота использования
Установка — одна команда:
conda install -c conda-forge stumpy
Базовый анализ за несколько строк кода:
import stumpy
import numpy as np
ts = np.random.rand(10000) # Ваши данные
window_size = 50 # Длина искомых паттернов
matrix_profile = stumpy.stump(ts, m=window_size)
2. Масштабируемость
STUMPY поддерживает:
- Распределенные вычисления через Dask
- GPU-ускорение для обработки больших объемов данных
- Многомерные временные ряды
Пример работы с GPU:
from numba import cuda
devices = [device.id for device in cuda.list_devices()]
gpu_profile = stumpy.gpu_stump(ts, m=window_size, device_id=devices)
3. Производительность
Библиотека оптимизирована с помощью Numba и показывает впечатляющие результаты даже на больших объемах данных. По тестам авторов, STUMPY обрабатывает:
- 1 млн точек за ~2.5 минуты на 2 GPU
- 100 млн точек за ~16 часов на 16 GPU

Где это применимо?
- Промышленность: Мониторинг оборудования, прогнозирование отказов
- Финансы: Обнаружение аномальных сделок, поиск рыночных паттернов
- Медицина: Анализ ЭКГ, выявление отклонений в показателях
- IoT: Обработка потоковых данных с датчиков
Под капотом
STUMPY построена на трех китах:
- NumPy — работа с массивами
- Numba — JIT-компиляция для скорости
- SciPy — научные вычисления
Библиотека активно развивается, имеет подробную документацию и поддерживается сообществом.
Вывод: кому подойдет STUMPY?
Если вы работаете с временными рядами и хотите:
- Быстро находить скрытые паттерны
- Обнаруживать аномалии без сложных моделей
- Обрабатывать большие объемы данных
— STUMPY станет вашим надежным инструментом. Попробуйте на своих данных и посмотрите, какие инсайты скрываются в ваших временных рядах!
Ссылки:
