Model versioning helps track different versions of a machine learning model over time. The key metrics to watch are those that show how well each version performs, such as accuracy, precision, recall, and F1 score. These metrics tell us if a new model version is better or worse than the old one. Without tracking these, we can't know if changes improved the model or made it worse.
Model versioning in ML Python - Model Metrics & Evaluation
Version 1 Confusion Matrix:
Predicted
P N
Actual P 80 20
N 15 85
Version 2 Confusion Matrix:
Predicted
P N
Actual P 90 10
N 20 80
Total samples = 200 for each version
This matrix helps calculate precision, recall, and accuracy for each version to compare performance.
When comparing model versions, sometimes one version has higher precision but lower recall, and another has the opposite. For example, a spam filter model version might catch more spam (higher recall) but also mark more good emails as spam (lower precision). Deciding which version to keep depends on what matters more: avoiding false alarms or catching all spam.
A good model version shows improved or stable metrics compared to the previous one. For example, if accuracy rises from 85% to 90%, and precision and recall also improve or stay balanced, that is good. A bad version might have lower accuracy or a big drop in recall or precision, meaning it misses more true cases or makes more mistakes.
- Accuracy Paradox: A model might have high accuracy but poor recall on important classes, misleading version comparison.
- Data Leakage: If test data leaks into training, metrics look better but don't reflect real performance.
- Overfitting: A new version might perform well on training data but worse on new data, so metrics can be misleading without proper validation.
- Ignoring Business Context: Metrics alone don't tell the full story; consider what errors cost most in your application.
Your new model version has 98% accuracy but only 12% recall on fraud cases. Is it good for production? Why or why not?
Answer: No, it is not good. Even though accuracy is high, the model misses most fraud cases (low recall). For fraud detection, catching fraud (high recall) is critical, so this version would fail in real use.
Practice
model versioning in machine learning?Solution
Step 1: Understand the concept of model versioning
Model versioning means saving multiple copies of a model at different stages to track improvements.Step 2: Identify the main goal
The main goal is to keep versions so you can compare, update, or reproduce models easily.Final Answer:
To save different copies of a model as it improves -> Option BQuick Check:
Model versioning = saving model copies [OK]
- Confusing versioning with speeding training
- Thinking it reduces dataset size
- Assuming it adds features automatically
joblib?Solution
Step 1: Recall joblib syntax for saving models
The correct function to save a model with joblib isdump.Step 2: Match the correct function and filename
Usingjoblib.dump(model, 'model_v1.pkl')saves the model correctly.Final Answer:
joblib.dump(model, 'model_v1.pkl') -> Option CQuick Check:
joblib save function = dump [OK]
- Using save instead of dump
- Using store or write which don't exist
- Confusing load and dump functions
import joblib
model_v1 = {'accuracy': 0.8}
model_v2 = {'accuracy': 0.85}
joblib.dump(model_v1, 'model_v1.pkl')
joblib.dump(model_v2, 'model_v2.pkl')
loaded_model = joblib.load('model_v2.pkl')
print(loaded_model['accuracy'])
What will be the printed output?Solution
Step 1: Understand the saving and loading process
Two models are saved with different filenames: 'model_v1.pkl' and 'model_v2.pkl'.Step 2: Identify which model is loaded and printed
The code loads 'model_v2.pkl' and prints its accuracy value, which is 0.85.Final Answer:
0.85 -> Option DQuick Check:
Loaded model accuracy = 0.85 [OK]
- Printing accuracy of model_v1 instead of model_v2
- Confusing filename with accuracy value
- Assuming loading causes error
import joblib
model = {'accuracy': 0.9}
joblib.dump(model, model_v1.pkl)
What is the error and how to fix it?Solution
Step 1: Identify the syntax error in the filename
The filenamemodel_v1.pklis used without quotes, so Python treats it as a variable, causing a NameError.Step 2: Fix by adding quotes around the filename
Change tojoblib.dump(model, 'model_v1.pkl')to pass a string filename.Final Answer:
model_v1.pkl is not quoted as a string; add quotes -> Option AQuick Check:
Filename must be a string [OK]
- Forgetting quotes around filename
- Adding unnecessary extra arguments
- Thinking model type causes error here
Solution
Step 1: Understand the need for clear versioning
Clear filenames with date and accuracy help identify model versions easily.Step 2: Use a CSV log to track versions and metadata
Keeping a CSV log allows easy retrieval and comparison of models.Final Answer:
Save models with filenames like 'model_2023-06-01_acc0.85.pkl' and keep a CSV log with version info -> Option AQuick Check:
Clear naming + log = best versioning [OK]
- Overwriting files losing old versions
- Saving without naming pattern causing confusion
- Deleting older models losing history
Ready to prove it?
Pass the test and this pattern moves unknown
