Тестування даних

Розроблення моделей машинного навчання для продакшну

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Тести валідації даних і схеми

  • Тести валідації даних виявляють пропуски, неузгодженості та аномалії
    • Напр., виявлення викидів
  • Тести схеми перевіряють очікувані формати й типи даних

    • Напр., переконайтеся, що "time to value" — це ціле число в секундах, а не хвилинах
  • Інструменти на кшталт Great Expectations автоматизують цей процес

логотип great expectations

Розроблення моделей машинного навчання для продакшну

Поза межами простого тестування

  • Тести даних і схеми перевіряють базові проблеми
  • Складніші тести, як-от expectation tests, шукають складніші збої
    • Перевірка, чи значення в заданому діапазоні
    • Перевірка відомих шаблонів/трендів
Розроблення моделей машинного навчання для продакшну

Expectation tests

  • Різновид тесту валідації даних
  • Переконайтеся, що дані відповідають певним "очікуванням", визначеним користувачем або системою
    • Напр., очікувати час на сайті близько 4 хвилин зі стандартним відхиленням 1 хвилина
    • Напр., очікувати, що дати минулих візитів пацієнта — до поточного часу
Розроблення моделей машинного навчання для продакшну

Тести важливості ознак

  • Тести важливості ознак визначають найважливіші ознаки в моделі ML
  • Приклад: Permutation importance
    • Випадково перемішує значення ознаки та міряє, наскільки падає якість моделі

стовпчикова діаграма

Розроблення моделей машинного навчання для продакшну

Приклад permutation importance

Налаштування:

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)

Запуск тесту 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]}')
Розроблення моделей машинного навчання для продакшну

Виявлення зсуву даних

Зсув даних

  • Іноді зветься зсувом ознак
  • Зміна розподілу вхідних даних моделі
  • Напр., дедалі більше людей уживають новий термін для нового продукту, і чат-бот «чухається в потилиці»

Зсув міток

  • Зміна розподілу міток
  • Напр., зменшується кількість запитів на повернення і натомість більшає запитів про статус повернення
Розроблення моделей машинного навчання для продакшну

Давайте потренуємось!

Розроблення моделей машинного навчання для продакшну

Preparing Video For Download...