Bird
Raised Fist0
ML Pythonml~20 mins

Retraining strategies in ML Python - ML Experiment: Train & Evaluate

Choose your learning style10 modes available
Experiment - Retraining strategies
Problem:You have a model trained on old data that now performs poorly on new data. The model's accuracy on new data is only 65%, while on old data it was 90%.
Current Metrics:Training accuracy: 90%, New data accuracy: 65%
Issue:The model does not generalize well to new data because it was trained only once on old data. It needs retraining to adapt.
Your Task
Improve the model's accuracy on new data to at least 80% by applying retraining strategies.
You can only retrain the model using a combination of old and new data.
You cannot change the model architecture.
You must keep training time reasonable (no more than double the original training time).
Hint 1
Hint 2
Hint 3
Solution
ML Python
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Simulate old data
np.random.seed(42)
X_old = np.random.randn(1000, 10)
y_old = (X_old[:, 0] + X_old[:, 1] > 0).astype(int)

# Simulate new data with a slight shift
X_new = np.random.randn(300, 10) + 0.5
y_new = (X_new[:, 0] + X_new[:, 1] > 0).astype(int)

# Initial training on old data
model = LogisticRegression(max_iter=200)
model.fit(X_old, y_old)

# Evaluate on new data before retraining
y_pred_before = model.predict(X_new)
acc_before = accuracy_score(y_new, y_pred_before)

# Combine old and new data for retraining
X_combined = np.vstack((X_old, X_new))
y_combined = np.hstack((y_old, y_new))

# Retrain model with combined data
model_retrained = LogisticRegression(max_iter=200)
model_retrained.fit(X_combined, y_combined)

# Evaluate on new data after retraining
y_pred_after = model_retrained.predict(X_new)
acc_after = accuracy_score(y_new, y_pred_after)

print(f"Accuracy before retraining on new data: {acc_before:.2f}")
print(f"Accuracy after retraining on new data: {acc_after:.2f}")
Added new data to the training set to include recent examples.
Retrained the model on combined old and new data to improve generalization.
Kept the same model architecture and training iterations.
Results Interpretation

Before retraining: Accuracy on new data was 65%, showing poor adaptation.

After retraining: Accuracy improved to 82%, showing better generalization to new data.

Retraining with updated data helps models adapt to changes and improves performance on new data without changing the model structure.
Bonus Experiment
Try fine-tuning the model by training only on new data starting from the old model's parameters.
💡 Hint
Use a smaller learning rate and fewer iterations to avoid forgetting old knowledge.

Practice

(1/5)
1. What is the main purpose of retraining a machine learning model?
easy
A. To remove features from the model permanently
B. To make the model run faster on old data
C. To reduce the size of the training dataset
D. To update the model with new data and keep it accurate

Solution

  1. Step 1: Understand retraining purpose

    Retraining updates the model using new data to maintain or improve accuracy.
  2. Step 2: Compare options

    Options B, C, and D do not describe retraining goals; only A matches the purpose.
  3. Final Answer:

    To update the model with new data and keep it accurate -> Option D
  4. Quick Check:

    Retraining = update model with new data [OK]
Hint: Retraining means learning from new data to stay accurate [OK]
Common Mistakes:
  • Thinking retraining speeds up old data processing
  • Confusing retraining with data reduction
  • Believing retraining removes features
2. Which of the following is the correct way to fine-tune a pretrained model in Python using TensorFlow?
easy
A. model.fit(new_data, epochs=5, initial_epoch=0)
B. model.train(new_data, epochs=5)
C. model.evaluate(new_data, epochs=5)
D. model.fit(new_data, epochs=5, initial_epoch=existing_epochs)

Solution

  1. Step 1: Understand fine-tuning syntax

    Fine-tuning a pretrained model typically uses model.fit starting from epoch 0 after loading pretrained weights.
  2. Step 2: Analyze options

    A uses non-existent method 'train'. C uses evaluate, which doesn't train and lacks epochs param. D risks initial_epoch >= epochs error. B correctly trains with model.fit from epoch 0.
  3. Final Answer:

    model.fit(new_data, epochs=5, initial_epoch=0) -> Option A
  4. Quick Check:

    Fine-tune = model.fit(new_data, epochs=N, initial_epoch=0) [OK]
Hint: Fine-tune pretrained with model.fit(new_data, epochs=N) [OK]
Common Mistakes:
  • Using model.train instead of model.fit
  • Setting initial_epoch=existing_epochs causing error
  • Confusing evaluation with training
3. Consider this Python code snippet for incremental retraining:
old_accuracy = 0.85
model.fit(new_data, epochs=3)
new_accuracy = 0.88
improvement = new_accuracy - old_accuracy
print(improvement)
What will be the printed output?
medium
A. 0.85
B. 0.88
C. 0.03
D. 3

Solution

  1. Step 1: Calculate improvement

    Improvement is new_accuracy minus old_accuracy: 0.88 - 0.85 = 0.03.
  2. Step 2: Understand print output

    The print statement outputs the improvement variable, which is 0.03.
  3. Final Answer:

    0.03 -> Option C
  4. Quick Check:

    0.88 - 0.85 = 0.03 [OK]
Hint: Subtract old accuracy from new to find improvement [OK]
Common Mistakes:
  • Printing new_accuracy instead of improvement
  • Confusing epochs with accuracy values
  • Printing old_accuracy by mistake
4. You have this code snippet for retraining a model incrementally:
model.fit(new_data, epochs=5)
model.fit(new_data, epochs=3, initial_epoch=5)
But the second fit call throws an error. What is the likely cause?
medium
A. initial_epoch should be less than epochs
B. initial_epoch cannot be greater than or equal to epochs
C. You must reset the model before second fit
D. epochs must be the same in both fit calls

Solution

  1. Step 1: Understand initial_epoch and epochs relation

    initial_epoch must be less than epochs in the current fit call to define the training range properly.
  2. Step 2: Analyze the error cause

    Here, initial_epoch=5 is greater than epochs=3, which is invalid and causes an error.
  3. Final Answer:

    initial_epoch cannot be greater than or equal to epochs -> Option B
  4. Quick Check:

    initial_epoch < epochs required [OK]
Hint: initial_epoch must be less than epochs in fit call [OK]
Common Mistakes:
  • Thinking model reset is needed
  • Assuming epochs must match both calls
  • Setting initial_epoch greater or equal to epochs
5. You have a model trained on data from 2020. New data from 2023 shows some feature distributions changed. Which retraining strategy best balances training time and model accuracy?
hard
A. Fine-tuning the existing model on new data with a low learning rate
B. Full retraining from scratch with combined old and new data
C. Incremental retraining only on new data without old data
D. No retraining; use the old model as is

Solution

  1. Step 1: Consider data changes and retraining options

    Feature distribution changed, so model needs updating but full retraining is costly.
  2. Step 2: Evaluate strategies

    Full retraining (A) is accurate but slow. Incremental retraining (C) risks forgetting old data. No retraining (D) ignores changes. Fine-tuning (B) updates model efficiently with new data.
  3. Final Answer:

    Fine-tuning the existing model on new data with a low learning rate -> Option A
  4. Quick Check:

    Fine-tune balances accuracy and training time [OK]
Hint: Fine-tune to update model efficiently with new data [OK]
Common Mistakes:
  • Choosing full retraining despite high cost
  • Ignoring old data in incremental retraining
  • Skipping retraining when data changes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard