Зачем масштабировать признаки и как кодировать категориальные признаки?
- Чем one-hot encoding отличается от target encoding?
Масштабирование (StandardScaler, MinMaxScaler) нужно моделям, чувствительным к расстояниям и величине весов: линейным с регуляризацией, k-means, kNN, нейросетям. Деревьям оно не нужно. Категории кодируют one-hot (столбец на значение — для небольшого числа значений), target encoding (среднее целевой по категории — для высокой кардинальности, с защитой от утечки) или встроенно (CatBoost, LightGBM).
- Параметры масштабирования считают только на обучающей выборке
- Label encoding (числа 0, 1, 2) подходит деревьям, но вводит ложный порядок для линейных моделей
- Редкие категории объединяют в «прочее»
А ещё Новая категория в продакшене не должна ронять модель — предусмотреть «неизвестно»
Подробно
Масштабирование:
- StandardScaler — вычесть среднее, разделить на стандартное отклонение;
- MinMaxScaler — привести к [0, 1], чувствителен к выбросам;
- RobustScaler — по медиане и квартилям, устойчив к выбросам;
- логарифм для признаков с длинным хвостом (доход, цена).
Категориальные признаки:
| способ | когда | риск |
|---|---|---|
| one-hot | мало значений | взрыв числа столбцов |
| label / ordinal | деревья или естественный порядок | ложный порядок |
| target encoding | много значений | утечка — считать по фолдам со сглаживанием |
| эмбеддинги | нейросети, очень много значений | нужно обучение |
Pipeline. Все преобразования оборачивают в Pipeline/ColumnTransformer: обучаются только на обучающих данных и одинаково применяются в продакшене — никаких расхождений между обучением и инференсом.
Что хотят услышать
- Каким моделям нужно масштабирование.
- Способы кодирования категорий и их риски.
- Обучение преобразований только на train.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Масштабирование обязательно для деревьев, а параметры масштаба считают на всём наборе вместе с тестом — так они точнее
- ✗Параметры масштабирования считают на всём наборе данных вместе с тестом
- ✓Масштаб — для линейных, kNN и нейросетей; категории — one-hot или target encoding
- ✗Label encoding подходит для любых категорий в линейной модели
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.