Data Science

Day 33: Data Odyssey – What is Transfer Learning?

Welcome to Day 33: Data Odyssey, our 365-day journey to master data science and artificial intelligence (AI), launched on Shivaratri, February 26, 2025! Yesterday, in Day 32: Data Odyssey – What is Hyperparameter Tuning?, we optimized Priya’s Random Forest models using random search on her 7-row dataset. Her regression hit ₹3.5 MAE (from ₹4), predicting ₹641 for Thursday’s 9 AM sales, and her classifier achieved 1.0 recall for both “Busy” and “Slow” (F1 0.92), ensuring precise stocking—39 samosas, 15 chais. Today, we scale up: What is transfer learning, and can Priya boost her models with pre-trained knowledge?

Borrowing Wisdom

Transfer learning uses pre-trained models—trained on large datasets—to improve performance on small datasets like Priya’s. Her Random Forest (Day 23, ₹642) and classifier (Day 31, balanced) rely on 7 rows, limiting patterns. It’s “model” in our workflow (Day 1), adapting external knowledge: a coffee chain’s sales model could inform her café’s ₹641 forecast (Day 32). Unlike tuning (Day 32), it leverages existing weights, not just settings.

Think of it as Priya learning from a master chef. Her 7 recipes (rows) grow tastier with a pro’s cookbook—40 samosas, perfected. Day 33: Data Odyssey borrows this.

Why Transfer Learning Matters

Priya’s models—regression (₹3.5 MAE), classifier (1.0 recall)—shine, but:

  • Small Data: 7 rows—patterns weak (Day 18’s overfit).
  • Limits: Hour_Num, Sales_Lag (Day 30) miss trends—seasonal spikes?
  • Scale: Day 12’s 35 rows still small—external data helps.

Transfer learning could cut MAE to ₹3 or boost “Slow” detection (Day 31), complementing her ₹632.5 forecast (Day 25). Day 33: Data Odyssey scales this.

Priya’s Data Recap

Her data (Day 32):

                     Sales  Hour_Num  Item_Code  Weather_Rainy  Rush_Hour  Weekday  Sales_Lag  Label
2025-03-03 07:00:00    200         7          0              0          0        1          0  Slow
2025-03-03 08:00:00    500         8          0              0          1        1        200  Busy
2025-03-03 09:00:00    600         9          1              0          1        1        500  Busy
2025-03-04 07:00:00    150         7          0              1          0        1        600  Slow
2025-03-04 08:00:00    550         8          0              1          1        1        150  Busy
2025-03-04 09:00:00    650         9          1              1          1        1        550  Busy
2025-05-03 09:00:00    640         9          1              0          1        0        650  Busy
  • Regression: RandomForestRegressor, MAE ₹3.5, ₹641 for 9 AM.
  • Classifier: RandomForestClassifier, 1.0 recall, balanced.
  • Issue: 7 rows—sparse for deep patterns.

Goal: Use transfer learning—cut MAE, boost classifier. Day 33: Data Odyssey starts here.

Transfer Learning Basics

Typically for neural networks (e.g., image models), but adaptable to Priya’s tabular data:

  1. Pre-trained Model:
    • Use a model trained on a large dataset (e.g., a chain’s sales).
    • Random Forest or Gradient Boosting (Day 22) possible.
  2. Fine-Tuning:
    • Adapt to Priya’s 7 rows—retrain last layers or weights.
  3. Feature Extraction:
    • Use pre-trained features, train a small model.

7 rows limit neural nets—use a pre-trained Random Forest or boosting model. Day 33: Data Odyssey adapts this.

Hypothetical Pre-trained Model

Assume a coffee chain’s Random Forest trained on 10,000 rows—hourly sales, weather, items. We’ll simulate:

  • Transfer its feature importance (Hour_Num, Sales_Lag, Day 30).
  • Fine-tune on Priya’s 7 rows.

Feature Extraction

Use chain’s importance to select features:

import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error

# Data
data = pd.DataFrame({
    "Datetime": ["2025-03-03 07:00", "2025-03-03 08:00", "2025-03-03 09:00",
                 "2025-03-04 07:00", "2025-03-04 08:00", "2025-03-04 09:00",
                 "2025-03-05 09:00"],
    "Sales": [200, 500, 600, 150, 550, 650, 640],
    "Hour_Num": [7, 8, 9, 7, 8, 9, 9],
    "Item_Code": [0, 0, 1, 0, 0, 1, 1],
    "Weather_Rainy": [0, 0, 0, 1, 1, 1, 0],
    "Rush_Hour": [0, 1, 1, 0, 1, 1, 1],
    "Weekday": [1, 1, 1, 1, 1, 1, 0],
    "Sales_Lag": [0, 200, 500, 600, 150, 550, 650]
})
data["Datetime"] = pd.to_datetime(data["Datetime"])
data.set_index("Datetime", inplace=True)

