Что такое target encoding
Что проверяют
Умеете ли вы кодировать категории с большим числом значений и, главное, видите ли здесь утечку целевой переменной. Это один из самых частых источников разрыва между валидацией и продакшеном, поэтому спрашивают почти всегда.
Как отвечать
Категория заменяется статистикой целевой переменной по этой категории: средним в регрессии, долей положительного класса в бинарной задаче. Выигрыш перед one-hot в том, что размерность не растёт вместе с числом категорий, поэтому приём и берут для признаков вроде города, модели товара или идентификатора продавца.
Голое среднее переобучается на редких значениях: категория из одной строки получает ровно её таргет, и дерево запоминает объект целиком. Поэтому среднее сглаживают к глобальному: чем меньше наблюдений, тем ближе значение к среднему по выборке, а вес сглаживания подбирают как гиперпараметр.
Считать статистику нужно так, чтобы объект не участвовал в собственной кодировке: по фолдам или исключая текущую строку, а валидацию кодировать статистикой обучающей части. Для временных данных берут только прошлое. В популярных бустингах это уже встроено упорядоченным вариантом.
Отдельно продумывают, что подставлять для категорий, которых не было в обучении, и для пропусков: обычно глобальное среднее.
Где спотыкаются
Кодируют до разбиения, по всему набору сразу. Валидация показывает отличное качество, на новых данных модель проседает, и причину ищут где угодно, только не в признаке.
Не смотрят на частоты и не сглаживают. Признак получается почти взаимно однозначным с таргетом, модель обучается на нём одном, а остальные признаки в важности проваливаются.
Забывают, что кодировка это часть модели, а не разовая подготовка данных. Словарь со средними надо сохранять вместе с моделью и пересчитывать при переобучении, иначе при смене периода или сегмента признак тихо устаревает.