Что делать с датасетом перед обучением модели
Что проверяют
Знаете ли вы, что подготовка данных это не список функций из библиотеки, а решения, которые диктуются задачей и моделью. Главное, на что смотрят: понимаете ли вы утечку целевой переменной и в каком порядке делаются разбиение и преобразования.
Как отвечать
Начните с постановки: что предсказываем, на каких объектах, какая метрика, какие данные будут доступны в момент предсказания на проде. Дальше по шагам:
- посмотреть на данные: размер, типы, доля пропусков, баланс классов, дубликаты по бизнес-ключу, а не по всей строке целиком;
- разбить выборку до любых преобразований. Случайное разбиение годится не всегда: для событий во времени нужен разрез по дате, для нескольких записей на пользователя разрез по пользователю, иначе один и тот же человек попадёт и в обучение, и в тест;
- пропуски и масштабирование оформить шагом пайплайна, который обучается на обучающей части и применяется к остальным;
- категориальные признаки кодировать по модели: one-hot для линейных, порядковое кодирование безопасно для деревьев, целевое кодирование только внутри фолдов;
- проверить признаки на утечку: не попала ли в них информация, недоступная на момент предсказания.
pipe = Pipeline([("imp", SimpleImputer()), ("sc", StandardScaler()), ("m", LogisticRegression())])
cross_val_score(pipe, X_train, y_train, cv=5)Где спотыкаются
Заполняют пропуски и считают статистики по всему датасету, а разбивают потом. Тест уже видел статистику обучения, оценка завышена, на проде модель работает хуже обещанного.
Второе: удаляют выбросы по умолчанию. В задачах про мошенничество и отказы оборудования выброс это и есть целевое событие, а не шум.
Третье: называют кросс-валидацию способом разделить данные на обучение и тест. Это способ оценки, и преобразования внутри неё пересчитываются на каждом фолде заново, иначе утечка возвращается через чёрный ход.