Сводка метрик AgroNDVI
Все ключевые числа проекта в одном файле. По разделам соответствуют дням разработки.
Данные: спутниковые снимки
| Метрика |
Значение |
| Источник |
AWS Element 84 STAC, bucket sentinel-cogs (us-west-2) |
| Регион tile |
MGRS 37TDK – юго-запад Краснодарского края |
| Период |
2023-10-01 – 2024-09-30 (полный сезон) |
| Фильтр облачности |
<20% |
| Всего снимков в серии |
45 |
| Распределение по месяцам |
окт 6, ноя 0, дек 0, янв 2, фев 3, мар 2, апр 3, май 5, июн 9, июл 5, авг 6, сен 4 |
| Средняя облачность по серии |
5.3% |
| Медиана облачности |
1.3% |
| Разрешение |
10 м/px (B04, B08); 20 м/px (SCL, ресемплируется до 10м) |
| Размер одного COG-окна над полями |
~2500×1700 px = 17 МБ float32 |
Данные: границы полей
| Метрика |
Значение |
| Источник |
OpenStreetMap, Overpass API |
| Тэг |
landuse=farmland |
| BBox запроса |
38.10-38.45 E, 45.00-45.15 N (~25×17 км) |
| Всего получено полигонов |
152 |
| После фильтра площади >=20 га |
149 |
| Финальный отбор (top-20 по площади) |
20 полей |
| Распределение площадей |
722 - 1488 га, медиана 845 га |
Тэгов crop=rice |
14 из 20 |
| Размер GeoJSON |
14 КБ |
Данные: погода
| Метрика |
Значение |
| Источники |
Open Meteo Historical + NASA POWER |
| Точка запроса |
38.275 E, 45.075 N (центр bbox полей) |
| Период |
2023-10-01 – 2024-09-30 |
| Всего дней |
366 |
| Колонок daily |
18 (11 от Open Meteo + 6 от NASA POWER + дата) |
| Время ответа Open Meteo |
1.3 сек |
| Время ответа NASA POWER |
1.5 сек |
Агрегаты сезона (1 апр – 30 сен 2024)
| Метрика |
Значение |
| T_mean |
22.55 °C |
| T_max за сезон |
39.0 °C |
| T_min за сезон |
4.9 °C |
| Сумма осадков |
254.6 мм |
| Сумма GDD (база 10°C) |
2296 |
| Сумма солнечной радиации |
3943 MJ/м² |
| ET0 (потенциальная эвапотранспирация) |
991.9 мм |
| Средняя влажность |
56.19 % |
NDVI time-series
| Метрика |
Значение |
| Размер CSV (long format) |
900 строк (20 полей × 45 дат) |
| Доля валидных NDVI после SCL-маски |
98.9% |
| Сглаживание |
rolling 21d, центрированное |
| Минимум медианы NDVI по 20 полям |
-0.03 (январь 2024, затопление чеков) |
| Максимум медианы NDVI |
0.56 (2 августа 2024, пик роста риса) |
| Амплитуда сезона |
0.587 |
| Начало вегетации (NDVI > 0.3) |
2023-10-07 |
| GDD на дату пика NDVI |
1740 |
NDVI по полям (после сглаживания)
| Метрика |
Min |
Median |
Max |
| NDVI peak |
0.434 (F014) |
0.563 |
0.770 (F004) |
| Day-of-year пика |
134 (13 мая, F017) |
213 (31 июля) |
221 (8 августа) |
| Дней с NDVI > 0.3 |
76 (F005) |
181 |
182 |
| Интеграл NDVI за сезон |
56.8 |
81.7 |
114.7 (F004) |
Pipeline производительность
| Этап |
Время |
Параллелизм |
| STAC-search серии 45 снимков (12 чанков, retry x8) |
~30 сек |
sequential |
| Overpass запрос полей |
1.1 сек |
sequential |
| Open Meteo + NASA POWER за год |
2.8 сек |
sequential |
| Чтение 3 полос (B04+B08+SCL) одной даты по окну |
40-90 сек |
sequential |
| Серия NDVI: 45 дат × 20 полей + zonal stats |
7:37 минут |
6 потоков (ThreadPoolExecutor) |
| Sklearn LOO-CV 5 моделей |
~5 сек |
sequential |
| Anomaly detection (3 метода) |
~3 сек |
sequential |
| End-to-end холодный старт |
~10 минут |
– |
Модель прогноза урожайности
Датасет: 20 строк × 18 числовых фичей + 1 синтетический таргет.
Оценка: Leave-One-Out CV (n=20 → 20 итераций).
Сравнение 5 моделей
| Модель |
Фичей |
MAPE % |
MAE ц/га |
RMSE ц/га |
R² |
| baseline_mean |
0 |
4.96 |
2.758 |
3.534 |
0.000 |
| baseline_lr_peak |
1 |
2.95 |
1.613 |
1.932 |
0.701 |
| baseline_lr_ndvi |
9 |
4.48 |
2.459 |
3.291 |
0.132 |
| lightgbm |
18 |
4.39 |
2.412 |
2.915 |
0.319 |
| lightgbm_ndvi_only |
9 |
4.54 |
2.518 |
2.910 |
0.322 |
Победитель – LinearRegression на одной фиче ndvi_peak.
LightGBM train MAPE = 0.03% при LOO MAPE = 4.39% – классический симптом переобучения на маленьком датасете. См. docs/experiments/2026-05-26-lgb-baseline.md для разбора.
LightGBM feature importance (top-5 по gain)
| Фича |
Gain |
Split count |
Permutation |
| ndvi_peak_anomaly |
718 |
85 |
1.27 |
| ndvi_peak |
565 |
247 |
1.30 |
| ndvi_growth_rate_max |
295 |
94 |
0.57 |
| ndvi_vegetation_days |
148 |
224 |
0.54 |
| ndvi_summer_mean |
123 |
97 |
0.42 |
Все 8 weather-фичей имеют gain = 0: они одинаковы для 20 полей (одна точка запроса), LightGBM правильно их отсёк.
Anomaly detection
3 независимых метода, объединение через mean(ranks).
Top-3 аномалий
| field_id |
mean_rank |
rank_z |
rank_iso |
rank_l2 |
Природа |
| F004 |
1.00 |
1 |
1 |
1 |
Чемпион: max NDVI 0.77, поздний устойчивый пик |
| F005 |
2.33 |
2 |
2 |
3 |
Отстающий: min NDVI 0.45, ранний спад |
| F017 |
3.33 |
3 |
5 |
2 |
Сдвиг: пик 13 мая, на 2-3 недели раньше остальных |
Согласованность методов (Spearman ρ)
| |
Z-total |
IsoForest |
L2 |
| anomaly_z_total |
1.00 |
0.70 |
0.96 |
| isoforest_score |
0.70 |
1.00 |
0.79 |
| l2_from_median |
0.96 |
0.79 |
1.00 |
Высокая согласованность (минимум ρ = 0.70) подтверждает устойчивость аномалий.
Артефакты проекта
| Категория |
Файлы |
Размер |
| Sentinel-2 каталоги |
data/catalog/*.json |
~95 КБ |
| Поля OSM |
data/fields/fields_v1.geojson |
14 КБ |
| Погода |
data/weather/weather_daily.csv |
60 КБ |
| NDVI tile (полный) |
data/processed/S2A_37TDK_*_NDVI.tif |
349 МБ |
| NDVI window-tile серии |
data/processed/ndvi_series/*.tif (опционально) |
до 270 МБ за 45 дат |
| NDVI time-series CSV |
data/processed/fields_ndvi_series.csv |
65 КБ |
| Фичи + таргет |
data/processed/fields_features.csv |
7 КБ |
| Аномалии |
data/processed/fields_anomaly.csv |
2 КБ |
| Модель |
models/lgb_yield.pkl |
80 КБ |
| Превью PNG |
data/preview/*.png (15 файлов) |
~15 МБ |
| Интерактивные карты |
data/preview/*.html |
~150 КБ |
| Скриншоты документации |
docs/images/*.png (10 файлов) |
~3 МБ |
Что в портфолио из этих чисел
- 45 снимков, 900 точек NDVI, 98.9% валидных – объём собранных данных;
- 0.587 амплитуда NDVI – доказательство, что сезонная динамика поймана корректно;
- MAPE 2.95% baseline_lr_peak vs 4.39% LightGBM – главный методологический сигнал (см. portfolio-report.md);
- Top-3 аномалии при Spearman ρ ≥ 0.70 между методами – устойчивый сигнал anomaly detection;
- End-to-end 10 минут – метрика инженерной зрелости pipeline.