Разработка AI-системы мониторинга качества воздуха
Мониторинг качества воздуха — это не только размещение датчиков. Это задача интеграции данных из разных источников, интерполяции в пространстве, прогнозирования и доставки информации до горожан в понятном формате. ML решает задачи, с которыми детерминированные модели справляются плохо: пространственная интерполяция, обнаружение источников, краткосрочный прогноз.
Архитектура системы
Данные → Обработка → Хранение → Аналитика → Визуализация
Данные:
├── Государственные посты (Росгидромет, ФБУ ЦЛМ)
├── IoT-сенсоры (собственные/партнёрские)
├── Спутник (Sentinel-5P, MODIS)
├── Мобильные станции (автомобили, велосипеды)
└── NWP метеопрогнозы (Росгидромет API, Open-Meteo)
Обработка:
├── Калибровка LCS (low-cost sensors)
├── Контроль качества (QA/QC)
├── Пространственная интерполяция
└── Прогноз качества воздуха
Хранение:
└── TimescaleDB (temporal) + PostGIS (spatial)
Аналитика:
├── AQI расчёт
├── Trend analysis
├── Source attribution
└── Health impact estimation
Визуализация:
└── Веб-портал + мобильное приложение
Пространственная интерполяция
Станций всегда меньше, чем нужно. Для карты качества воздуха на уровне 100 м нужна интерполяция:
Обычная интерполяция (Kriging): Хорошо работает при гомогенном загрязнении. Плохо — при локальных источниках (предприятие, дорога).
ML-интерполяция:
def spatial_air_quality_model(station_readings, spatial_covariates):
"""
Обучаем на station_readings
Предсказываем для всей городской сетки 100×100 м
"""
X = pd.merge(station_readings, spatial_covariates, on=['lat', 'lon'])
# Spatial features
X['distance_to_highway'] = ...
X['distance_to_industry'] = ...
X['ndvi'] = ... # озеленение
X['building_density'] = ... # плотность застройки
model = XGBRegressor().fit(X, X['pm25'])
return model
# Предсказание для всей сетки города
grid = create_city_grid(city_boundary, resolution=100)
grid['predicted_pm25'] = model.predict(grid[feature_cols])
Deep Learning для spatial mapping: U-Net с мультиспектральными спутниковыми снимками + station readings → карта PM2.5 разрешением 30-100 м. Обучение на одновременных данных станций и спутниковых снимков.
Прогнозирование качества воздуха
Основные факторы:
- Метеорология: ветер (скорость и направление определяют перенос), стабильность атмосферы (mixing height — высота перемешивания), осадки (вымывание PM)
- Источники: промышленные выбросы, транспорт, отопление
- Фотохимия: образование O3 и вторичных частиц (PM2.5) — зависит от температуры и солнечной радиации
LSTM + Weather Attention модель:
class AirQualityForecastModel(nn.Module):
def __init__(self):
self.pollutant_encoder = LSTM(n_pollutants, 64)
self.weather_encoder = LSTM(n_weather_vars, 64)
self.cross_attention = CrossAttention(64, 64)
self.decoder = nn.Linear(128, n_pollutants * forecast_hours)
Горизонт: 24/48/72 часа. MAPE достижимая: < 15% для 48-часового прогноза PM2.5.
Индекс качества воздуха (АКИ/AQI)
Расчёт АКИ по ПМР (Приложение к МУ 2.1.6.1982-05):
def calculate_aki(concentrations: dict) -> float:
"""
АКИ = Σ (C_i / PDK_i_ss) для i загрязнителей
При АКИ < 5 — нормативное качество воздуха
"""
aki = 0
for pollutant, conc in concentrations.items():
pdk = PDK_MEAN_DAILY[pollutant]
aki += conc / pdk
return aki
Цветовая кодировка:
- Зелёный: АКИ < 5 (норма)
- Жёлтый: 5-7 (незначительное загрязнение)
- Оранжевый: 7-14 (умеренное)
- Красный: > 14 (высокое, опасно для здоровья)
Мобильное приложение для горожан
Функции:
- Текущий AQI в точке геолокации
- Карта качества воздуха города
- Прогноз AQI на 24/48 часов
- Рекомендации: безопасно ли гулять/заниматься спортом
- Уведомления при превышении порогов
Персонализированные рекомендации:
- Астматики / аллергики: более строгий порог уведомлений
- Велосипедисты: оптимальное время/маршрут с учётом AQI
- Родители с детьми: playground quality index
Атрибуция источников
Positive Matrix Factorization (PMF): Разложение спектра химического состава PM2.5 на источники: промышленность, транспорт, бытовое отопление, природные (морская соль, пыль).
from scipy.optimize import nnls
# G = F × C (observations = sources × contributions)
# PMF минимизирует взвешенную сумму квадратов остатков
# при неотрицательности F и C
EPA PMF 5.0 — официальный инструмент для receptor modeling.
Результат: "30% PM2.5 в данном городе от выбросов металлургии, 40% от транспорта, 20% от бытового отопления". Это база для регуляторных решений.
Сроки: базовая IoT-сеть + AQI расчёт + карта + мобильное приложение — 8-10 недель. Система с ML-прогнозом, source attribution и regulatory API — 4-5 месяцев.