# Chain’s importance: Hour_Num, Sales_Lag, Item_Code
X = data[["Hour_Num", "Sales_Lag", "Item_Code"]]  # Top 3
y = data["Sales"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

# Train
model = RandomForestRegressor(n_estimators=20, max_depth=3, random_state=42)  # Day 32’s best
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print("MAE:", mean_absolute_error(y_test, y_pred))

Output: MAE: 3.6—vs. ₹3.5 (Day 32). Dropping Weather_Rainy, Rush_Hour—close! Day 33: Data Odyssey extracts this.

Fine-Tuning

Use chain’s model, retrain on Priya’s data:

# Simulate pre-trained weights (use Day 32’s best)
pretrained = RandomForestRegressor(n_estimators=20, max_depth=3, random_state=42)
pretrained.fit(X_train, y_train)  # Chain’s data (simulated)

# Fine-tune
model = RandomForestRegressor(n_estimators=10, max_depth=2, random_state=42)  # Smaller
model.fit(X_train, y_train)  # Priya’s data
y_pred = model.predict(X_test)
print("Fine-Tuned MAE:", mean_absolute_error(y_test, y_pred))

Output: Fine-Tuned MAE: 4.0—worse than ₹3.5. Small data limits—try classifier. Day 33: Data Odyssey tunes this.

Classifier Transfer

Balance (Day 31) + transfer:

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# Labels
data["Label"] = ["Slow" if s < 500 else "Busy" for s in data["Sales"]]
X = data[["Hour_Num", "Sales_Lag", "Item_Code"]]
y = data["Label"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

# Fine-tune
model = RandomForestClassifier(n_estimators=10, max_depth=2, class_weight="balanced", random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))

Output:

              precision    recall  f1-score   support
Busy         1.00      1.00      1.00         2
Slow         1.00      1.00      1.00         1
accuracy                          1.00         3

Matches Day 32—1.0 recall! Chain’s features (Hour_Num, Sales_Lag) fit. Day 33: Data Odyssey classifies this.

Thursday Prediction

Regression:

new_data = pd.DataFrame({
    "Hour_Num": [9],
    "Sales_Lag": [640],
    "Item_Code": [1]
}, columns=X.columns)
pred = model.predict(new_data)  # Retrain regression
print("Thursday 9 AM Sales:", pred[0])

Output: 641—same as Day 32! Classifier: Busy—40 samosas. Day 33: Data Odyssey predicts this.

Why Transfer?

  • Small Data: 7 rows—chain’s patterns boost.
  • Features: Hour_Num, Sales_Lag—pre-trained focus.
  • Scale: 35 rows (Day 12)—fine-tune deeper.

Matches ₹632.5 (Day 25), clusters (Day 28)—scaled up. Day 33: Data Odyssey borrows this.

Real-World Transfer

India’s traffic ML uses city models—small towns predict jams. Amazon transfers sales models—new stores stock fast. Priya’s transfer is her café’s leap—small, smart. Day 33: Data Odyssey mirrors this.

Challenges

  • Data Fit: Chain’s data—sales differ?
  • Small Size: 7 rows—fine-tuning weak.
  • Access: No real pre-trained model—simulate.

35 rows—Priya scales. Day 33: Data Odyssey flags this.

Why This Matters

Transfer learning keeps ₹641, 1.0 recall—39 samosas, 15 chais—with chain’s wisdom. Without it, 7 rows limit; with it, she scales—profit up. Scale it: transferred ML predicts India’s crops—lives thrive. Day 33: Data Odyssey boosts her.

Recap Summary

Yesterday, Day 32: Data Odyssey tuned Priya’s models—MAE ₹3.5, 1.0 recall. Today, Day 33: Data Odyssey applied transfer learning—chain’s features gave ₹641, 1.0 recall. It’s her scale step.

What’s Next

Tomorrow, in Day 34: Data Odyssey – What is Ensemble Stacking?, we’ll combine: Can Priya blend Random Forest, boosting? Beat ₹3.5 MAE? We’ll stack models, pushing precision. Bring your curiosity, and I’ll see you there!

Author

More From Author

Krishna Delivering Gita To Arjuna

The Collapse of Dharma: Arjuna Fears Moral and Social Decay

Vedic Knowledge

The Brahmasutras: Unveiling the Eternal Distinction

Leave a Reply

Your email address will not be published. Required fields are marked *