Как проверять корректность данных?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
Корректность данных проверяют на нескольких уровнях: схема, типы, диапазоны, пропуски, дубликаты, согласованность между полями и статистические аномалии. В ML важно валидировать данные до обучения и после каждого этапа пайплайна, чтобы не допустить утечек, смещения и падения качества модели. Хороший ответ обычно включает автоматические проверки, правила качества и мониторинг дрейфа.
Определение:
Проверка корректности данных — это набор правил и процедур, которые подтверждают, что данные подходят для использования: они структурно верны, содержательно правдоподобны и согласованы с ожиданиями системы или модели.
Обычно проверяют:
- формат и типы полей;
- допустимые диапазоны значений;
- обязательность и долю пропусков;
- уникальность ключей;
- согласованность зависимых полей;
- выбросы, аномалии и дрейф распределения.
Пример использования:
Например, перед обучением модели скоринга можно проверить, что:
- возраст находится в диапазоне от 18 до 100;
- поле
incomeне отрицательное; date_of_birthне позже текущей даты;- идентификатор клиента уникален;
- доля пропусков в критичных признаках не превышает порог.
import pandas as pd
def validate_clients(df: pd.DataFrame) -> list[str]:
errors = []
if df["client_id"].duplicated().any():
errors.append("client_id содержит дубликаты")
if not df["age"].between(18, 100).all():
errors.append("age вне допустимого диапазона")
if (df["income"] < 0).any():
errors.append("income содержит отрицательные значения")
if df["date_of_birth"].gt(pd.Timestamp.today()).any():
errors.append("date_of_birth в будущем")
missing_rate = df["income"].isna().mean()
if missing_rate > 0.05:
errors.append("доля пропусков в income выше 5%")
return errors
Пояснение кода:
Код не требует сложной логики — это пример прикладной валидации данных по бизнес-правилам.
Шаги:
- Проверяется уникальность
client_id, чтобы не было повторяющихся записей. - Проверяется диапазон
age, так как значения вне рамок указывают на ошибку загрузки или некорректный источник. - Проверяется, что
incomeне отрицательный. - Проверяется, что дата рождения не лежит в будущем.
- Считается доля пропусков в
income; если она выше порога, данные считаются некорректными или требующими обработки. - Функция возвращает список ошибок, чтобы их можно было логировать, валидировать в пайплайне или остановить обучение.
Ключевые моменты:
- Корректность данных — это не только “нет
NaN”, а проверка схемы, логики и распределений. - Для ML особенно важны утечки данных, несогласованность признаков и дрейф между train и production.
- Проверки лучше автоматизировать и запускать на каждом этапе пайплайна.
- Полезно разделять ошибки на критичные, которые блокируют процесс, и некритичные, которые только логируются.
- Для зрелых систем используют data validation, мониторинг качества данных и алерты по отклонениям.