Data & Software

Report-based engineering study

Abu Dhabi Tourism Demand Forecasting

A reproducible Python pipeline comparing quarterly hotel-demand forecasts across seven tourism zones.

PythonpandasNumPyscikit-learnMatplotlib

Project brief

This project develops a reproducible workflow for forecasting quarterly hotel guest demand across seven Abu Dhabi tourism zones. The report uses an official 2019–2024 panel containing 168 zone-quarter observations and 15 variables, including capacity, occupancy, revenue and guest activity. Data acquisition includes a verified offline fallback, followed by schema checks, accounting reconciliation and an audit of unusual observations. Demand history and hotel indicators are shifted into lags so that model inputs reflect information available at forecast time. The analysis compares seasonal naïve, Ridge, PCA–Ridge, Random Forest and Gradient Boosting models using expanding-window validation, with 2024 reserved as a locked holdout. Gradient Boosting wins the stated cross-validation selection rule, but the seasonal benchmark produces the lowest holdout error. This distinction is central to the project: model complexity earns its place through transparent comparison. Correlation analysis, principal components and permutation importance help explain the data structure and predictive signals. The resulting evidence supports zone-specific planning discussions while identifying the limits of a small panel, missing event information and structural changes in reporting.

The engineering challenge

Forecast zone-level hotel demand from a small quarterly panel without leaking same-quarter occupancy or revenue into predictions, while accounting for disruption and differing zone sizes.

Engineering approach

  1. Acquire the official workbook and validate the fallback against the same source data.
  2. Check missingness, duplicates, ranges and hotel accounting identities while retaining plausible shock observations.
  3. Create grouped demand lags, shifted rolling statistics, lagged operational features and seasonal terms.
  4. Compare five model candidates in quarter-blocked expanding windows and evaluate the locked 2024 holdout.
  5. Inspect zone errors and permutation importance to explain practical forecasting limits.

Results & observations

168 observationsCoverage

Seven tourism zones across 24 quarters, 2019–2024; 15 original variables.

37,485 guests MAESelected model

Gradient Boosting mean expanding-window validation error; selection excluded 2024.

9.56% WMAPEGradient Boosting holdout

Locked 2024 test set; reported MAE 19,862 guests and R² 0.981.

6.11% WMAPESeasonal benchmark holdout

Lowest 2024 holdout error, outperforming the selected machine-learning model.

Features & capabilities

  • Official data ingestion with fallback
  • Data-quality and accounting checks
  • Leakage-safe temporal features
  • Five-model benchmark
  • Chronological validation
  • Zone-level forecast diagnostics

Software & engineering tools

Python, pandas, NumPy, scikit-learn, Matplotlib, Seaborn