Testning av data

Att utveckla maskininlärningsmodeller för produktion

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Datavalidering och schematester

  • Datavalideringstester söker efter saknade värden, inkonsistenser och avvikande data
    • T.ex. identifiering av outliers
  • Schematester kontrollerar förväntade dataformat och datatyper

    • T.ex. att "time to value" är ett heltal i sekunder, inte minuter
  • Verktyg som Great Expectations hjälper till att automatisera processen

great expectations logo

Att utveckla maskininlärningsmodeller för produktion

Bortom enkel testning

  • Data- och schematester söker efter grundläggande problem
  • Mer avancerade tester, som förväntanstester, letar efter mer komplexa problem
    • Kontrollerar om värden ligger inom ett visst intervall
    • Kontrollerar kända mönster och trender
Att utveckla maskininlärningsmodeller för produktion

Förväntanstester

  • En typ av datavalideringstest
  • Kontrollerar att data uppfyller vissa "förväntningar" definierade av användaren eller systemet
    • T.ex. att tid på webbplatsen är ungefär 4 minuter med en standardavvikelse på 1 minut
    • T.ex. att datum för en patients tidigare besök ligger före aktuell tidpunkt
Att utveckla maskininlärningsmodeller för produktion

Särdragsviktstester

  • Särdragsviktstester identifierar de viktigaste särdragen i en ML-modell
  • Exempel: Permutationsvikt
    • Permuterar särdragsvärden slumpmässigt och mäter hur mycket modellens prestanda minskar

stapeldiagram

Att utveckla maskininlärningsmodeller för produktion

Exempel på permutationsvikt

Inställning:

import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importance
# Train a random forest classifier (assuming we have some data)
model = RandomForestClassifier().fit(X_train, y_train)

Kör permutationsviktstestet:

# Calculate feature importances using permutation importance
results = permutation_importance(model, X_test, y_test, n_repeats=10, random_state=42)
# Print the feature importances
feature_names = ['feature_1', 'feature_2', 'feature_3', ...]
importances = results.importances_mean
for i in range(len(feature_names)):
    print(f'{feature_names[i]}: {importances[i]}')
Att utveckla maskininlärningsmodeller för produktion

Söka efter datadrift

Datadrift

  • Kallas ibland särdragsdrift
  • En förändring i fördelningen av en modells indata
  • T.ex. att fler börjar använda ett nytt begrepp kopplat till en ny produkt och en chatbot inte känner igen det

Etikettdrift

  • En förändring i etikettfördelningen
  • T.ex. att användare i mindre utsträckning frågar om returer och i stället frågar om returstatus
Att utveckla maskininlärningsmodeller för produktion

Nu kör vi en övning!

Att utveckla maskininlärningsmodeller för produktion

Preparing Video For Download...