Sobes.tech
Назад к вопросам
Middle
10

Как проверять корректность данных?

Компании, где спрашивали
OZONOZON

Ответ от нейросети

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

Пояснение кода:

Код не требует сложной логики — это пример прикладной валидации данных по бизнес-правилам.

Шаги:

  1. Проверяется уникальность client_id, чтобы не было повторяющихся записей.
  2. Проверяется диапазон age, так как значения вне рамок указывают на ошибку загрузки или некорректный источник.
  3. Проверяется, что income не отрицательный.
  4. Проверяется, что дата рождения не лежит в будущем.
  5. Считается доля пропусков в income; если она выше порога, данные считаются некорректными или требующими обработки.
  6. Функция возвращает список ошибок, чтобы их можно было логировать, валидировать в пайплайне или остановить обучение.

Ключевые моменты:

  • Корректность данных — это не только “нет NaN”, а проверка схемы, логики и распределений.
  • Для ML особенно важны утечки данных, несогласованность признаков и дрейф между train и production.
  • Проверки лучше автоматизировать и запускать на каждом этапе пайплайна.
  • Полезно разделять ошибки на критичные, которые блокируют процесс, и некритичные, которые только логируются.
  • Для зрелых систем используют data validation, мониторинг качества данных и алерты по отклонениям.