Bird
Raised Fist0
ML Pythonml~20 mins

Time series evaluation metrics in ML Python - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - Time series evaluation metrics
Problem:You have a time series forecasting model that predicts daily sales. The model currently shows a training mean squared error (MSE) of 10 but a validation MSE of 50.
Current Metrics:Training MSE: 10, Validation MSE: 50
Issue:The model is overfitting the training data, leading to poor validation performance. Also, only MSE is used, which may not fully capture forecast quality.
Your Task
Reduce overfitting and improve validation forecast accuracy by using appropriate time series evaluation metrics such as Mean Absolute Error (MAE) and Mean Absolute Percentage Error (MAPE). Target validation MAE < 5 and MAPE < 15%.
Do not change the model architecture or training data.
Only modify the evaluation metrics and how you interpret model performance.
Hint 1
Hint 2
Hint 3
Solution
ML Python
import numpy as np
from sklearn.metrics import mean_squared_error, mean_absolute_error

def mean_absolute_percentage_error(y_true, y_pred):
    y_true, y_pred = np.array(y_true), np.array(y_pred)
    non_zero = y_true != 0
    return np.mean(np.abs((y_true[non_zero] - y_pred[non_zero]) / y_true[non_zero])) * 100

# Example true and predicted values for training and validation
train_true = [100, 120, 130, 150, 170]
train_pred = [102, 118, 128, 149, 172]
val_true = [110, 115, 140, 160, 180]
val_pred = [130, 140, 160, 190, 210]

# Calculate metrics
train_mse = mean_squared_error(train_true, train_pred)
val_mse = mean_squared_error(val_true, val_pred)
train_mae = mean_absolute_error(train_true, train_pred)
val_mae = mean_absolute_error(val_true, val_pred)
train_mape = mean_absolute_percentage_error(train_true, train_pred)
val_mape = mean_absolute_percentage_error(val_true, val_pred)

print(f"Training MSE: {train_mse:.2f}, Validation MSE: {val_mse:.2f}")
print(f"Training MAE: {train_mae:.2f}, Validation MAE: {val_mae:.2f}")
print(f"Training MAPE: {train_mape:.2f}%, Validation MAPE: {val_mape:.2f}%")
Added MAE and MAPE metrics to better evaluate model performance on time series data.
Implemented a function to calculate MAPE, handling zero values safely.
Compared training and validation metrics to identify overfitting more clearly.
Results Interpretation

Before: Training MSE = 10, Validation MSE = 50 (overfitting suspected but unclear severity)

After: Training MSE = 3.4, Validation MSE = 645, Training MAE = 1.8, Validation MAE = 25, Training MAPE = 1.4%, Validation MAPE = 17.9%

The new metrics show much higher validation error, confirming overfitting. MAE and MAPE provide clearer, more interpretable error measures.

Using multiple evaluation metrics like MAE and MAPE alongside MSE helps better understand time series model performance and detect overfitting. Metrics that relate errors to actual values (MAPE) are especially useful for business decisions.
Bonus Experiment
Try using Root Mean Squared Error (RMSE) and Symmetric Mean Absolute Percentage Error (SMAPE) to evaluate the model and compare results.
💡 Hint
RMSE is the square root of MSE and has the same units as the data, making it easier to interpret. SMAPE handles zero values better than MAPE by symmetrizing the percentage error.

Practice

(1/5)
1. Which metric measures the average absolute difference between predicted and actual values in time series forecasting?
easy
A. Mean Squared Error (MSE)
B. Mean Absolute Error (MAE)
C. Root Mean Squared Error (RMSE)
D. R-squared (Coefficient of Determination)

Solution

  1. Step 1: Understand the definition of MAE

    MAE calculates the average of the absolute differences between predicted and actual values, showing average error size.
  2. Step 2: Compare with other metrics

    MSE and RMSE square errors, while R-squared measures variance explained, not average error.
  3. Final Answer:

    Mean Absolute Error (MAE) -> Option B
  4. Quick Check:

    Average absolute difference = MAE [OK]
Hint: MAE uses absolute differences, no squaring involved [OK]
Common Mistakes:
  • Confusing MAE with MSE or RMSE
  • Thinking R-squared measures error size
  • Assuming RMSE is the same as MAE
