Testowanie danych

Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Walidacja danych i testy schematu

  • Testy walidacji danych wykrywają brakujące wartości, niespójności i anomalie
    • Np. wykrywanie wartości odstających
  • Testy schematu sprawdzają oczekiwane formaty i typy danych

    • Np. czy „czas do wartości" jest liczbą całkowitą w sekundach, a nie minutach
  • Narzędzia takie jak Great Expectations automatyzują ten proces

logo Great Expectations

Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Testowanie zaawansowane

  • Testy danych i schematu wykrywają podstawowe problemy
  • Bardziej zaawansowane testy oczekiwań szukają złożonych problemów
    • Sprawdzanie, czy wartości mieszczą się w określonym zakresie
    • Sprawdzanie znanych wzorców/trendów
Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Testy oczekiwań

  • Rodzaj testu walidacji danych
  • Sprawdza, czy dane spełniają zdefiniowane „oczekiwania"
    • Np. czas spędzony na stronie wynosi ok. 4 minut z odchyleniem standardowym 1 minuta
    • Np. daty poprzednich wizyt pacjenta są wcześniejsze niż bieżąca data
Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Testy ważności cech

  • Testy ważności cech identyfikują najważniejsze cechy w modelu ML
  • Przykład: Permutation importance
    • Losowo permutuje wartości cech i mierzy spadek wydajności modelu

wykres słupkowy

Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Przykład permutation importance

Konfiguracja:

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)

Uruchomienie testu permutation importance:

# 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]}')
Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Wykrywanie dryfu danych

Dryf danych

  • Nazywany też dryfem cech
  • Zmiana w rozkładzie danych wejściowych modelu
  • Np. użytkownicy zaczęli używać nowego terminu dotyczącego nowego produktu, a chatbot sobie z tym nie radzi

Dryf etykiet

  • Zmiana w rozkładzie etykiet
  • Np. użytkownicy rzadziej pytają o zwroty, a częściej o status swoich zwrotów
Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Czas na ćwiczenia!

Tworzenie modeli uczenia maszynowego na potrzeby produkcji

Preparing Video For Download...