Прогнозирование цен с помощью машинного обучения

Полный гайд по прогнозированию цен: сбор данных, фичи, модели ML и внедрение. Научитесь предсказывать рынок и избегать типичных граблей!

Дата публикации: 04:23:43


Содержание

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

Прогнозирование цен – одна из самых востребованных задач в экономике, энергетике, недвижимости, финансовом секторе и многих других областях․ Традиционные статистические подходы (ARIMA, экспоненциальное сглаживание) дают хорошие результаты при небольших объёмах данных, однако в современных условиях объём информации растёт экспоненциально, а взаимосвязи между переменными становятся всё более нелинейными․

Машинное обучение (ML) предоставляет инструменты, позволяющие автоматически извлекать сложные зависимости из больших наборов данных, учитывать сезонность, внешние факторы (геополитика, макроэкономика) и тем самым повышать точность прогнозов․

Постановка задачи

В статье рассматриваются несколько типовых сценариев предсказания цен:

  • Прогнозирование цен на электроэнергию в рамках совместного проекта компаний Росатом РЭИН и Цифрум;
  • Прогноз индекса потребительских цен (CPI) для оценки инфляционных рисков;
  • Оценка цен на жильё в округе Кинг, штат Вашингтон с использованием географически взвешенной регрессии (ГВР);
  • Прогноз цен акций с помощью RNN и LSTM;
  • Прогноз цен на нефть с учётом спроса, предложения и геополитических факторов;
  • Прогноз тарифов такси в Нью‑Йорке с помощью ML․NET․

Общая цель – построить универсальную методологию, которую можно адаптировать под любой из перечисленных кейсов․

Сбор и подготовка данных

Источники данных

Для успешного предсказания цены необходимо собрать как минимум два типа данных:

  1. Внутренние (операционные) данные – исторические цены, объёмы продаж, нагрузка сети, погодные условия, технические параметры․
  2. Внешние (факторы влияния) – макроэкономические индикаторы, цены на сырьё, новости, геополитические события, демографические показатели․

Методы восполнения недостающих данных

В реальных проектах часто встречаются пропуски․ Ниже перечислены проверенные подходы:

  • Простое заполнение (mean/median, forward‑fill, backward‑fill);
  • Моделирование пропусков – обучение регрессионных моделей (Random Forest, XGBoost) для предсказания отсутствующего значения;
  • Кросс‑валидация с несколькими источниками – объединение открытых наборов (например, OpenWeather, World Bank) и покупка специализированных данных у провайдеров․

Пример кода (Python) для заполнения пропусков с помощью XGBoost

import pandas as pd
import xgboost as xgb

df = pd․read_csv('energy_prices․csv')
missing_mask = df['price']․isna
X_train = df․loc[~missing_mask]․drop('price', axis=1)
y_train = df․loc[~missing_mask, 'price']

model = xgb․XGBRegressor
model․fit(X_train, y_train)

X_pred = df․loc[missing_mask]․drop('price', axis=1)
df․loc[missing_mask, 'price'] = model․predict(X_pred)

Инженерия признаков

Временные признаки

  • Дата и время (год, месяц, день недели, час);
  • Сезонные индексы (день года, номер недели);
  • Лаги (price_t‑1, price_t‑2 …) и скользящие средние;
  • Энергетические индексы (нагрузка сети, температура наружного воздуха)․

Пространственные признаки

Для задач недвижимости и электроэнергетики важны координаты, расстояния до объектов инфраструктуры, демографические показатели района․ Для их учёта часто используют географически взвешенную регрессию (ГВР)․

Категориальные признаки

Кодировка «one‑hot», target encoding, hashing trick – в зависимости от количества уникальных значений․

Модели машинного обучения

Краткий обзор подходов

Тип модели Применимость Плюсы Минусы
Линейная регрессия Базовый уровень, быстрый прототип Интерпретируемость Не учитывает нелинейности
Географически взвешенная регрессия (ГВР) Цены недвижимости, электроэнергетика Учет пространственной автокорреляции Требует координатных данных
ARIMA / SARIMA Краткосрочные временные ряды Простота и статистическая обоснованность Сложно масштабировать на большие наборы
FB Prophet Бизнес‑ориентированные прогнозы, сезонные эффекты Автоматическое обнаружение праздников Ограниченные возможности нелинейных взаимодействий
Random Forest / Gradient Boosting (XGBoost, LightGBM) Разнообразные задачи, табличные данные Высокая точность, работа с пропусками Менее интерпретируемы, требуют гиперпараметрической настройки
RNN, LSTM, GRU Долгосрочные зависимости в временных рядах (цены акций, нефти) Умение «запоминать» историю Требуют больших объёмов данных и вычислительных ресурсов
ML․NET Интеграция в ․NET‑экосистему (пример – тарифы такси в Нью‑Йорке) Лёгкая деплоймент в Windows‑среде Меньший набор готовых алгоритмов по сравнению с Python‑стеком