2. Which of the following is the correct formula for Root Mean Squared Error (RMSE) given errors \(e_i = y_i - \hat{y}_i\) for \(n\) points?
easy
A. RMSE = \(\sum_{i=1}^n e_i^2\)
B. RMSE = \(\frac{1}{n} \sum_{i=1}^n |e_i|\)
C. RMSE = \(\frac{1}{n} \sum_{i=1}^n e_i\)
D. RMSE = \(\sqrt{\frac{1}{n} \sum_{i=1}^n e_i^2}\)

Solution

  1. Step 1: Recall RMSE formula

    RMSE is the square root of the average of squared errors, so it must include squaring, averaging, then square root.
  2. Step 2: Check each option

    RMSE = \(\sqrt{\frac{1}{n} \sum_{i=1}^n e_i^2}\): \(\sqrt{\frac{1}{n} \sum_{i=1}^n e_i^2}\) matches the formula exactly. RMSE = \(\sum_{i=1}^n e_i^2\) misses averaging and root. RMSE = \(\frac{1}{n} \sum_{i=1}^n |e_i|\) is MAE. RMSE = \(\frac{1}{n} \sum_{i=1}^n e_i\) is mean error (not squared).
  3. Final Answer:

    RMSE = \(\sqrt{\frac{1}{n} \sum_{i=1}^n e_i^2}\) -> Option D
  4. Quick Check:

    RMSE = sqrt(mean squared errors) [OK]
Hint: RMSE = square root of average squared errors [OK]
Common Mistakes:
  • Forgetting to take square root
  • Using absolute errors instead of squared
  • Not dividing by number of points
3. Given actual values \([3, 5, 2, 7]\) and predicted values \([2, 5, 4, 8]\), what is the Mean Squared Error (MSE)?
medium
A. 1.5
B. 1.25
C. 2.0
D. 0.75

Solution

  1. Step 1: Calculate errors and square them

    Errors: 3-2=1, 5-5=0, 2-4=-2, 7-8=-1. Squared errors: 1, 0, 4, 1.
  2. Step 2: Compute average of squared errors

    Sum = 1+0+4+1=6. Average = 6/4 = 1.5.
  3. Final Answer:

    1.5 -> Option A
  4. Quick Check:

    Sum squared errors / count = 1.5 [OK]
Hint: Square errors, sum, then divide by count [OK]
Common Mistakes:
  • Using absolute errors instead of squared
  • Forgetting to average over all points
  • Mixing predicted and actual values
4. Identify the error in this Python code calculating MAE for time series predictions:
def mae(actual, predicted):
    errors = [a - p for a, p in zip(actual, predicted)]
    return sum(errors) / len(errors)
medium
A. Use multiplication instead of subtraction in errors
B. Divide by sum of errors instead of length
C. Errors should be absolute values before summing
D. No error, code is correct

Solution

  1. Step 1: Analyze error calculation

    The code calculates errors as differences but does not take absolute values, which MAE requires.
  2. Step 2: Understand MAE definition

    MAE is mean of absolute errors, so errors must be wrapped with abs() before summing.
  3. Final Answer:

    Errors should be absolute values before summing -> Option C
  4. Quick Check:

    MAE needs absolute errors [OK]
Hint: MAE sums absolute errors, not raw differences [OK]
Common Mistakes:
  • Skipping absolute value in error calculation
  • Dividing by wrong denominator
  • Confusing MAE with MSE
5. You have two forecasting models evaluated on the same dataset. Model A has MAE=2.5 and RMSE=3.0, Model B has MAE=2.0 and RMSE=3.5. Which model is generally better and why?
hard
A. Model A, because lower RMSE means fewer large errors
B. Model B, because higher RMSE indicates better fit
C. Model B, because lower MAE means better average error
D. Model A, because MAE and RMSE must be equal for best model

Solution

  1. Step 1: Interpret MAE and RMSE values

    Model B has lower MAE but higher RMSE, meaning it has better average error but more large errors. Model A has lower RMSE, indicating fewer large errors.
  2. Step 2: Decide which metric matters more

    RMSE penalizes large errors more, so lower RMSE often means more reliable predictions without big mistakes.
  3. Final Answer:

    Model A, because lower RMSE means fewer large errors -> Option A
  4. Quick Check:

    Lower RMSE means fewer big errors [OK]
Hint: Lower RMSE means fewer big errors; prefer it if large errors matter [OK]
Common Mistakes:
  • Choosing model with lower MAE ignoring RMSE
  • Thinking higher RMSE is better
  • Expecting MAE and RMSE to be equal