Обзор 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-recall | 2 * 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-модели кредитного скоринга:
- Качество данных: Проверить полноту, выявить историческую предвзятость
- Accuracy: Оценить precision, recall и AUC на тестовом наборе
- Предвзятость: Проверить справедливость по возрасту, полу и региону
- Робастность: Edge cases (нулевой доход, экстремальный кредитный лимит)
- Мониторинг: Определить метрики дрейфа и триггеры переобучения
Руководство по решению
Тесты предвзятости:
- Доли одобрений по полу: разница < 5%
- Доли одобрений по возрасту: ни у одной группы не должно быть > 2x отказов
- Проверить, что объяснения модели (SHAP) не зависят от защищённых атрибутов
Тесты робастности:
- Доход = $0: корректная обработка, без крашей
- Использование кредита = 100%: разумный (вероятно, низкий) скоринг
Советы из практики
- Тестируйте данные перед тестированием моделей — большинство ML-багов — это баги данных
- Мониторьте производительность в продакшене непрерывно — accuracy деградирует незаметно
- Тестируйте предвзятость на реальных демографических данных — синтетика может не выявить реальные смещения
- Версионируйте всё — данные, фичи, модели и конфигурации должны быть воспроизводимы
- Сравнивайте новые модели с базовыми — более простая модель может быть предпочтительнее
Ключевые выводы
- Тестирование ML требует проверки всего пайплайна: данные, фичи, модель, serving, мониторинг
- Одной accuracy недостаточно — справедливость, робастность и интерпретируемость столь же важны
- Дрейф данных — тихий убийца ML-моделей — непрерывный мониторинг необходим
- Тестирование предвзятости ML — не опция — оно имеет юридические, этические и бизнес-последствия