MLOps Zoomcamp 2025

Homework 5: Monitoring Statistics

Distribution of scores and reported study time for this homework.

Submissions

207

Median total score

6

Average total score

6

Score distribution

All values are points.

Questions score

Min
1
Median
6.0
Max
6
Q1
4.0
Avg
5.3
Q3
6.0

Learning in public score

Min
-
Median
0.0
Max
7
Q1
0.0
Avg
0.7
Q3
0.0

Total score

Min
1
Median
6.0
Max
14
Q1
5.0
Avg
6.1
Q3
6.0

Time distribution

All values are hours reported by students.

Lectures

Min
1.0
Median
4.0
Max
44.0
Q1
3.0
Avg
5.8
Q3
6.0

Homework

Min
0.5
Median
3.0
Max
72.0
Q1
2.0
Avg
5.1
Q3
5.0

Question breakdown

Correctness and answer distribution per question.

1. Prepare the dataset

193 / 207 correct (93.2%)

1 72044 5 (2.4%)
2 78537 7 (3.4%)
3 57457 193 (93.2%)
4 54396 2 (1.0%)

2. Metric

207 / 207 correct (100.0%)

Answer Count
ColumnQuantileMetric 25
ColumnSummaryMetric 13
QuantileValue 13
ColumnMissingValuesMetric 9
trip_distance 5
ColumnValueRangeMetric 5
DatasetSummaryMetric 4
ColumnQuantileMetric(column_name="fare_amount", quantile=0.5) 4
ColumnDriftMetric 4
StdValue 3
ColumnCorrelationsMetric 3
MedianValue 2
ColumnMeanMetric 2
UniqueValueCount 2
DatasetDriftMetric 2
ColumnQuantileMetric(column_name='fare_amount', quantile=0.5) 2
QuantileValue() 2
QuantileValue, MissingValueCount 2
passenger_count 2
DatasetCorrelationsMetric 2
ColumnCorrelationsMetric(column_name='fare_amount') 2
RegressionQualityMetric() 2
MissingValueCount 2
ColumnQuantileMetric(column_name='fare_amount', quantile=0.5) and Metric DatasetCorrelationsMetric 2
DatasetMissingValuesMetric 2
0.01 1
prediction 1
RegressionQualityMetric(target="duration_min", prediction="prediction") 1
InRangeValueCount() 1
3.805 minutes, 4.142 minutes 1
ColumnDriftMetric, DatasetDriftMetric, DatasetMissingValuesMetric, ColumnValueRangeMetric 1
DataQualityStabilityMetric 1
Missing Values Analysis 1
correlation between the prediction column and the trip_distance column 1
ColumnQuantileMetric(column_name='fare_amount', quantile=0.5), ColumnMissingValuesMetric(column_name='passenger_count') 1
MaxValue 1
ColumnQuantileMetric for fare_amount (quantile=0.5) 1
the mean of fare_amount 1
quantile_metric = QuantileValue(column="fare_amount", quantile=0.5) 1
evidently.metrics.ColumnQuantileMetric 1
ColumnSummaryMetric of the trip_distance 1
Mean of trip_distance 1
2 1
mean 1
Most common passenger count (taken from ColumnSummaryMetric for passenger count) 1
MaxValue(column="fare_amount") 1
ColumnQuantileMetric and DatasetCorrelationsMetric 1
Mean value fot `tip_amount` 1
DuplicatedRowCount 1
ColumnDriftMetric(column_name='trip_distance'), 1
StdValue, QuantileValue(column='fare_amount', quantile=0.5), 1
QuantileValue(column="total_amount", quantile=0.5) 1
fare_amount 1
UniqueValueCount for categorical variables 1
ColumnQuantileMetric, ColumnMissingValuesMetric 1
0.5 1
MeanValue and MissingValue 1
RegressionErrorNormality 1
• I chose to monitor the median (50th percentile) of the fare_amount column using the ColumnQuantileMetric. 1
We are monitoring the prediction latency (ms) of the model. 1
96 1
Fare Amount Quantile (0.5) - The median fare amount for each day, Column Drift - Detects statistical drift in the fare_amount column 1
I chose Standard deviation for fare_amount. It will be followed with "StdValue(column_name="fare_amount")". 1
Used ColumnQuantileMetric + ColumnMissingValuesMetric 1
I chose: ColumnQuantileMetric and ColumnMissingValuesMetric 1
ValueDrift(column="prediction") 1
ColumnValueListMetric 1
0,5 1
DatasetCorrelationsMetric() 1
ColumnDriftMetric(column_name='prediction'), DatasetDriftMetric(), DatasetMissingValuesMetric(), ColumnQuantileMetric(column_name="fare_amount", quantile=0.5), ColumnQuantileMetric(column_name="trip_distance", quantile=0.5), ColumnQuantileMetric(column_name="passenger_count", quantile=0.5), ColumnMissingValuesMetric(column_name="fare_amount"), ColumnDriftMetric(column_name="fare_amount"), ColumnDriftMetric(column_name="trip_distance"), ColumnDriftMetric(column_name="passenger_count") 1
InRangeValueCount(column="fare_amount", left= -259, right=0) 1
RowCount 1
QuantileValue, ValueDrift 1
MaxValue(column='fare_amount') 1
DriftedColumnsCount 1
ColumnDriftMetric("fare_amount") 1
QuantileValue(column="trip_distance", quantile=0.95), 1
ColumnQuantileMetric(column_name='fare_amount', quantile=0.5), ColumnMissingValuesMetric(column_name='fare_amount') 1
assuming this is asking to add QuantileValue(column=fare_amount,quantile=0.5) as well as an additional metric. Another useful metric could be evidently.metrics.MeanValue on trip_distance (MeanValue(column=trip_distance)) 1
MinValue 1
UniqueValueCount for categorical columns. This is to ensure that onehotencoding always has the same number of columns generated. If a new value of PULocationId or DOLocationId exists, the model must be retrained. 1
StdValue(column='fare_amount') 1
StdValue() 1
MaxValue(column='fare_amount') - maximum fare amount 1
DatasetMissingValueCount() 1
I chose the QuantileValue metric on the column fare_amount with quantile=0.5. 1
R2Score 1
QuantileValue + MissingValueCount 1
RMSE 1
DriftedColumnsCount() 1
MeanValue metric 1
MissingValueCount(column='tip_amount') 1
InRangeValue 1
I have added ColumnValueRangeMetric to see how many values fall in and out of a certain range (fare_amount between 0 and 25) 1
ColumnQuantileMetric(column_name="passenger_count", quantile=0.50) # median passengers 1
ColumnValueRangeMetric(column_name='fare_amount', left=1, right=200) 1
StdValue of prediction 1
StdValue(column='prediction') 1
rmse 1
ValueDrift() 1
MeanValue('trip_distance') 1
MedianValue() 1
Metric: dataset summary (e.g. almost duplicated features = 1). Quantile value for fare_amount: 13.5. 1
DatasetSummaryMetric() 1
ColumnMissingValuesMetric for the "trip_distance" column, and quantile=0.5 1
ValueDrift(column="prediction"), DriftedColumnsCount(), MissingValueCount(column="prediction"), QuantileValue(column="fare_amount", quantile=0.5), RowCount(), EmptyRowsCount() 1
I chose ColumnQuantileMetric with quantile = 0.5 for the fare_amount column. 1
MeanValue 1
13.5 1

3. Monitoring

169 / 207 correct (81.6%)

1 10 6 (2.9%)
2 12.5 15 (7.2%)
3 14.2 169 (81.6%)
4 14.8 14 (6.8%)

4. Dashboard

177 / 207 correct (85.5%)

1 project_folder (05-monitoring) 2 (1.0%)
2 project_folder/config (05-monitoring/config) 23 (11.1%)
3 project_folder/dashboards (05-monitoring/dashboards) 177 (85.5%)
4 project_folder/data (05-monitoring/data) 2 (1.0%)

Calculated: 14 July 2025, 17:19