Itinai.com it company office background blured chaos 50 v 32924e8d 918f 458e ae6f 0f5d897c5b7b 1

Как избавиться от ошибок прогноза: пайплайн TimeCopilot и AI

Itinai.com it company office background blured chaos 50 v 32924e8d 918f 458e ae6f 0f5d897c5b7b 1

Что происходит в коде?

Приведённый фрагмент — это простая, но довольно типичная подготовка данных для анализа временных рядов. Мы импортируем нужные библиотеки, настраиваем вывод, читаем CSV‑файл с данными о пассажирах, добавляем искусственный ряд и «сорём» в нём несколько аномалий.

  • numpy, pandas, matplotlib – стандартный набор для числовой обработки и визуализации.
  • scipy подключён, но в примере не используется – оставлено на случай дальнейшего анализа.
  • torch проверяется лишь для определения наличия GPU; он нам сейчас не нужен.
  • Данные загружаются из публичного CSV‑файла.
  • Создаётся синтетический ряд, в который вручную встраиваются аномалии (значения в 2.2‑раз больше нормы).
  • Все серии объединяются в один «панельный» дата‑фрейм panel, готовый к дальнейшему исследованию.

Какие задачи решает такой набор данных?

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

  • Нужно быстро понять, «что пошло не так» в конкретный период.
  • Требуется автоматизированный способ помечать аномалии без ручного кликания по графикам.
  • Необходимо сравнивать несколько объектов (например, разные региональные подразделения) в одном наборе.

Практический план действий

Если вы попали в схожую ситуацию, следуйте этому чек‑листу.

  • Шаг 1. Подготовьте данные. Убедитесь, что столбцы с датой имеют тип datetime, а целевая переменная — числовую. Пример выше уже делает parse_dates=["ds"] и приводит unique_id к строковому типу.
  • Шаг 2. Визуализируйте. Постройте простую линию plt.plot(df["ds"], df["y"]). Если виден сезонный «колеблющийся» паттерн, значит дальше придётся учитывать его.
  • Шаг 3. Выберите метод детекции. Есть три уровня сложности:
    • Базовый порог (например, 3‑sigma от скользящего среднего).
    • Классические статистические модели: Prophet, ARIMA.
    • Машинное обучение: Isolation Forest, LightGBM с функцией “anomaly detection”, или даже простейший LSTM‑автокодировщик.
  • Шаг 4. Обучите и проверьте. Разделите данные на тренировочную часть (например, первые 80 %) и тестовую (оставшиеся 20 %). Оцените метрики precision, recall, F1 для найденных аномалий.
  • Шаг 5. Автоматизируйте. Запишите пайплайн в виде скрипта или Jupyter‑ноутбука, добавьте планировщик задач (cron, Airflow) — и ваши «чудо‑детекторы» будут работать без вашего вмешательства.

Мини‑пример: обнаружение выбросов через скользящее среднее

Для быстрого старта можно обойтись без внешних библиотек.

  • Вычисляем скользящее среднее и стандартное отклонение за 12 месячий период (в примере уже заданы H = 12 и FREQ = "MS").
  • Помечаем точки, выходящие за диапазон mean ± 3*std.

Код выглядит так:

df['rolling_mean'] = df['y'].rolling(window=H).mean()
df['rolling_std'] = df['y'].rolling(window=H).std()
df['anomaly'] = ((df['y'] - df['rolling_mean']).abs() > 3 * df['rolling_std'])
print(df[df['anomaly']])

Он найдёт те же индексы 30, 75, 120, где мы вручную умножили значения на 2.2.

Куда дальше?

После того как базовый скрипт заработал, можно улучшать:

  • Добавить сезонную декомпозицию (statsmodels.seasonal_decompose) — тогда аномалии будут искать только в остатке.
  • Перейти к моделям, умеющим предсказывать будущее и оценивать отклонения от прогноза (Prophet, NeuralForecast).
  • Интегрировать вывод в дашборд (Grafana, Streamlit) — чтобы бизнес‑пользователи видели тревоги в реальном времени.

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн