Testning av modeller

Att utveckla maskininlärningsmodeller för produktion

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Individuell rättvisa vs grupprättvisa

Individuell rättvisa

Behandla liknande individer på liknande sätt.

  • T.ex. erbjud liknande jobbmöjligheter till individer med liknande erfarenheter.

Grupprättvisa

Behandla olika grupper lika.

  • T.ex. diskriminera inte individer baserat på ras eller etnicitet i antagningsmodeller.
Att utveckla maskininlärningsmodeller för produktion

Holdout-testning

  • Holdout-testning kontrollerar modellens tillförlitlighet med en separat datamängd
  • Utvärderar prestanda på otränad data, precis som vid träning
  • Identifierar problem som överanpassning eller underanpassning

robots using data

Att utveckla maskininlärningsmodeller för produktion

Identifiera modelldrift

Konceptdrift

  • En förändring i sambandet mellan särdragen och utfallet
    • T.ex. en algoritm för sentimentanalys
      • Ord kan skifta i betydelse (att kalla något "sjukt" kan vara positivt)

Prediktionsdrift

  • En förändring i modellens prediktionsfördelning
    • T.ex. ett tillfälligt avbrott leder till fler "avbrott"-avsikter i din chatbot
    • Inget är egentligen "fel", men driften kan ge långsammare svarstider för användare
Att utveckla maskininlärningsmodeller för produktion

Exempel på att identifiera modelldrift

Förberedelse:

# Import necessary libraries and split data
X_train, X_test, y_train, y_test = ...

Anpassa modellen:

# Train a classifier on the training data
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)

# Calculate the accuracy on test data
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

Testa för drift senare:

X_test_drift = X_test + 1.0  # Simulate data drift
# Calculate the accuracy on drifted data
y_pred_drift = clf.predict(X_test_drift)
accuracy_drift = accuracy_score(
    y_test, y_pred_drift)
print(f"Accuracy with drift: {accuracy_drift}")

# Drift detection threshold based on the accuracy
drift_threshold = accuracy * 0.9

# Check for drop in accuracy on the drifted data
if accuracy_drift < drift_threshold:
    print("Concept drift detected!")
else:
    print("No concept drift detected.")
Att utveckla maskininlärningsmodeller för produktion

Komplexa modeller vs baslinjemodeller – kostnader

  • Komplexa modeller är dyrare och kan påverka modellens effektivitet
  • Latens mäter tiden för att bearbeta en enskild indata och generera en prediktion
  • Genomströmning mäter hur många prediktioner en modell kan göra per tidsenhet
  • Testa latens och genomströmning för att avgöra lämplig komplexitetsnivå
  • Målet är en balans mellan noggrannhet och effektivitet
Att utveckla maskininlärningsmodeller för produktion

Nu kör vi en övning!

Att utveckla maskininlärningsmodeller för produktion

Preparing Video For Download...