Time Series Forecasting

Time series forecasting is the task of predicting future values based on historical temporal patterns. It requires modeling three core components: Trend (long-term direction), Seasonality (repeating cycles), and Residuals (noise).

1. Core Methodologies

2. Feature Engineering for Time Series

When using machine learning models (like XGBoost), time must be converted into features:

3. Concrete Example: XGBoost with Lag Features

Using a Gradient Boosting Machine (GBM) for time series allows capturing non-linear relationships that ARIMA misses.

import pandas as pd
import xgboost as xgb
from sklearn.metrics import mean_squared_error

# 1. Prepare Data with Lag Features
df = pd.read_csv("sales_data.csv", parse_dates=['date'])
df['lag_1'] = df['sales'].shift(1)
df['lag_7'] = df['sales'].shift(7)
df['rolling_mean_7'] = df['sales'].rolling(window=7).mean()

# Add temporal features
df['day_of_week'] = df['date'].dt.dayofweek
df['month'] = df['date'].dt.month

# 2. Split (Ensuring no look-ahead bias)
train = df[df['date'] < '2024-01-01']
test = df[df['date'] >= '2024-01-01']

X_train = train.drop(['date', 'sales'], axis=1)
y_train = train['sales']
X_test = test.drop(['date', 'sales'], axis=1)
y_test = test['sales']

# 3. Model Training
model = xgb.XGBRegressor(n_estimators=1000, learning_rate=0.05, max_depth=5)
model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)

# 4. Predict
predictions = model.predict(X_test)

4. Evaluation Metrics

5. Handling Concept Drift

Real-world time series are non-stationary.

Summary of Technical implementation added