Временные ряды – это последовательности наблюдений, упорядоченных во времени. Примеры: цены акций, курс валют, потребление электроэнергии, уровень спроса в розничной торговле, климатические показатели и т.д. Задача предсказания временных рядов (forecasting) состоит в том, чтобы построить модель, способную оценить будущие значения на основе исторических данных.
Почему традиционные методы часто недостаточны?
- Линейность. Модели типа ARIMA, SARIMA, GARCH предполагают линейные зависимости. Реальные процессы часто нелинейны и содержат сложные взаимодействия.
- Сезонность и тренд. При наличии нескольких сезонных циклов (дневных, недельных, годовых) традиционные модели требуют ручной настройки параметров.
- Многомерность. В задачах «мультивариантного» прогнозирования (например, совместный прогноз спроса и цены) классические методы быстро теряют эффективность.
Именно здесь в игру вступают искусственные нейронные сети (ИНС), способные автоматически извлекать сложные нелинейные зависимости из данных.
Краткий обзор нейронных архитектур, применяемых к временным рядам
Полносвязные сети (MLP)
Самый простой вариант – многослойный перцептрон. Входом служит фиксированный «окно» из последних n наблюдений, а выходом – прогноз на один или несколько шагов вперёд. Преимущества: простота реализации, небольшое количество гиперпараметров. Недостатки: отсутствие памяти о более долгих зависимостях.
Свёрточные нейронные сети (CNN)
Свёрточные фильтры могут захватывать локальные шаблоны (например, резкие скачки цены) и эффективно работать с большими окнами без экспоненциального роста параметров. Комбинация Conv1D + GlobalAveragePooling часто используется в финансовом прогнозировании.
Рекуррентные нейронные сети (RNN)
Классические RNN передают скрытое состояние от шага к шагу, что позволяет учитывать порядок наблюдений. Однако они страдают от исчезающего/взрывающегося градиента.
LSTM и GRU
Механизмы длинной краткосрочной памяти (Long Short‑Term Memory, LSTM) и Gated Recurrent Unit (GRU) решают проблему градиентов, используя «ячейки» и «ворота». LSTM‑модели стали де‑факто стандартом для большинства задач прогнозирования временных рядов, включая:
- Курс валют (пример – курс USD/RUB за 2019‑2022 гг.)
- Потребление электроэнергии в реальном времени
- Спрос в розничной торговле
Трансформеры
Недавно в прогнозировании временных рядов стали применяться модели на основе трансформеров (например, Temporal Fusion Transformer). Они позволяют учитывать как длительные зависимости, так и внешние регрессоры (погода, праздники) без рекуррентных связей.
Подготовка данных
Сбор и очистка
- Получите данные (API банка, CSV‑файлы, базы данных).
- Проверьте на пропуски и выбросы. Для пропусков часто используют
interpolateили заполнение средним. - Преобразуйте временную метку в
datetimeи установите её в качестве индекса.
Нормализация
Нейронные сети чувствительны к масштабу входов. Чаще всего используют Min‑Max scaling или Standard scaling:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler
scaled = scaler.fit_transform(df['close'].values.reshape(-1,1))
Формирование обучающих последовательностей
Для RNN‑моделей нужен набор «вход‑выход»: X[t‑look_back : t] → y[t]. В Keras удобно использовать TimeseriesGenerator:
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator
look_back = 30 # 30 дней
batch_size = 32
generator = TimeseriesGenerator(
data=scaled,
targets=scaled,
length=look_back,
batch_size=batch_size
) Построение модели LSTM в Keras
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
model = Sequential([
LSTM(64, activation='tanh', input_shape=(look_back, 1), return_sequences=False),
Dropout(0.2),
Dense(32, activation='relu'),
Dense(1) # предсказываем одно значение
])
model.compile(optimizer='adam', loss='mse')
model.summary
Обучаем модель:
history = model.fit(
generator,
epochs=50,
validation_split=0.1,
verbose=2
)
Оценка качества прогноза
- RMSE (Root Mean Squared Error) – чувствителен к большим ошибкам.
- MAE (Mean Absolute Error) – более интерпретируемый.
- MAPE (Mean Absolute Percentage Error) – удобен для финансовых рядов.
import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error
pred = model.predict(test_generator)
pred_rescaled = scaler.inverse_transform(pred)
true_rescaled = scaler.inverse_transform(test_y)
rmse = np.sqrt(mean_squared_error(true_rescaled, pred_rescaled))
mae = mean_absolute_error(true_rescaled, pred_rescaled)
print(f'RMSE: {rmse:.4f}, MAE: {mae:.4f}')
Практический пример: прогноз курса USD/RUB
- Собрали данные за период 1 февраля 2019 – 26 февраля 2022 (ежедневные цены закрытия).
- Построили скользящее окно в 30 дней, предсказываем цену на следующий день.
- Обучили LSTM‑модель с 64 скрытыми нейронами, dropout = 0.2, 50 эпох.
- Получили RMSE ≈ 0.018 USD (≈ 0.2 % от цены), что сопоставимо с результатами, опубликованными в журнале «Молодой учёный».
График реальных и предсказанных значений:
# Пример кода для построения графика
import matplotlib.pyplot as plt
plt.figure(figsize=(12,5))
plt.plot(df.index[-len(true_rescaled):], true_rescaled, label='Факт')
plt.plot(df.index[-len(pred_rescaled):], pred_rescaled, label='Прогноз')
plt.title('Прогноз курса USD/RUB с использованием LSTM')
plt.xlabel('Дата')
plt.ylabel('Курс, USD')
plt.legend
plt.show
Часто встречающиеся проблемы и способы их решения
- Переобучение. Используйте dropout, раннюю остановку (
EarlyStopping) и кросс‑валидацию по времени. - Недостаток данных. Применяйте аугментацию (шум, сдвиги) или переходите к Transfer Learning с предобученными трансформерами.
- Сезонные скачки. Добавьте в модель внешние регрессоры (праздники, погоду) или используйте Seasonal Decomposition перед обучением.
- Выбор горизонта прогнозирования. Для многократного шага (h‑step) часто применяют «директо‑метод» (модель выдаёт сразу h значений) или «рекуррентный‑метод» (повторное использование предсказаний).
Перспективы развития
Тренд в 2024‑2025 годах – интеграция нейросетевых трансформеров и гибридных моделей (ARIMA + LSTM), а также использование объяснимого ИИ (SHAP, attention‑weights) для интерпретации влияния факторов на прогноз.
Нейронные сети, особенно LSTM и их более новые варианты (GRU, трансформеры), предоставляют мощный инструментарий для предсказания временных рядов. При правильной подготовке данных, выборе архитектуры и регуляризации они способны превзойти традиционные статистические модели, особенно в условиях нелинейных зависимостей, многомерности и сложных сезонных паттернов. Тем не менее, успех проекта зависит от качества данных, грамотного построения пайплайна и внимательного контроля переобучения.
Дата генерации статьи: 28 апреля 2026 г., 09:51:07 (UTC).