Testování modelů

Developing Machine Learning Models for Production

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Individuální vs. skupinová spravedlnost

Individuální spravedlnost

Podobné osoby posuzujte podobně.

  • Např. nabídněte srovnatelné pracovní příležitosti osobám s podobnými zkušenostmi.

Skupinová spravedlnost

Zacházejte s různými skupinami rovnocenně.

  • Např. nediskriminujte osoby určitých rasových či etnických skupin v modelech pro přijímání na školy.
Developing Machine Learning Models for Production

Holdout testování

  • Holdout testování ověřuje spolehlivost modelu na samostatné datové sadě
  • Hodnotí výkon na netrénovaných datech, podobně jako při trénování
  • Odhaluje problémy jako přetrénování nebo podtrénování

Roboti pracující s daty

Developing Machine Learning Models for Production

Hledání driftu modelu

Konceptuální drift

  • Změna vztahu mezi příznaky a odezvou
    • Např. algoritmus analýzy sentimentu
      • Slova mohou měnit význam (označení něčeho jako „sick" může být pochvala)

Predikční drift

  • Změna v distribuci predikcí modelu
    • Např. dočasný výpadek způsobí nárůst záměru „outage" u chatbota
    • Nic není přímo „špatně", ale drift může zpomalit odezvu pro uživatele
Developing Machine Learning Models for Production

Příklad hledání driftu modelu

Příprava:

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

Trénování modelu:

# 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}")

Testování driftu:

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.")
Developing Machine Learning Models for Production

Náklady složitých modelů vs. základní modely

  • Složité modely jsou nákladnější a mohou ovlivnit efektivitu
  • Latence měří dobu zpracování jednoho vstupu a generování predikce
  • Propustnost měří počet predikcí, které model zvládne za daný čas
  • Testujte latenci a propustnost, abyste určili vhodnou složitost modelu
  • Cílem je rovnováha mezi přesností a efektivitou
Developing Machine Learning Models for Production

Pojďme si procvičit!

Developing Machine Learning Models for Production

Preparing Video For Download...