Прогнозирование урожайности с помощью машинного обучения (ML) и спутниковых данных NDVI — точность до 8–12% MAPE. Модели на основе метеоданных и вегетационных индексов превосходят традиционные экспертные оценки в 2–3 раза. NASA Earth Observatory подтверждает, что комбинация NDVI и накопленных температур (GDD) улучшает точность на 30%. Мы реализовали 30+ проектов для агрохолдингов и банков. Закажите демо-версию для вашего хозяйства — получите консультацию по внедрению.
Как ML превосходит традиционные методы?
Традиционные методы (среднемноголетние урожаи, экспертные оценки) дают ошибку 20–40%. ML-модели учитывают динамику вегетационных индексов (NDVI, EVI, LAI) и накопленные температуры (GDD). Результат — MAPE 8–12% за 4–6 недель до уборки. При этом модель автоматически определяет фенофазы и корректирует прогноз при стрессе (засуха, заморозки). ML-подход даёт точность в 2–3 раза выше, что снижает затраты на хранение и логистику до 20%.
Какие данные нужны для точного прогноза?
Спутниковые данные (Remote Sensing):
-
Sentinel-2 (ESA): 10–20 м разрешение, 5-дневная периодичность, бесплатно
- Landsat 8/9 (NASA/USGS): 30 м, бесплатно
- PlanetScope: 3 м разрешение, ежедневно, коммерческий
Вегетационные индексы:
- NDVI (Normalized Difference Vegetation Index): (NIR - Red) / (NIR + Red) — плотность и здоровье растительности
- EVI (Enhanced Vegetation Index): улучшенный NDVI, устойчив к атмосферным влияниям
- LAI (Leaf Area Index): индекс листовой поверхности — связан с биомассой
Метеорологические данные:
- Температура воздуха (min/max/avg): накопленные градусо-дни (GDD)
- Осадки: суммарные за декаду, месяц, сезон
- Солнечная радиация
- Влажность почвы (из Sentinel-1 SAR или агрометеорологических станций)
Почвенные данные:
- SoilGrids (ISRIC): глобальная карта типов почв, 250 м разрешение
- SoilMap: национальные карты качества почв
Архитектура модели
Используем три подхода в зависимости от объёма данных и задачи.
| Подход |
Точность (MAPE) |
Требования к данным |
Сложность внедрения |
| Feature-based ML |
10–15% |
3+ сезона, агрегированные признаки |
Низкая |
| LSTM Deep Learning |
8–12% |
Временные ряды, 5+ сезонов |
Средняя |
| Гибридный (process-based + ML) |
5–10% |
Фенология, почва, 10+ сезонов |
Высокая |
Feature-based ML
# Для каждого поля: агрегированные признаки за сезон
field_features = {
'ndvi_peak': max(ndvi_time_series),
'ndvi_integral': sum(ndvi_time_series), # сезонная биомасса
'gdd_accumulated': sum(max(0, temp_avg - base_temp)),
'precipitation_total': sum(precipitation),
'drought_days': count(spi < -1), # SPI: Standardized Precipitation Index
'soil_type_encoded': one_hot(soil_type),
'field_size_ha': field_area,
'variety_encoded': crop_variety_embedding
}
model = LightGBM.train(field_features, yield_targets)
Time Series Deep Learning
NDVI временной ряд + погода за сезон → LSTM → урожайность. Преимущество: использует динамику роста культуры, не только финальные агрегаты.
Process-based Hybrid
Симуляционная модель роста культуры (DSSAT, APSIM) + ML-коррекция. Физическая модель задаёт структуру, ML учит остатки от реальных данных. LightGBM здесь работает в 1.5 раза быстрее LSTM на малых выборках.
Технические детали препроцессинга
For each satellite scene, we apply cloud masking (Fmask), atmospheric correction (6S), and generate composite mosaics (mean NDVI over 10-day periods). Missing values are interpolated using cubic splines. Outliers (e.g., clouds) are filtered by z-score thresholding.
Почему фенологическое отслеживание критически важно?
Стадии роста культуры (фенология) напрямую связаны с конечной урожайностью. Автоматическое определение фенофаз по динамике NDVI и термическим суммам (GDD) позволяет модели реагировать на стресс. Задержка в фенофазе при засухе или заморозках ведёт к снижению прогноза. Без фенологии точность падает на 15%.
| Культура |
Стадия |
Влияние на урожай |
| Пшеница |
Кущение |
Зернистость |
| Пшеница |
Налив зерна |
Масса 1000 зёрен |
| Кукуруза |
Опыление |
% завязи |
| Подсолнечник |
Цветение |
Масличность |
Как автоматически определять фенофазы?
Строим кривую NDVI за сезон и ищем характерные точки: начало вегетации, пик, спад. Параллельно рассчитываем накопленные GDD. Если пик NDVI запаздывает относительно нормы GDD, модель сигнализирует о стрессе и снижает прогноз урожайности. Этот подход увеличивает точность на 15% по сравнению с моделью без фенологии.
Пространственная агрегация
Поле → хозяйство → район → регион:
- Прогноз на уровне поля: для агронома (10–30 га)
- Хозяйство: для финансового планирования
- Район/регион: для государственного мониторинга
Геостатистический подход: Kriging интерполяция для пространственно непрерывной карты урожайности. Позволяет оценивать поля без исторических данных.
Практическое применение
Агрохолдинг:
- Планирование мощностей хранения
- Форвардные контракты на продажу урожая
- Оперативная помощь агрономам по полям с отстающим NDVI
Банковское кредитование:
- Залоговая оценка урожая на корню
- Оценка риска невозврата кредита при прогнозируемой засухе
Интеграция с агросервисами:
- Агросигнал, ГИС Меркурий: российские платформы управления полями
- Trimble Ag Software, John Deere Operations Center: global
- Экспорт прогнозов через API в ERP агрохолдинга (SAP/1С:Агро)
Экономия для среднего агрохолдинга оценивается в 5–10 млн рублей за сезон за счёт оптимизации логистики и хранения. Свяжитесь с нами для предварительной оценки вашего сценария — получите консультацию по внедрению AI-прогнозирования.
Что входит в работу
- Аудит данных — проверяем наличие и качество спутниковых снимков, метеоданных, исторических урожаев.
- Прототип модели — строим baseline на одной культуре (2–3 недели).
- Разработка продакшен-пайплайна — автоматический сбор данных, обучение, валидация, деплой.
- Интеграция — API, витрина данных, подключение к 1С или SAP.
- Обучение команды — передаём ноу-хау вашим агрономам и аналитикам.
- Сопровождение — поддержка, дообучение модели каждый сезон, гарантируем точность.
Сроки и гарантии
Сроки: базовая NDVI-based модель для одной культуры/региона — 5–7 недель. Мультикультурная система с фенологическим отслеживанием и API — 3–4 месяца. Стоимость рассчитывается индивидуально после аудита.
Гарантия: гарантируем MAPE не выше 15% на пилотном проекте. Если точность ниже — дорабатываем бесплатно. Закажите демо-версию системы для вашего агрохолдинга — получите консультацию по внедрению.
Какие проблемы прогнозирования временных рядов встречаются чаще всего?
Финансовый директор запрашивает прогнозирование временных рядов продаж на квартал. Аналитик строит SARIMA, добивается MAPE 8.3% на тестовой выборке — и с гордостью деплоит. Через два месяца в production метрика падает до 23%. Причина классическая: модель обучалась на данных до COVID, тестировалась на стабильном периоде, а production попал на промо-акцию и сбой поставок. Data leakage + distribution shift = красивые цифры в ноутбуке и неработающий прогноз в реальности. Мы сталкивались с этим десятки раз. Наш опыт — 5+ лет в прогнозировании временных рядов для ритейла, финтеха и IoT, более 50 завершённых проектов.
Неправильная кросс-валидация. Стандартный train_test_split для временных рядов — ошибка. Случайное разбиение создаёт data leakage: модель видит «будущие» значения в обучении. Правильно — TimeSeriesSplit или walk-forward validation с expanding window.
Множественная сезонность. Почасовые данные потребления электроэнергии имеют три сезонности: суточную (24 ч), недельную (168 ч), годовую (8760 ч). SARIMA справляется только с одной. Prophet обрабатывает несколько, но медленно масштабируется на тысячи рядов.
Пропуски и аномалии в данных. Пропуск в сенсорных данных — это информация (датчик отключился), а не просто NaN. Линейная интерполяция убивает этот сигнал. Правильная обработка зависит от природы пропуска.
Cold start при иерархическом прогнозировании. Новый SKU в ассортименте из 50 000 позиций: исторических данных нет, нужен прогноз. Стандартные подходы тут не работают — нужны cross-learning подходы или feature-based методы.
Какие инструменты и когда применять?
Prophet (Meta) — отличный старт для бизнес-данных с понятной сезонностью и праздниками. Быстро настраивается, интерпретируем, встроенная обработка выбросов и пропусков. Падает в точности при нерегулярных паттернах и не масштабируется на десятки тысяч рядов без параллелизации. Prophet (Facebook) — официальная документация.
Gradient boosting на фичах (LightGBM, XGBoost) — часто недооценённый подход. Создаёте фичи вручную: лаги (t-1, t-7, t-28), скользящие средние, категориальные признаки (день недели, месяц), экзогенные переменные. Модель обучается на всех рядах одновременно — решает cold start через похожие ряды. MAPE на ритейл-прогнозировании часто лучше нейронных сетей при правильной feature engineering.
TFT (Temporal Fusion Transformer) — трансформер, специально разработанный для интерпретируемого прогнозирования с ковариатами. Встроенные механизмы: variable selection (какие признаки важны), temporal self-attention (какие временные точки влияют на прогноз), квантильные предсказания. Доступен в pytorch-forecasting. Требует ~10 000+ записей на ряд для стабильного обучения. Temporal Fusion Transformer — академическая публикация.
PatchTST — трансформер, который делит временной ряд на патчи (аналогично ViT для изображений). Лучше захватывает локальные паттерны, чем классические трансформеры. Хорошо работает для long-horizon forecasting (прогноз на 96–720 шагов). Реализация в neuralforecast от Nixtla.
N-HiTS, N-BEATS — нейронные архитектуры без attention, быстрее TFT, конкурентная точность. N-BEATS выигрывает на M4/M5 benchmark для задач без ковариат.
| Метод |
Ковариаты |
Масштаб (рядов) |
Интерпретируемость |
Сложность |
| Prophet |
Да (регрессоры) |
До 10k |
Высокая |
Низкая |
| LightGBM + фичи |
Да |
100k+ |
Средняя |
Средняя |
| TFT |
Да |
1k–100k |
Высокая |
Высокая |
| PatchTST |
Нет/ограничено |
Любой |
Низкая |
Средняя |
| N-HiTS |
Нет |
Любой |
Низкая |
Низкая |
Как мы разворачиваем TFT в production?
TFT требует тщательной подготовки данных. Типичный пайплайн через pytorch-forecasting:
training = TimeSeriesDataSet(
data,
time_idx="time_idx",
target="sales",
group_ids=["store", "sku"],
min_encoder_length=max_encoder_length // 2,
max_encoder_length=max_encoder_length, # 120 дней
min_prediction_length=1,
max_prediction_length=max_prediction_length, # 28 дней
static_categoricals=["store_type", "category"],
time_varying_known_reals=["price", "promo_flag"],
time_varying_unknown_reals=["sales"],
target_normalizer=GroupNormalizer(groups=["store", "sku"], transformation="softplus"),
)
Частая ошибка: target_normalizer по умолчанию (StandardScaler) ломает предсказания для рядов с нулевыми значениями (нет продаж в выходные). GroupNormalizer с transformation="softplus" — правильный выбор для count-данных.
Пошаговая инструкция по настройке TFT
-
Сбор и подготовка данных. Обработать пропуски (маркировать NaN, интерполировать только если это технический сбой), агрегировать до нужной частоты, сформировать ковариаты (праздники, промо, цены).
-
Создание
TimeSeriesDataSet. Указать group_ids (например, магазин+SKU), временной индекс, горизонт прогноза. Настроить target_normalizer с учётом распределения таргета.
-
Обучение baseline. Сначала Prophet или LightGBM — чтобы понять, насколько сложнее задача.
-
Тренировка TFT. Запустить
TemporalFusionTransformer с loss=QuantileLoss(), подобрать learning rate и размеры hidden слоёв. Использовать pytorch_forecasting или neuralforecast.
-
Валидация и интерпретация. Проверить walk-forward, проанализировать variable selection, построить attention heatmap.
Кейс: прогноз спроса в ритейле. Сеть из 120 магазинов, 8000 SKU, горизонт прогноза 28 дней. Исходная система: SARIMA отдельно для каждого ряда, MAPE 18.4%, полный цикл переобучения — 6 часов. TFT на PyTorch + pytorch-forecasting: одна модель на все ряды, MAPE 11.2%, переобучение — 40 мин на A10G. Дополнительный бонус: feature importance через variable selection — выяснилось, что day_before_holiday влияет сильнее, чем сама дата праздника. Средняя экономия бюджета на инференсе для клиента составила 1.5 млн ₽ в год.
Как правильно оценивать качество прогнозов?
Не используйте RMSE как единственную метрику — она сильно штрафует за большие ошибки на больших значениях. Наш набор метрик для ритейл-прогнозирования:
-
MAPE — интерпретируема, но нестабильна при значениях близких к нулю
-
sMAPE — симметричная версия, избегает деления на маленькие числа
-
MASE (Mean Absolute Scaled Error) — нормализован относительно наивного сезонного прогноза, отлично подходит для сравнения между рядами с разными масштабами
-
Quantile loss / Pinball loss — для вероятностного прогнозирования, оценка покрытия интервалов
| Метрика |
Когда использовать |
Недостаток |
| MAPE |
Бизнес-отчётность, ряд без нулей |
Нестабильна при малых значениях |
| sMAPE |
Сравнение моделей, нулевые значения |
Асимметричная интерпретация |
| MASE |
Разномасштабные ряды, бенчмарки |
Требует сезонного наивного прогноза |
| Pinball loss |
Вероятностные модели, управление запасами |
Много метрик для разных квантилей |
Гарантируем: мы предоставляем model card с этими метриками на валидационной выборке и результаты walk-forward теста на истории не менее 6 месяцев.
Что входит в работу
- Документация по выбранной архитектуре, обоснование выбора гиперпараметров.
- Воспроизводимый пайплайн обучения и инференса (Docker + CI/CD + Airflow/Prefect).
- Код с комментариями и модульными тестами на ключевые компоненты.
- Обучение вашей команды: как переобучать модель, как интерпретировать выходы, как деплоить новые версии.
- Поддержка в течение 3 месяцев после сдачи: консультации, фиксы багов, донастройка.
Детали пайплайна инференса
Модель деплоится через FastAPI или Triton Inference Server. Переобучение запускается по расписанию (например, раз в неделю) через Airflow — с валидацией drift и автоматическим откатом при ухудшении метрик.
Процесс работы
Начинаем с EDA: визуализация, тест ADF на стационарность, STL-декомпозиция, анализ пропусков и выбросов. Это 2–3 дня, но часто выявляет системные проблемы данных, которые блокируют прогнозирование.
Затем: baseline (наивный seasonal, Prophet), feature engineering для LGBM, выбор архитектуры нейронной сети если нужно. Walk-forward validation с реалистичным горизонтом. Деплой через API с автоматическим переобучением по расписанию через Airflow или Prefect.
Сроки ориентировочно: MVP-прогноз на одном типе данных — 3–6 недель. Иерархическая система прогнозирования с автоматизацией — 2–5 месяцев. Стоимость рассчитывается индивидуально.
Наша команда — сертифицированные ML-инженеры (AWS ML Specialty, GCP Professional ML Engineer). За 5 лет на рынке реализовали более 50 проектов по прогнозированию. Свяжитесь с нами для бесплатного анализа ваших данных — мы оценим задачу и дадим первые рекомендации за 1–2 дня. Закажите консультацию и убедитесь, что ваши прогнозы работают в production, а не только в ноутбуке.