Есть ли данные для проверки решения или нужно создавать тестовые данные самостоятельно?
Что проверяют
Чаще этот вопрос задаёте вы сами, получив кейс или тестовое, и интервьюер смотрит, уточняете ли вы условия до того, как писать код. Если его задают вам, проверяют другое: понимаете ли вы, чем проверка кода отличается от оценки качества модели. Следом обычно спрашивают, как вы разделите данные и какую метрику выберете.
Как отвечать
Сильный ход: задать вопрос и сразу пояснить, зачем. От ответа зависит, что вы вообще сможете доказать своим решением.
Если данные есть, уточните остальное:
- разметка и отложенная выборка: есть ли размеченный тест, которым проверят решение, и можно ли в него заглядывать;
- время: если данные временные, делите по дате или через
TimeSeriesSplit, случайное разбиение даст утечку будущего в обучение; - группы: если у одного пользователя много строк, нужен
GroupKFold, иначе модель запомнит пользователя; - баланс классов: при редком положительном классе нужны стратификация и метрики вроде PR-AUC или F1, accuracy тут вводит в заблуждение.
Если данных нет, синтетика всё равно полезна, но для другой задачи. make_classification и make_regression из scikit-learn, Faker для табличных полей, небольшие фикстуры с краевыми случаями (пропуски, дубли, неверные типы, пустой батч) проверяют, что пайплайн не падает и считает то, что должен. Hypothesis генерирует входы для property-based тестов, схемы данных проверяют Pandera или Great Expectations. Качество модели на синтетике не доказывается: вы узнаете только то, что сами заложили в генератор.
Хороший финал ответа: предложить бейзлайн, простую модель или правило, с которым будете сравнивать результат.
Где спотыкаются
Не задают вопрос вообще, молча придумывают данные и потом показывают метрики на них как доказательство качества.
Обучают скейлер или энкодер на всём наборе до разбиения. Статистики теста утекают в обучение, и оценка выходит завышенной.
Делят временной ряд случайно и радуются высокой точности, которую модель на реальном потоке не повторит.