Пример построения модели LSTM для цены нефти

import numpy as np
import pandas as pd
from tensorflow․keras․models import Sequential
from tensorflow․keras․layers import LSTM, Dense
from sklearn․preprocessing import MinMaxScaler

df = pd․read_csv('oil_price․csv', parse_dates=['date'])
df․set_index('date', inplace=True)

scaler = MinMaxScaler
scaled = scaler․fit_transform(df[['price']])

def create_sequences(data, window=30):
 X, y = [], []
 for i in range(len(data)-window):
 X․append(data[i:i+window])
 y․append(data[i+window])
 return np․array(X), np․array(y)

X, y = create_sequences(scaled, window=30)

split = int(0․8*len(X))
X_train, X_val = X[:split], X[split:]
y_train, y_val = y[:split], y[split:]

model = Sequential([
 LSTM(64, activation='tanh', input_shape=(X_train․shape[1], 1)),
 Dense(1)
])model․compile(optimizer='adam', loss='mse')
model․fit(X_train, y_train, epochs=30, batch_size=32, validation_data=(X_val, y_val))

Сравнительная таблица точности (примерные метрики)

Задача Метрика (RMSE) Лучшая модель
Электроэнергия (часовой интервал) 0․85 $/MWh LightGBM + lag‑features
CPI (мес․) 0․42 % FB Prophet + экономические индексы
Недвижимость (Кинг, WA) 15 000 $ ГВР + XGBoost
Акции (дневные цены) 1․12 $ LSTM (2‑слой)
Нефть (дневные цены) 1․35 $ LSTM + внешние факторы
Тариф такси (NYC) 0․68 $ ML․NET + Random Forest

Оценка качества моделей

Для объективного сравнения используют несколько метрик:

  • RMSE (Root Mean Squared Error) – чувствителен к большим ошибкам;
  • MAE (Mean Absolute Error) – более устойчив к выбросам;
  • MAPE (Mean Absolute Percentage Error) – удобен для сравнения разных масштабов;
  • R² (коэффициент детерминации) – показывает долю объяснённой дисперсии․

Важно проводить кросс‑валидацию во времени (time‑series split), а не обычный K‑fold, чтобы не «подглядывать» в будущее․

Внедрение и эксплуатация

Контейнеризация

Для масштабируемого продакшн‑развёртывания рекомендуется упаковать модель в Docker‑контейнер:

FROM python:3․11-slim
WORKDIR /app
COPY requirements․txt ․
RUN pip install -r requirements․txt
COPY ․ ․
CMD ["uvicorn", "api:app", "--host", "0․0․0․0", "--port", "8000"]

Мониторинг и переобучение

  • Отслеживание drift входных данных (например, изменение распределения спроса на электроэнергию);
  • Регулярный re‑training (ежемесячно или при достижении порога деградации метрик);
  • Логирование предсказаний и фактических значений для последующего анализа․

Интеграция в бизнес‑процессы

Для энергетических компаний (Росатом РЭИН, Цифрум) модель может подавать сигналы в систему диспетчерского управления, позволяя заранее планировать закупку электроэнергии или регулировать генерацию․

Типичные проблемы и способы их решения

Недостаток исторических данных

Решения: синтетическое увеличение данных (bootstrapping), использование трансферного обучения (pre‑trained модели на аналогичных рынках)․

Сезонные разрывы и аномалии

Применять детекторы аномалий (Isolation Forest, Prophet с outlier detection) и отдельные модели для «пиковых» периодов (праздники, экстремальная погода)․

Корреляция между признаками (multicollinearity)

Уменьшать размерность с помощью PCA или использовать регуляризацию (Lasso, Ridge) в линейных моделях․

Объяснимость модели

Для регрессионных и деревьевидных моделей удобно применять SHAP‑значения; для нейронных сетей – Integrated Gradients․

Прогнозирование цен с помощью машинного обучения – это мощный инструмент, позволяющий повысить эффективность планирования в самых разных отраслях: от энергетики и финансов до транспорта и недвижимости․ Ключевые шаги включают:

  1. Тщательный сбор и очистку данных, включая восполнение пропусков;
  2. Инженерию признаков, учитывающую временные, пространственные и категориальные аспекты;
  3. Выбор и настройку моделей (от простых регрессий до глубоких LSTM‑сетей);
  4. Объективную оценку качества с помощью нескольких метрик и временной кросс‑валидации;
  5. Надёжное внедрение в продакшн с мониторингом дрейфа и плановым переобучением․

С учётом перечисленных рекомендаций любой специалист сможет построить точную и надёжную систему предсказания цен, адаптировать её под конкретные бизнес‑задачи и обеспечить стабильность работы организации в условиях быстро меняющегося рынка․


Автор: ChatGPT, 2026 год․