parham.
All projects
202530/30 e lode

Educational Analytics: OULAD Click-Stream Forecasting

I trained a custom 1D CNN that edged out SARIMA, ARIMAX, and Prophet on the Open University click-stream forecast (MAE 0.199, MAPE 1.9%).

420 MB

Source data

808

Daily observations

4

Models tested

1.9%

Best test MAPE

Overview

Forecasting student VLE engagement on the Open University dataset

The Open University Learning Analytics dataset (OULAD) is a public 420 MB release of click-stream and assessment data across multiple UK course presentations. I aggregated it to 808 daily observations of total VLE interactions and benchmarked four forecasters head-to-head: SARIMA, ARIMAX, Prophet, and a custom 1D CNN.

The goal: a forecast accurate enough to inform academic planning, but with at least one model that staff without an ML background could interpret. SARIMA stayed in the comparison for that reason.

Feature engineering

Two different lag windows for two different model families

Statistical models (SARIMA, ARIMAX, Prophet) and the CNN want different feature shapes, so I built two parallel windows:

  • 7 lag features at 1, 2, 3, 7, 14, 21, and 28 days for the statistical models, mirroring weekly and monthly seasonality.
  • 30-lag input window for the 1D CNN, letting the network learn its own short-horizon shape without having to write seasonality terms by hand.
Results

CNN edged out Prophet by a thin margin

ModelTest MAETest MAPENotes
1D CNN0.1991.9%Winner. 50 epochs, batch 32, 30-lag window.
Prophet0.2032.0%Razor-thin runner-up.
ARIMAXn/an/aSolid baseline; see chart below.
SARIMAn/an/aKept as interpretable seasonal baseline.
Forecasts

What each model sees and predicts

Three notebook outputs: the raw time series with anomalies flagged, Prophet's forecast against observed clicks in the original scale, and the winning CNN's training-data fit plus its out-of-sample predictions.

Notebook output
Log clicks over time with anomalies highlighted
Daily VLE log clicks across 2.5 academic years. Red dots are statistical anomalies.How to read it: blue is daily clicks on log scale, red dots are points that fall outside the statistical band. The recurring summer dip (July-August) and winter dip (late December) are academic breaks. The visible spikes are exam weeks. This shape is what drove the lag-feature window choice: weekly, monthly, and quarterly lags all matter.
Notebook output
Prophet forecast on original scale showing observed vs forecast
Prophet forecast versus observed clicks in the original scale.How to read it: blue is the observed clicks, orange is Prophet's forecast. Prophet captures the weekly cycle and the multi-year trend cleanly but tends to under-shoot the sharp exam-week spikes. Test MAE 0.203, MAPE 1.9 percent. Prophet is the right pick if the audience needs an interpretable model with no ML background.
Notebook output
Custom 1D CNN forecast vs observed clicks
Custom 1D CNN prediction versus training data.How to read it: blue is training data, orange is the CNN's out-of-sample forecast. The CNN learned the shape (including the exam spikes Prophet missed) without explicit seasonality terms. It edged Prophet by 0.004 MAE, which is statistically thin: the right call in production is to pick by interpretability, not headline accuracy.
Tech stack

Frameworks and infrastructure

PythonTensorFlow/KerasSARIMAARIMAXProphetPandasStreamlit

Source code on GitHub.