Розробка 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
└── Оцінка впливу на здоров'я
Візуалізація:
└── Веб-портал + мобільний додаток
Просторова інтерполяція
Станцій завжди менше, ніж потрібно. Для карти якості повітря на рівні 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)
Розрахунок АКІ за ПМР:
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 (спостереження = джерела × внески)
# 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 місяців.







