Тестирование данных

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

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Валидация данных и тесты схемы

  • Тесты валидации данных выявляют пропуски, несоответствия и аномалии
    • Например, обнаружение выбросов
  • Тесты схемы проверяют форматы и типы данных

    • Например, «время до ценности» должно быть целым числом в секундах, а не в минутах
  • Инструменты вроде Great Expectations помогают автоматизировать этот процесс

логотип great expectations

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

За пределами простого тестирования

  • Тесты данных и схемы выявляют базовые проблемы
  • Более сложные тесты на соответствие ожиданиям проверяют нетривиальные случаи
    • Проверка вхождения значений в заданный диапазон
    • Проверка наличия известных паттернов и трендов
Разработка моделей машинного обучения для продакшена

Тесты на соответствие ожиданиям

  • Разновидность теста валидации данных
  • Проверяет, соответствуют ли данные заданным «ожиданиям» — определённым пользователем или системой
    • Например, ожидаемое время на сайте — около 4 минут со стандартным отклонением 1 минута
    • Например, даты прошлых визитов пациента должны быть раньше текущего момента
Разработка моделей машинного обучения для продакшена

Тесты важности признаков

  • Тесты важности признаков определяют наиболее значимые признаки в ML-модели
  • Пример: перестановочная важность
    • Значения признака случайно перемешиваются, и замеряется снижение качества модели

столбчатая диаграмма

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

Пример перестановочной важности

Подготовка:

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)

Запуск теста перестановочной важности:

# 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...