Обзор ML-пайплайна

Системы ML принципиально отличаются от обычного ПО. Вместо явных правил ML-модели обучаются на данных, создавая уникальные вызовы тестирования на каждом этапе.

graph LR A[Сбор данных] --> B[Обработка] B --> C[Feature Engineering] C --> D[Обучение модели] D --> E[Оценка] E --> F[Деплой] F --> G[Мониторинг] G -->|Data Drift| A

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

ТестЧто проверять
ПолнотаПропущенные значения, доля null по фичам
СогласованностьОдна сущность имеет одинаковое представление
СвежестьДанные достаточно актуальны
РаспределениеРаспределения фич в ожидаемых диапазонах
ДублиНет непреднамеренных дублей
МеткиОбучающие метки точны и согласованы

Тестирование Feature Engineering

  • Значения в ожидаемых диапазонах
  • Детерминированное вычисление
  • Отсутствие утечки данных (data leakage)
  • Feature importance соответствует доменным знаниям

Оценка модели

Стандартные метрики

МетрикаПрименениеФормула
AccuracyСбалансированные классы(TP + TN) / Total
PrecisionЛожные срабатывания дорого стоятTP / (TP + FP)
RecallПропуски дорого стоятTP / (TP + FN)
F1 ScoreБаланс precision-recall2 * P * R / (P + R)

За пределами Accuracy

  • Оценка по сегментам: Производительность по подгруппам данных
  • Edge cases: Состязательные входы, данные вне распределения
  • Регрессионное тестирование: Новая версия не хуже предыдущей
  • Робастность: Малые возмущения не должны кардинально менять выходы

Тестирование предвзятости и справедливости

  • Демографический паритет: Схожие доли положительных предсказаний между группами
  • Равенство возможностей: Схожие доли истинно положительных между группами
  • Калибровка: Предсказанные вероятности точны для всех групп

Продвинутое тестирование ML

Мониторинг дрейфа данных

  • Feature drift: Распределения входных фич смещаются
  • Concept drift: Связь между фичами и целевой переменной меняется
  • Статистические тесты (Колмогоров-Смирнов, PSI)
  • Автоматические оповещения и пайплайны переобучения

Тестирование Serving

  • Задержка инференса (P50, P95, P99) под нагрузкой
  • Пропускная способность (предсказаний в секунду)
  • Версионирование и постепенный rollout
  • A/B-тестирование между версиями
  • Fallback на предыдущую модель

Безопасность ML

  • Состязательные атаки (adversarial attacks)
  • Извлечение модели
  • Отравление обучающих данных
  • Приватность и membership inference

Практическое задание

Разработайте тест-план для ML-модели кредитного скоринга:

  1. Качество данных: Проверить полноту, выявить историческую предвзятость
  2. Accuracy: Оценить precision, recall и AUC на тестовом наборе
  3. Предвзятость: Проверить справедливость по возрасту, полу и региону
  4. Робастность: Edge cases (нулевой доход, экстремальный кредитный лимит)
  5. Мониторинг: Определить метрики дрейфа и триггеры переобучения
Руководство по решению

Тесты предвзятости:

  • Доли одобрений по полу: разница < 5%
  • Доли одобрений по возрасту: ни у одной группы не должно быть > 2x отказов
  • Проверить, что объяснения модели (SHAP) не зависят от защищённых атрибутов

Тесты робастности:

  • Доход = $0: корректная обработка, без крашей
  • Использование кредита = 100%: разумный (вероятно, низкий) скоринг

Советы из практики

  1. Тестируйте данные перед тестированием моделей — большинство ML-багов — это баги данных
  2. Мониторьте производительность в продакшене непрерывно — accuracy деградирует незаметно
  3. Тестируйте предвзятость на реальных демографических данных — синтетика может не выявить реальные смещения
  4. Версионируйте всё — данные, фичи, модели и конфигурации должны быть воспроизводимы
  5. Сравнивайте новые модели с базовыми — более простая модель может быть предпочтительнее

Ключевые выводы

  1. Тестирование ML требует проверки всего пайплайна: данные, фичи, модель, serving, мониторинг
  2. Одной accuracy недостаточно — справедливость, робастность и интерпретируемость столь же важны
  3. Дрейф данных — тихий убийца ML-моделей — непрерывный мониторинг необходим
  4. Тестирование предвзятости ML — не опция — оно имеет юридические, этические и бизнес-последствия