# Deep Maps Pm25 Eval

> This benchmark evaluates a model's ability to infer high-resolution (1km×1km, hourly) PM2.5 concentrations across an urban area using sparse mobile and fixed sensor data combined with multi-scale urban features. It probes spatial-temporal prediction capabilities and measures how well the model integrates local, neighboring, and macro-scale regional transport dynamics to improve air quality estimation accuracy. Use when the user wants to benchmark on Beijing PM2.5 Mobile Sensing Dataset, or asks about evaluating this task. Reports R².

- Skill: `qhjqhj00/deep-maps-pm25-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/deep-maps-pm25-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/deep-maps-pm25-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/deep-maps-pm25-eval

---


# deep-maps-pm25-eval

> Deep-MAPS: Machine Learning based Mobile Air Pollution Sensing — Jun Song et al. (2019) (arXiv:1904.12303, 2019)

## What this evaluates

This benchmark evaluates a model's ability to infer high-resolution (1km×1km, hourly) PM2.5 concentrations across an urban area using sparse mobile and fixed sensor data combined with multi-scale urban features. It probes spatial-temporal prediction capabilities and measures how well the model integrates local, neighboring, and macro-scale regional transport dynamics to improve air quality estimation accuracy.

## Datasets

- **Beijing PM2.5 Mobile Sensing Dataset** — total 50736; splits: test (9200), train (-1)

## Metrics

- `RMSE` — range: other
  - Root Mean Squared Error: sqrt(mean((y_true - y_pred)^2)). Measures the average magnitude of prediction errors in the original units.
- `SMAPE` — range: percent
  - Symmetric Mean Absolute Percentage Error: (100/n) * sum(|y_true - y_pred| / ((|y_true| + |y_pred|)/2)). Provides a symmetric percentage-based error metric.
- `R²` **(primary)** — range: [0, 1]
  - Coefficient of Determination: 1 - (sum((y_true - y_pred)^2) / sum((y_true - mean(y_true))^2)). Represents the proportion of variance in the target variable explained by the model.

## Input / output format

**Input**: Hourly feature vectors for each 1km×1km grid cell, comprising local urban features (L), neighboring grid features (N), macro-scale regional transport features (M), meteorological conditions, POI/AOI data, traffic conditions, and population vitality.

**Output**: Predicted PM2.5 concentration value in μg/m³ for the target grid cell and hour.

## Scoring recipe

```python
def compute_metrics(y_true, y_pred):
    rmse = np.sqrt(np.mean((y_true - y_pred) ** 2))
    smape = 100 * np.mean(np.abs(y_true - y_pred) / ((np.abs(y_true) + np.abs(y_pred)) / 2))
    ss_res = np.sum((y_true - y_pred) ** 2)
    ss_tot = np.sum((y_true - np.mean(y_true)) ** 2)
    r2 = 1 - (ss_res / ss_tot)
    return {'RMSE': rmse, 'SMAPE': smape, 'R2': r2}
```

## Common pitfalls

- Macro features specifically refer to regional pollution transport from fixed stations outside the study area, not just adjacent grid cells.
- Training set composition varies by mobile data coverage percentage (0%, 20%, 40%, 60%, 80%, 100%), so performance metrics are not directly comparable without specifying the coverage level.
- SMAPE is reported as a percentage in the paper; using a non-symmetric variant (dividing only by y_true) will yield different values and break reproducibility.

## Evidence (verbatim from paper)

> A five-fold cross validation, along with RMSE, SMAPE and $R^{2}$, are used to assess the validity and accuracy of the machine learning model (Deep-MAPS). Table [1] compares Deep-MAPS with several benchmark methods including spatial interpolation (SI), k-nearest neighbors (KNN), and support vector regression (SVR.

## Citation

```bibtex
@misc{song2019deepmaps,
  title={Deep-MAPS: Machine Learning based Mobile Air Pollution Sensing},
  author={Jun Song et al. (2019)},
  year={2019},
  note={arXiv:1904.12303}
}
```

- arXiv: 1904.12303

